libwmf-0.2.8.4/0000755000077100007710000000000010272000337012475 5ustar fjffjf00000000000000libwmf-0.2.8.4/ac-helpers/0000755000077100007710000000000010012152732014517 5ustar fjffjf00000000000000libwmf-0.2.8.4/ac-helpers/pkg-config/0000755000077100007710000000000010012152734016545 5ustar fjffjf00000000000000libwmf-0.2.8.4/ac-helpers/pkg-config/pkg.m40000644000077100007710000000375107573704141017613 0ustar fjffjf00000000000000 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page dnl also defines GSTUFF_PKG_ERRORS on error AC_DEFUN(PKG_CHECK_MODULES, [ succeeded=no if test -z "$PKG_CONFIG"; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then AC_MSG_CHECKING(for $2) if $PKG_CONFIG --exists "$2" ; then AC_MSG_RESULT(yes) succeeded=yes AC_MSG_CHECKING($1_CFLAGS) $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` AC_MSG_RESULT($$1_CFLAGS) AC_MSG_CHECKING($1_LIBS) $1_LIBS=`$PKG_CONFIG --libs "$2"` AC_MSG_RESULT($$1_LIBS) else $1_CFLAGS="" $1_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` ifelse([$4], ,echo $$1_PKG_ERRORS,) fi AC_SUBST($1_CFLAGS) AC_SUBST($1_LIBS) else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then ifelse([$3], , :, [$3]) else ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) fi ]) libwmf-0.2.8.4/examples/0000755000077100007710000000000010012152747014320 5ustar fjffjf00000000000000libwmf-0.2.8.4/examples/2doorvan.wmf0000644000077100007710000001716607260330243016600 0ustar fjffjf00000000000000ƚi?P 2&MrEdMicrosoft DrawZ&MrEdBB| Helv)_  &MrEdi  q  &i&R-- & MrEd$k]2k&R~&R^&MrEdRgZZgR&MrEdR^^R&MrEdM4\\4M & &z~&MrEdzf{{fz&MrEd}~~}&MrEdm0||0m &  & &&&&MrEd&MrEd&MrEd PP  & &&&&&MrEd {-&MrEdp--t & &MrEd'`d# & &MrEd@sFJw< & &t&- & MrEd$    & MrEd$74@D7 & MrEd$bgsmb & MrEd$  & &9t & MrEd$;AN I; & MrEd$8b4n@tDh8b & MrEd$bhitvnmbbh & MrEd$HL=9H &  &  &  & &&&MrEd{-{&MrEd&MrEdKK & &f&f&f&MrEd ^-b &MrEdS--W & &MrEd'zDH~# & &MrEd@p-1t<&X&- & MrEd$! & MrEd$63>B6 & MrEd$]alg] & MrEd$~~ & &#X & MrEd$%)5!1% & MrEd$6H2S>XBM6H & MrEd$]McXmRgH]M & MrEd$~04&#~0 &  &  &  &  &  & ?-- & MrEd2$Q!Vig<;70R+;&6 211259sBjL]Z=\7_1]-Z(W&S$I#7#&#!!!l"U'bq $4ELOPPaaW>6-rpiYg=j$q} 'z~h{YzKz@{1}' -;?H<94/u+V'E"E-% #2=50:(DQ- & MrEd$&MrEd7EZ-ZE7- & MrEd %q & MrEd%y & MrEd% 3BbDGK(LPNYNgNxMx & MrEd%sKF?:6b,N & MrEd %,&?BS&MrEd?BJ--JB?&MrEd4J=S-S=J4 & - & MrEd%,[ & MrEd%jVj&Hi- & MrEd&$h4BV'a#q!T5;G#Z l & MrEd`%.wzuqje)c4`B_U^k`ckrzgylcY'S;NPNeQZhz8 & MrEd$%)*29<9<r980,'!! & MrEd% PJR?V6Z.`(i"s~ & MrEd% xSPNKIDf>%4U.N* & MrEd % & MrEd% IZZHh9v/'"$ & MrEd.%9"UV[(]U]t\[WPI & MrEd$,aa%,&[ & MrEd$ &[?-- & MrEd"$"+8Y[WK- & MrEd"$ &/;DZVJ?_- & MrEd$ YOFBAAFT[Y &  &  & &B&-- & MrEd:$%Bk"Mky{W(yZ?)&Bq & MrEd%CV_ & MrEd%Baj & MrEd%Amv & MrEd%@x & MrEd%> & MrEd%> & MrEd%< & MrEd%; & MrEd% /Uy: & MrEd%1JUKNQTHViV &  & MrEd% &Fj' & MrEd%F )?- & MrEd($7' &3oyyyUF7&Hi- & MrEd$^$_J_G^ & MrEd$M_Kaa_M_ & MrEd$@;- & MrEd$C>``C & MrEd$1P(9?P1P & MrEd$85#'8 &  &  & --''g>0?0 ? 0 ?libwmf-0.2.8.4/examples/Eg.wmf0000644000077100007710000006073407260330244015401 0ustar fjffjf00000000000000ƚ(#` 0  .   (# "--$!H!--$!Q(H!--$ Qa**(Q- -$ ]/25**a- -$$ * fA52/]--($Q7Pu}|SA f *--.$Q  ^wwIgS|}uP7Q--6$ # Uh 2 *t^M*_ tgwIw^ --D$ INT_z ~ L R c|M]C^-t_ *^Mt*2 Uh # --J$#IY&  L f ; uGAyha[^-CM]|cR L ~ z _NTI- -J$#DI]Y/t   FY 5O2;)a[hAyGu; f L  &Y-##-J$#Da8 D } x We: 1 #;);2O5FY    tY/I]D-&&-L$$@EfU@n   : za<K8*@Q;#1  e: Wx } D  8a-))-N$%@jI) ; r  Svg\VTW^Q@*8<Kaz:    nU@Ef@----N$%;@oORh6   . x(v|^WTV\gvS r ;  )Ij-00-N$%;s[C, 3 i  Cqg |v(x.    h6OR@o;-33-P$&7<wJccP> -  " j xY\& ?  gqC i 3 , C[s-66-R$'7|l]O *B ^7 . ' 2#"$V)2D@RU i D ?&\Yxj "  - > cPJc<w7-99-R$'27Eu\j}a X Q L [J JMaS\:j{6  Q D U iRD@2V)$"2#' . ^7 *B O ]l|-==-T$(2~wr #n Uk k m !qwx<#  *  Q :{ Q 6 {:j\aSMJ[J L Q X }a \jEu72-@@-V$)-2?Vu    L I    0! W  { Q : *  # <wx!qm k Uk #n r w~-CC-X$*-  J   c"   ,| N s    ! W 0   IL    u V?2--FF-Z$+)-:Po    ? 3  ) Fp g j    PW   s| N , " c  J   -II-Z$+)  A x  P $ > \p } V  [ + a| W  P  j  p g F )3 ?    o P:-)-MM-\$,$(5Jg    0  w 3 O mz  M  ? ; qM  v/ | a[ + V  p } \ >P $  x A   -PP-^$-$ 6  l ! < Z ; z  Q  0 I ~+  A8Dv/ M  q? ; M  z  m Ow 3 0     g J5($-SS-`$. $ 0 E a  " @ " _ f  `  #, S   ?7!DA8 +  ~0 I Q   ; z Z < l ! 6   -VV-b$/        - = ` ^ ( z  )4 Z    D!-u!7?   , S #`   f " _ @ "  a E 0 $  -YY-d$0   + > Y | 2 W }  U  *E \  v  Fcj r#%G-u! D   4 Z )z (  ` ^ - =      -\\-f$1      ! H " q T  & c Y  y  ETJmX}}G#%rj c Fv   E \ * U  } W | 2 Y > +   -``-h$2   & 9 S 3u ^  E  Q ,   @P4g1Erp<}}XmJT Ey   c Y & T " q H !    -cc-l$4      D t  H  C  | L   6W{*] e3,bip<Er1g4P @ ,   Q E   u ^ S 39 &   -ff-n$5    2 "L Vl / 3 j v (hm*P{Vyd'ib3,e ]*W{ 6 L  | C  H  t D    -ii-p$6     / g  <  p R 5 [5@mDZ^nvK ='dyV{P*hm( v 3 j / l L V2 "   -ll-t$8    - =E yd 3 t # c D K,j0G:WB2^!= vK^nZDm@5[5 p R <   g /   -pp-x$:     J   0R b  ( t jgq>w!>%}Dt!^B2:WG0j,KD c # t 3 d E y- =   -ss-|$<   'W>[ ( p   OS  ,J?["vj|Z^'vX ftD}%!>>wqgjt (  b 0R   J   -vv-$> d B $ T , ~  P( K<xl[IQ7Z7uJr9 OfX v'^|Zvj"?[,J OS   p ( [ >'W  -yy-$@$!q7S v\   S < | [ `{vIJ&1+6RB|xFO9 ruJZ7Q7[IxlK<P(  ~ , T $ B  d-||-$B-~#v  F" yz  0 6 S%#Ctgj,CV4RF|xRB6+1J&vI{`[ | < S   v\ S 7!q$--$E 60K8k  D  ( e_  & >eFI{<`=WP]t rM*T] xR4V,CjgtC#%S6 0  yz F"  v #~---$I~?N  7g h *   b] 7TsI1)@0sDbe*>x] T*Mr ]tWP`={<IFe>&  e_ (  D  k K80 6--$M~G)Cdb '   U O (   kvct\<cz z:z{#17YyD&n*>ebD0s)@1IsT7b]   * h 7g   N?~--$Sy|Pz E ( W   [ C ? )-'9.oCShE>EQ<hd'Hc{@ " n&DyY17#{z:z zc<\tckv  ( O U   ' b Cd)G--$[yY"(:W zc  <  7 t  z Ep@qa 7.a K ^*Gd2k, \!s!f"^'#['#  "{@cH'dhQ<E>EShoC.9')-? C [   W ( E  zP|y--$]uxb9  Fc w K  &: i 3 P5D]`%#lcW OcQ]KrX6B  i!!"'#'#["^!f\!s , k2Gd*^ K a7.a @qpEz  t 7  <  zc W :"(Y--$]uk K2N-n    !z Z q  r i| c!JP".o= Q&"<X  v!n"a"Z'#W'#"!i! B 6Xr]KQOcW cl#%`]DP53 i &:  K w Fc   9bxu--$]przs\G 7 5 c,  '  G+  8 qOqz== {)^7LDk0ELp[K,m  !""'#'#W"Z"av!n X <&"Q =o."PJ!c |ir  q Z !z    n N-2K k--$]p|n)Cbb Z  W  ?Z x f  >z  (,~\4;^5:\{tn=sy  !x!g"\"T'#R'#""! m ,[KpLE0DkL7^{) ==zqqO 8  G+  '  c, 5 7  G\zsrp--$]lnu| | % O    % e.  O <z5PLBUY =N*b@ " !!!""'#'#R"T"\!g !x ys=tn{\5:^;4\~(, >z  f x ?Z  W  Z b Cb)n|--$]l  !:Vw %  6 % [N  m  Y - ?dCMcS1x 6x]WI*;2  -!q!b*"W"P'#N'#"!"!!  "@b*N=Y UBLP5z<O  e. %    O % |  |unl--$]gipz)8 L ; ge    ? ~B  v Q XCSQkw%Hg!/tw]S4L  >!!2""'#'#N"P*"W!b-!q 2 ;I*W]x 6x1cSCM?d- Y  m  [N % 6  % w V:!  --$]g)>/JWh s   ' = rR   )" m b  MVHc\!MXo0@f  }P!j!\;"Q"K'#I'#"2"!>! L 4]Swt!/gHw%kQSCXQ v  ~B ?    ge ; L  8)zpig--$]ceku6Tu (. Q ~Z   * T h   `W  I\K|7d})F_6gF (  a!!D""'#'#I"K;"Q!\P!j }f 0@oX!M\cHVM b m )"   rR = '   s h JW/>)--$]cCj&>[*{ Y   * Q i   9U {  U S lD$J^#d*U*]0  !us!d!VM"M"G'#E'#"D"!a!   (F6g_)F}d7K|I\ `W   h T *   ~Z Q (.  uTu6kec--$]^`#eoQ{L  :! c a   )M b  J  e \  EB:CV#\ xV7N  !!!U""'#'#E"GM"M!Vs!d!u 0 ]**Ud#J^D$lS U  { 9U   i Q *   Y { [*>&jC--$]^'^32Loj Q   .> _  ;  A I   Ol ' 4h.+4e:K l  2!l!\!P^"G"B'#@'#"U"!!! N 7V x\#CV:BE \ e  J  b )M   a c :!   L{oQe`#^--$]Z\+aiku M5 # I' r y %  3 j2   Q b   6E  nb1kveE. )  H!!"g""'#'#@"B^"G!P!\2!l l  K:4e+.h4' Ol   I A  ;  _ .>   Q  jLo23^'--$]Z0xg& >Y\w Z   :d i  | 3 B ~ b ! B  l 4 dQqG KP  !v^!d!V"Kp"B">'#<'#"g""!H!  . )Evek1nb 6E   b Q   j2 3  % y r I' #  5Mu ika\+Z--$]UW4[cm.{,0  . T> {  W  5 j ;   U{ ?   b g 7 ? )zpQ 4s  !s!!!"y""'#'#<">p"B"K!V^!d!v P K GQqd4 l  B ! b ~ B 3 |  i :d   Z  wY\>& gx0--$]U9@J0Hc[  u *  > kT    9M q   (f i1   6 ~w O ) \ F   ~7!k![!N."D"="8'#7'#"y"!"!s!! s  4Qzp)? 7 g b   ? U{   ; j 5  W  { T> .  0,{m.c[W4U--$]QR=W]gQsi< 6 Zf !   Z 1 b  h 0 > y  e 78 y   H y Z " = m $ !Q!!!;"""'#'#7"8"=."D!N![7!k ~ F \ ) O ~w 6   i1 (f   q 9M    kT >  * u   c[H0J@9--$]QAb !?7Ojk&  _  < f h .  & [ W &  ? | w P <,    M #!q k!a !R !G I"> "7 "3 '#2 '#"";"!!Q!! m $ " = Z y H   y 78 e  y > 0 h  b 1 Z   ! Zf 6  <isgQ]WR=Q--$]LMFQW`tk/xaZ7 Z ~b '   # QJ     Q[ 0   : w | ^ 6 C x )  A! ! ! " V" " " '# '#2 "3 "7 I"> !G !R k!a #!q M    <, P w | ?  & W [ &  . h f <  _   &jkO7!? bA--$]LJD&E<SmQ  m 27 Z   n ? : l   p AM y+   ) e !w `!f !W !K ""@ c"8 "3 "/ '#. '# " " V" " ! ! A!  x ) 6 C ^ | w :   0 Q[     QJ #   ' ~b Z 7 Zaxk/`tWQMFL--$]HIOLRYcZn|l2R4S u  P !  6 a p H !  P   z $ ^ \ D ,  ! C! ~! ! ! 3" p" " " '# '#. "/ "3 c"8 ""@ !K !W `!f !w e )   y+ AM p   l : ? n   Z 27 m   QmS<&EDJ--$]HSp8(]<(Rj[*   Dq iF     9 ga A !  ( [ /!y e!h !Z !M "B D"9 }"2 "- "* '#) '# " " p" 3" ! ! ~! C! !  , \ D $ ^ z   P  ! H p a 6  ! P  u S 4R2l|ncZYRLIOH--$]CDWG#KRZdRp}W& (lE@c   t N 6+ ^     6 q d X @ )  $! V! ! ! ! "" V" " " " '# '#) "* "- }"2 D"9 "B !M !Z e!h /!y [ (  ! A ga 9     iF Dq    *[jR<((]8pS--$]C\,l=&9YM.cz_9$ E g  i J - #  K u "! O!x }!i ![ !N "C 8": h"2 "- "( "& '#% '# " " " V" "" ! ! ! V! $!  ) @ d X 6 q     ^ 6+ N t    cE@(l &W}pdRZRKG#DWC--$]?@`B4F KRZd\p2}e>/IedC# " E i z b K 6 !" )! Q! z! ! ! ! #" N" y" " " " '# '#% "& "( "- h"2 8": "C !N ![ }!i O!x "! u K #  - J i  g E $ 9_zcM.9Y&=l,\--$]?d=zT. /@yTVh4~z ^3 CP )o  ! 8! \! !r !d !W !L "B ="9 c"1 "+ "& "# #! '# '# " " " y" N" #" ! ! ! z! Q! )! !" 6 K b i z E "  #CedI/>e}p2d\ZRKF B4@`?--$]:;i<F@#DIPXawkUw4wY= !% < T m    s ^ J!71!%P!o!! ! ! ! " 5" W" y" " " " # '# '# #! "# "& "+ c"1 ="9 "B !L !W !d !r \! 8! ! o P )3 C ^z~h4TV@y/ .Tz=d--$]:mO0|_B &  . > N ` s n V ? )    !#!S"6q"/")"%"!" #'#'# # " " " y" W" 5" " ! ! ! ! o!P!1!%!7 J ^ s  m T < %  !=Yww4kUawXPID@#<F;i:--$]6 6 r8 W: == #A F L S [ c m rw Y A *        !!n/!\C!JX!:m!*!! !!!!"&"?"X"r""""""#'#'# #""!"%")q"/S"65">"G!Q!\!h!u!p!V! .    &B_|0Om--$]6   v ` J 4         x e!R!?!,+!8! F!U!d!s!!!!!!!w!k"a"W("M<"EQ"=f"6{"/"*"%"!"""#'#'##"""""r"X"?"&""!!!!! !m!*X!:C!J/!\!n !        * Aw Ym rc [ S L F A = #: =8 W6 r6 --$] 1!1!z2!i4!W6!F9!5!1!$!! !!!!!!!!!"""""},"t6"k@"cJ"[U"S`"Ll"Fw"?"9"4"."*"%""""""###'#'###"""""""|"l"["L"<"-""""!! !!"!/!;!I!V!d!s}!t!l!d!\!V!O!J!D!@!<"6?".C"&F"J"O"S"X"]"b"h"m"s"z""""""""""""""""""####'#'####"""""""%"*"."4"9w"?l"F`"LU"SJ"[@"c6"k,"t""}"""!!!!!!!!!! !!$!1!>!K!X!e!r!!--$]-""""""z"v"r"n"i"e"a"]"Y"U"Q"M"I"F"B">";"8"4"1"."+")"&"$"!""""""## ######$#'#'#####"""""""""""""""""z"s"m"h"b"]"X"S"O"J"F"C"&?".<"69">7"G4"O2"X1"`/"i."r."z-"-"--d$0"'#'#$###### ###"""""""!"$"&")"+"."1"4"8";">"B"F"I"M"Q"U"Y"]"a"e"i"n"r"v"z""""---%'#'#-- ATimes New Roman- .2 j Pixieh)ho ."Systemn- Arial- .-2 ~Tiny Pictures for the Webwwwwww .-libwmf-0.2.8.4/examples/anim0002.wmf0000644000077100007710000002641607260330244016273 0ustar fjffjf00000000000000ƚ ^T |l    .--z$;L+,^2_+6GQ1l)?zVRWaFSw#BG?c ;Dl !v_CBo} S6LL-.$)@`5f*+I6f`9)))-0$5b2 :$+PbflL*e$ oirvx$ :&)?WgG::"$3 9fX+ AxW6/33&$+#@>|33w>Q$9 ,$ Z~+rP ZZ&$"]" MF',"]"]-$ +iy-[h?Bf++-8$j\2,!E_$4*p<<@hrCYkf3v2jjk-$$rRR) _bK( d9-rr-N$%""L{3wY  0:3=S'i82Rp#4 3-$UYh?=\UYUY$!cJ$ 5+2W55-X$*l[iaK8`Nz[LLk0}Pt{}&e8&pN]qs{A]U&p@llѽ-\$,-St"Tm|k'Jvwx#@W?im>U[]q|pX|8y|GOLbBW*MZMZ6X ---D$ '?H:L`0&M'v"<:96|c~t{17 Y4'E  k-,$yJov-XGCYE&S=uDs&ZcyJyJ-4$:7)T/njq3fX$Ln6.^?0![!:7:7k-X$**)8FZ*Z78QK<KqSI`ve"WjoON {?bX,k-$BoC%0A0R@[>~37MSHVfk/dGqo~}Edf!?*;IgZgIQI;W14 {O' s\4gv1(0oo6$9#Hw~fdMu_9bT1.'(.$5Rdui6+&!M#$ ?F/8B8&$MIN^ki=bPKubcMM4$T_GQw i/HxRY0 $CP>EcJqZXCC$$4wZ1 - D=$"$D,s& (K   44TjqloMZ.D,D, $z'|bzz&$0rzLv&'Rd00.$aMI+@YuvhE`SUGaa$3Od\\l3O3O$  $($&-6;DIRED44%H$"pj&u<Q?jMP]dDbNo/oB],@!9%0#_swYppD$ 9:_e NVB-E"4?54#J-Ed'_Z  $ BJhbS+<9BB6$Ar Sf\rh}sx<@$BBWy]~qd|l\gR^V`JU#% BBH$"XA[!E!P238DG%P<^d6z%6" i^|rb[KD(XX$W <pg{{eI9K`fpeMKvBty{<:auj+SY0JJh Z@! qje'G9B{`GydH_8('6j@L5(    $F^&Ji 'e^u, C.7UguuQQe}g^AA''5#8Y[%;6 aV1&3.<q<J^^($.CSXhvzl1K 66'4$fZG}){}cRvy#AmTphff\$,0}MB\Q)XC%?GhAK%>GH7LsWNO*I9$0Who>l[UeoiWt*IkbzvhVF00*$,b1Ifu-QL$\Vzq$$! \Fn$ =M/  =M=M0${mur_JvFC_SteqgMuH{{$uLuu$ $SjlSS-$ gW6e. Eq#Ho-8$ft 6 i=y!"r^MwJtjBLZ<Mffk-$$^~\,hJn 1P0nI6^^-N$%;% @,/,=V5;<=!c *:G}1gAH;>[_>3-${bhHCGe@{b{b$+m$ ?#4` ??-X$*ctgoit!e:SZ\SE+"+0k0`1 s_D]g{0zIccѽ-\$,|\ Q,Q^cQTd$C19TCYHIW-!.J%`Hrw_ug_`x;TPUny4$vv?x-D$ #Dj WBm[U%:b>O* !k-,$WTa ZxQc}[4@M]/vmWTWT-4$ A ] b tJ & { ox@ b#?&h:*t * A Ak-X$* &2Add~F{}p&Zo74 ,a/faYI l& b5  u & &-$Ba  / K \ e } z j e 8l Q_ yN E S N ; + 9 N/ n p   +IEquqZEy;Y1  } f >+ +   0 = + I qZ ;E 2& 9) a a 6$7 -1RR)0pl?W&=[inF^702 27 7 .$9 ( > \ n I sC   & W-9 (9 ($ 7 8L A$  - 7 7 &$ VX he:rk  ~ k m V V4$ Q|!is&X~w&9    $MHNmTMMzcbMM$$YM.'"u )"$5]02)> >^f_v`Wu755 $V=Sn VV&$^VV 0 ~ )l.$Kk S.&w&[5h i}_KkKk$YlfHtuYY$    $0O  00($M J!'0C7"@:E+N5S\ON==/&M M H$"`f0[FI*sYsnkxxsq]>Y->#- b``D$  %.  C:DhoW_LN>?-7&l1q!v$ LThl,Q]ECLL6$^2% #5#C}"it^hR]W@$(LCL3`WgRzldti~rzp{, /(L(LH$"w u++<BPYgngrESDE;|Ck2e?T!N71w w $W @F`iUUjUpp`jZ#@L@}WUG%'FDk~s\wEh;!dI +{/foPBK $jQ .LW<n$Q:):) iB20@tU2$Fg0S s$  1oh$8_i[[9[o//FRircdD?#j`:0 {Tgg($}xhJ/@d'U@4$jv)UISlI[9'w|zhjj\$,?:SVe3xqUH}yW4 yhaGde{kagy)\3PRenVZh'zP?:?:*$F' 06nj~[GUt_V_FF$$. eOw (. . $ V'9!VV0$U<0wP4[A^q'Lq}\k_q7V[RUU$[ =[[$ 94F*  (99$'\ t$u'\'\libwmf-0.2.8.4/examples/ant.wmf0000644000077100007710000001662607260330244015631 0ustar fjffjf00000000000000ƚ R_V   R --H$" 1 P*T/d%m#x"#$,0:FC:-(4?DIPF;}&mhecege$usW7@Z-*-0:AMq]]jzq m']0D?,GW j svxzwru7&X1:CHLKN9PUNlJ@4+a5 ysiZX7NF>83C)).0;FSsajncWD{:t*qllq|odZM=4($Y "1<GT\it 5@CDGRbzJj~!##!}~   D dC~_ +3/|GI#pGKEXm]ekmuhU]=M%:*  $uW0_)n$}"&0<Hcv5Pk %B4M@o[y~k(]OYgKCCI\vEd E     ( + *     , = I M N Y V F = 7 "Y -  jc83  +8?H6!C%9GVYYUF+wgVc;9&  ryljiT\:W0$RIS _(q@Rbn{!Fa > F W f !s , 6 ; ? ? < 4 +           j Q 0       | h I ) { f N 1   e3 /Ei|socOI$HoF > 5 /' +7 +K .Y 7q J a      ; `, C Z l }  # - 6 =: E x  Q  8 S g r { w i [ k w    } wy [h > h / b \ V Q| :Y #  l E ~ ` cT VE Q8 R- W ho8$m.V@AV.l!!6K^qc^]qedxTHI!X$* f;9YymS>+.I`|ym#a(V/K7=E0T%c!iy1qF_TEm1y)p mk f>$gWD.$3:;;0E#O"  5Pddgg$@:DLl|d%:  .f5i|j\ ER,DWzVoOm>j*:=Ta6tIg LwoctYuKFC?:$CNW_ikr{? Rc@a<,/Tt"q4QQqiK$ ,RtgQ|$ /x-G{]nmdr^uKbLDP-PNLN$NS;#P7 -nFaOKZ6h$xx;eYVqA>>MYwQ2*?Uvz^I=1&*Lx  +=Tvg]XWVX*Z/[0ptn$5?4-|)e(V-H6?@ $|4kLYiOyH<2,*08AJY\]bm~zTB%,Hg]WjNrNxQx----4%Z^be hkm!p(r/s6u>vEwMxUx]ydylytx{xwvur----$? v% {> N b {         ! )8 ;K Qb fz w      & <) P2 _= n6 m, h b ] o |    w d L '  j Q & l M 7  v W = )         v----% %" B %V  %  % 5 B% l u%F b %w  %  -% R \%  %  % ' % ' &% ?. O% 1) 2%  %z 2o ^% > V% A f% A _% 7 T% $ 6%  % / :%  %%% %#%{%y^%pV%p%^%L6%<%1%0%9%;%C(%$K4;--$^{wtplieb^[XUROMJHECA?=9;=?BEGJMPRUX\_behkorux|--P%&JNRUXZ\]^^_^^][Z%X,V4T;QCNJKQHXE_Ae>l:s6y2.*&"*% %  &%sqvqyq|qppppooooonnnn4%hj k mnopp q$q(q-q1q5q:p>pBoGnKmOlSkWjZhceV%)9:;<<=>>?@ABCDEFGHIJJKKLLMMNNOOOOOOOONNNL (%$%r!v z ~ !!"$%')+-054"%?ACFHJMOQSVXZ[_$%%')+-0358;=@CEGL% "%2% 2 / , ) & # !                 % !$'*-148;B&%XZ\^`cehkorux|0%!#%'(*+-./012234445554%opqsuvxz|} "#$&'),.%)!(#(%'&'((*(,).)/*1,2-4.5062849597:9;;<?,%&(+.147:=@CFILNQTVX\%6 18 5: 8< <= A? E? I@ Q4%     <%5 H6 I6 J6 K7 L7 M7 N7 O7 P7 Q7 R6 S6 T5 U5 V4 W4 X3 Y2 Z1 [1 \0 \/ ]. ^- _, _+ `) a&%i &j &k &m %n %p $r #s "u "v !w y z { }   --         libwmf-0.2.8.4/examples/arrow01.wmf0000644000077100007710000000125407260330244016331 0ustar fjffjf00000000000000ƚ9 f K 9   --$IIhee--40--$666--40--$66--NU--$6--40--$----$9 66--libwmf-0.2.8.4/examples/cell.wmf0000644000077100007710000007240207260330254015761 0ustar fjffjf00000000000000ƚ&C v:  &P_wnu]gř֤222hr)4:cn\l4FFF%ZZPP<GZZZXpb@Lnnnc@@0}Sh mPdtHcy,$8NNz`p$i͌}dmtޱ45& "--&   K  Z''  ' uF' uF- "-  $<6<6%%< "-<<6%6%< "-<%Times-%%PP{{<<%%6.%..%..h%h.%.%.%.O%O.%.%.%.6%6 "--"System-'--- pA---'--- ?A%---'--- <A%8- "- - "-    ---'--- <A%l s e---'--- <A%"K8-   )RD---'-- - <A%z s---'-- - <A% K RD---'-- - <A% ---'-- - <A%?-   F8~---'--- <A% &---'--- <A%-    ~---'-- - <A%  ---'-- - <A%-   ~---'--- <A% ---'--- <A%  ~---'--- <A%0 7)---'--- <A% ~---'--- <A% ---'--- <A%8-   %---'-- - <A%* 1 #---'-- - <A%  ---'-- - <A%B I ;---'-- - <A%  ---'-- - <A%   ---'-- - <A%  ---'-- - <A% ---'-- - <A%  x---'-- - <A%M T F---'-- - <A%  ---'-- - <A%   ---'-- - <A%  ---'-- - <A%p w i---'-- - <A%-    ---'-- - <A%-  ---'--- <A% ---'--- <A% ---'--- <A% ---'--- <A%8-   ---'-- - <A%P WI---'-- - <A%l-   se---'--- <A%sl zsle---'--- <A%K-   `7---'-- - <A%  n---'-- - <A%  ---'-- - <A%l  X---'-- - <A%` d\---'-- - <A%  ---'-- - <A%u y.q---'-- - <A%---'-- - ?A%---'-- - uF---'-- - uF---'-- - uF  2 0 2 0.2 2 A0.4 2 0.6 2 l0.8 2 1 2 1.2 2 -1.4---'-- - uF---'-- - uF  2 ?DO 2 ?\4w---'-- - uF---'-- - uF- -' K   ' Z ''   K  '' \ ' _F' _F- "-  $"6"6  " "-""6 6 " "-" Times-  66aa""  6 . .h h   O O   6 6 "- -"System- '--- ZA- -- '--- %A - -- '--- "A 8- "- - "-    - -- '--- "A l se- -- '--- "A K8-   RD- -- '-- - "A  - -- '-- - "A K RD- -- '-- - "A W ^P- -- '-- - "A -   ~- -- '--- "A  - -- '--- "A -   ~- -- '-- - "A  - -- '-- - "A -  ~- -- '--- "A * 1#- -- '--- "A  ~- -- '--- "A  - -- '--- "A   ~- -- '--- "A ( /!- -- '--- "A 8-   - -- '-- - "A F M ?- -- '-- - "A  - -- '-- - "A 8 ? 1- -- '-- - "A  - -- '-- - "A 2 9 +- -- '-- - "A  - -- '-- - "A  - -- '-- - "A z  s- -- '-- - "A : A 3- -- '-- - "A g n `- -- '-- - "A   - -- '-- - "A w ~ p- -- '-- - "A ] d V- -- '-- - "A -    - -- '-- - "A --  4&- -- '--- "A  - -- '--- "A # *- -- '--- "A  - -- '--- "A q8-   xj- -- '-- - "A a hZ- -- '-- - "A El-   Ls>e- -- '--- "A l se- -- '--- "A K-   `7- -- '-- - "A  n- -- '-- - "A  - -- '-- - "A l X- -- '-- - "A v zr- -- '-- - "A  - -- '-- - "A f j.b- -- '-- - "A - -- '-- - %A - -- '-- - _F- -- '-- - _F- -- '-- - _F  2 0 2 0.2 2 '0.4 2 0.6 2 R0.8 2 1 2 }1.2 2 1.4- -- '-- - _F- -- '-- - _F  2 %DO 2 %\4w- -- '-- - _F- -- '-- - _F- - ' K  \ '  ' ' "-- M "-- } "- -+ "-  -[STimes New Roman- --- --- 2 B6sU 2 B6 -IL-7sU,9Cr:U 2 IL-4 KOBs9V, 2 IL-4 KO - IL-7 Bs9V,,9,Bs9V+   "- -@    '' n ' -d' -d- "-   $ "-   "-  Times- ++--//00aa&&XX "--"System-'- --  (i---'- --  (t---'- --  (t8- "- - "-   ---'- --  (t? F8---'- --  (t"8-  )---'- --  (t"p )wi---'- --  (t $---'- --  (twp ~wpi---'- --  (tz-  s---'- --  (t ---'- --  (tz s---'- --  (tX _Q---'- --  (tz s---'- --  (tb i[---'- --  (tz s---'- --  (t ---'- --  (t ---'- --  (t8-   ---'- --  (t   ---'- --  (t ---'- --  (t] d V---'- --  (t ---'- --  (t' .  ---'- --  (t ---'- --  (t ---'- --  (tY ` R---'- --  (t  ---'- --  (ty  r---'- --  (t  y---'- --  (t  y---'- --  (t  y---'- --  (t-   ---'- --  (t ---'- --  (t^ eW---'- --  (t ---'- --  (t ---'- --  (tp8-  wi---'- --  (t*p 1w#i---'- --  (t?-  F8---'- --  (t? F8---'- --  (t-   )---'- - -  (tz i---'- - -  (t ---'- - -  (t? Q.---'- - -  (t/p 2,_---'- - -  (t ---'- - -  (tO RL---'- - -  (t---'- - -  (t---'- - -  -d---'- - -  -d---'- - -  -d  2 u0 2 0.2  2 0.4  2 w0.6  2 "0.8  2 1 2 x1.2  2 $1.4  2 1.6  2 z1.8  ---'- - -  -d---'- - -  -d  2 D0 2 24w ---'- - -  -d---'- - -  -d- -  -4 '  - - "-]Z=O- --- - [U>S-  2 AT ' -d-- ' n  - '  n '  '-4 'Times New Roman-  --- ---.2 |Normalised number of cellsaPPoIaH`IPPo Times New Roman-   2 CD4+{  2 CD8+{ -- ; MTimes New Roman-  ------ 2 ?D0Y 2 ! 4 weeksY-NNdE Courier- libwmf-0.2.8.4/examples/fjftest.wmf0000644000077100007710000000376607336451232016522 0ustar fjffjf00000000000000ƚr*#JoQF  -L   .-L 8"-- }"-- p €- "-N$%oQ=28/h6F_m   H x   } [$ sc3`j; o *"--x *"-d$0 ] T U aL w    ,  _^ Gn_~uf$ SV :     w F x O  t >  W 5   DL s%   h &, @ Y w r ] @"- **0` }@"-- !((X$ XWd6 %R%1d X$ X} Wd "6 % "$R%"1d  X- S@"-"$Lx X<h X@l  L` L L$ " * \+0*4)( " R@"-$2E}KDpV(E5s3)/G Pi   Q2C@r6E-wq< 0O%9-Gae[ Fh   Q8!DU!=o!B!N!_!!!"y""? "! !k!!V!37!Q!k   t F  tsV71t-BI(5K  I  X S YA55[?Rm{po1v['Ru3+Vioii>X<&|cx tH| 2CWxi<+N5_7p2&B+ej#__r+ T l }    } i {K rug'__r+ T l }    } libwmf-0.2.8.4/examples/formula1.wmf0000644000077100007710000000256007260330254016566 0ustar fjffjf00000000000000ƚ%`W  .1  @& & MathTypep "-[Symbol-2 (Symbol-2 )Symbol-2  (Symbol-2  )qSymbol-2 H(qSymbol-2 ) Times New RomanQ-2 |22 8 22 T22 22 To2 Symbol-2 or`Times New RomanQ-2 zwx Times New Roman-2 Bm2 `s2 os2 Ky2 `yTimes New RomanQ-2 ` x2 m2 s2 :mSymbol-2 v D2  +2 = Symbol-2 KxD2 `YD & "Systemn-libwmf-0.2.8.4/examples/formula2.wmf0000644000077100007710000000176407260330254016574 0ustar fjffjf00000000000000ƚ9`W  .1  @&@ & MathType "-7 "- ""->-FOOOA"-+1-9->`Times New Roman-2 X(22 X 22 22  2`Times New Roman-2 g v2  u2 S y2  x 2 WSuv 2 A`Sxy2 FK`Symbol-2 j D2 | +2 D2 V D2 h +2 D2 8=2 = & "System-libwmf-0.2.8.4/examples/formula3.wmf0000644000077100007710000000432207260330254016566 0ustar fjffjf00000000000000ƚ6`U ^ .1  $&# & MathType "-i  Symbol-2  (Symbol-2  )Symbol-2 (Symbol-2 )6ihSymbol-2 (hSymbol-2 )Ls|Symbol-2 (|Symbol-2 )Symbol-2 z(Symbol-2  )"_#Symbol-2 !(Symbol-2 }#) Symbol-2 sq"r2 sr`Times New Roman!-2 "2 Times New Roman--2 8 !22 T|22 22 22 8622 T22 ( 22 T22 T22 T_2`Times New Roman!-2 v"t2 vt Times New Roman--2 >"m2 `is2 ss2 Gy2 >Sm2 `s2 s s2 u x2 `y2 `x2 `dpTimes New Roman!-2 x2 Wm2 y2 | m2 m2 m2 :mSymbol-2 D2 [+2 2 +2 D2 +2  2 =2 +2 Z= Symbol-2 GiD2 u D & "Systemn-libwmf-0.2.8.4/examples/formula4.wmf0000644000077100007710000000176607260330254016600 0ustar fjffjf00000000000000ƚB`W  .1  @&e & MathTypeSymbol-2 G:2 :2 :2 5 +2 ;+2 Q=2  -2 ]2 +2 =Times New Roman-2 tu2 Z m2  t2 `m2 y2 =y2 t2  m2  t2 m2 \x2  x Times New Roman-2 BF u2 Mu2  uTimes New Roman- 2  sin 2 cos 2  sin 2 cos Times New Roman-2 BW02 0 & "Systemn-libwmf-0.2.8.4/examples/fulltest.wmf0000644000077100007710000001015007260330255016675 0ustar fjffjf00000000000000ƚ$mVT g )-  VT$m.(-->L3 <>L|g <8"g8A"3n.c"Arialwww -2 )6Metafile Companion Test Chart.?"Arialwww - 2 ,AObjects 2 ,E;Colors 2 )=E;Advanced 2 %=Fills-? fJJ! .?"Arialwww - 2 nDaRotated.?"Arialwww - 2 8,Text--8QBFU@YBFWSEU BXETDU*CVD-|1|1----))-++-x/x/--HeYD -H`YD-B( -UC9)>$-^ Z-X |*-H\YD-d `x-x-x-!-)y)!<-t+yt+!-X/X/!-\1\1!--UCe> -UC >-UC`>-UC\>-F  B-@ <-L H-R M-H YD- % o/>w% D D-$y$Hy$&9*)'(-63&?"Arialwww - 2 'Lines 7|g&8 2 (i;Fonts 2 ,TBold?"Courier Neww - 2 3U Underline?"Times New Romanw - 2 0TItalic?"Arialwww - 2 ,e;Arial?"Times New Romanw -2 0A;Times New Roman?"Courier Neww - 2 3e; Courier New--E@@;-DL?E-CFHACCFuNAI.YTimes New Romanw - 2 JaText 2 HaRotated. 2 H: Background 2 J{<Color 2 IRComplex 2 JkSPolygon 2 HD Transparency. 2 3 Patterns. 2 4 Thickness.2 K*Bitmap Fill Patterns2 J1Basic Fill Patterns.--B( -H9)YD$-B( -H/YD|*--SystemwH((w-libwmf-0.2.8.4/examples/p0000001.wmf0000644000077100007710000000413607260330255016022 0ustar fjffjf00000000000000 /.1  & & MathType- -2LzL --$ rC C VV2 2- By Times New RomanSwgw? - 2 2y Times New RomanSwgwB : - 2 123.%jTimes New RomanSwgw? - 2 2y6 Times New RomanSwgwB ; - 2 *456%% ~Times New RomanSwgw? - 2 2y  Times New RomanSwgwB < - 2 789(%Times New RomanSwgw? - 2 xxaa:Times New RomanSwgwB = - 2 ay 8Times New RomanSwgw? - 2 by& SymbolB >JwSwgwB > - 2 P 2 +-,& 2 Z 2 =& 2  & 2 & 2 &MathTypeUUDSMT4WinAllBasicCodePagesTimes New RomanSymbolCourier NewMT Extra!/'_!!/G_APAPAE%B_AC_A %!AHA_D_E_E_A  a==  x 2 ++2xa"-a2b  *123456789[] & L--"System  -libwmf-0.2.8.4/examples/p0000016.wmf0000644000077100007710000000241207260330255016023 0ustar fjffjf00000000000000  .1  ` & & MathType`Times New Roman-2 6)2 4(2 {)2 y(2 f)2 d(2 )2 (2  )2 (2 y)2 w( Times New Roman-2 ,22 q 32 1Times New Roman-2 t2 T2 gk2 t2 T2 t2 \T2 t2  M2  k2 = t2 T2 t2 QV2 Kk2 "T Times New Roman-2 {L2 L2 GT2 I2 LSymbol-2 G-2 2-2 2  +2 32 =Symbol-2 XmMT Extra-2 :& & "System-libwmf-0.2.8.4/examples/sample.wmf0000644000077100007710000004632007260330255016324 0ustar fjffjf00000000000000ƚZlx] ]&( xZ O --$@:ba51[]2 )Dq_`|QB5). Ml +KkrL &.=N_qrP. _V'TR!qH---%@:ba51[]2 )Dq_`|QB5). Ml +KkrL &.=N_qrP. _V'TR!qH---F$!'x/LD/vU3`;{uqnZl e+ ZIO'---F%!'x/LD/vU3`;{uqnZl e+ ZIO'---$  apX^I%---%  apX^I%-zzz--$Y+  #''(.8?CIVbgLIzFr;n5n,q+t+x+|'"}| yvxz~ '.1+---%Y+  #''(.8?CIVbgLIzFr;n5n,q+t+x+|'"}| yvxz~ '.1+---F$!loT&wM<#Yy`: DjfH-+W0]|yl---F%!loT&wM<#Yy`: DjfH-+W0]|yl---$a{tle^ZURPNNORU[`fmu}vmd[SMGB>;98:;>BGMT\dmv---%a{tle^ZURPNNORU[`fmu}vmd[SMGB>;98:;>BGMT\dmv---$[J---%[J-- %< E\--% eG.*X1^--% wnT&wN;$Yx-->%PNNORU[`fmu}--`%.vmd[SMGB>;98:;>BGMT\dmv-- %tPS[--%---F$!^.qiDR:!ho+C[Kpy6f---F%!^.qiDR:!ho+C[Kpy6f-zzz-- $555/$ 5--- %555/$ 5---@$ 41)" }fZNGN\G\\@;=/;73;$; 4---@% 41)" }fZNGN\G\\@;=/;73;$; 4-u--:$kifWJ8+##( 1$:8GGUZflzv{d*rk---:%kifWJ8+##( 1$:8GGUZflzv{d*rk-f#-- $B #Nk--- %B #Nk-f#--($ 57>HSZ_bbb$]&K&C## # ---(% 57>HSZ_bbb$]&K&C## # -u--t$8<"yt$\)H"@8* }skd^^aak#*y8yNy\kry <---t%8<"yt$\)H"@8* }skd^^aak#*y8yNy\kry <---$a47;>ABCCA?<83.'! "(/4@:2+#  {wu%s-s4t;vAyG}KORTUUTRPLGB@4---%a47;>ABCCA?<83.'! "(/4@:2+#  {wu%s-s4t;vAyG}KORTUUTRPLGB@4---$C>---%C>--% Vw'-L9qENW\--% 8IYg-uCZr--% AC DDC@=87--% /2 331/+'%--&% !&).8=JRZb--% $+.00+&--T%("yt$\)H"@8* }skd^^aak--"% {vlzZfGU8G#:--% &##+8JWfi-- %ip--% ,D[Lqz6f--% _.rjER;"-->%3.'! "--`%.#  {wu%s-s4t;vAyG}KORTUUTRPLG-- %9AA--%-u--r$7MCdQx_n} 5 BHHC5.K`jdvba[TJB9u5j4a4.&""#,4<;5&xM?MC---r%7MCdQx_n} 5 BHHC5.K`jdvba[TJB9u5j4a4.&""#,4<;5&xM?MC-f#--`$. u< $.7CMRJHJPNXrbr}xzqha[.YJR`KK<.---`%. u< $.7CMRJHJPNXrbr}xzqha[.YJR`KK<.-u--h$2'   &5<*}w*t5wAz1n*g'`'V+N4J<JRR`Xh`jjiub}hjjemqqjeZRC91'---h%2'   &5<*}w*t5wAz1n*g'`'V+N4J<JRR`Xh`jjiub}hjjemqqjeZRC91'--%/#--%<FMSZ^d--%AzH~PW^b}-- %RWh{---($`1xjV>""8 a_4,( W4Z }j~kbXK1$ gQ>/q$ZA'$%<WxV#=AA/<X1" &%H1U7`/v-f:`HZVUoQ>A4hSJo)|w w"z/|Iycq|eT@* & -4*@5O;`=s=tn%5xMvn-jAkTqfGY;Pnd57---(%`1xjV>""8 a_4,( W4Z }j~kbXK1$ gQ>/q$ZA'$%<WxV#=AA/<X1" &%H1U7`/v-f:`HZVUoQ>A4hSJo)|w w"z/|Iycq|eT@* & -4*@5O;`=s=tn%5xMvn-jAkTqfGY;Pnd57--(%ulc[TNJ--%qXK1$ gQ>/q$ZA'$%<WxV#=AA/<X1" &%H1U7`/v-f:`HZVUoQ>A4hSJo)|w w"z/|Iycq|eT@* & -4*@5O;`=s=tn%5xMvn-jAkTqfGY;Pnd57--:%`1xjV>""8 a_4,( W4Z }j--%>t>---$e@Yo%5Rw5KfxY5L.Xx7l%.IYI x^s&yctw`P@%8mumnyp^gSf3: e= -  @---%e@Yo%5Rw5KfxY5L.Xx7l%.IYI x^s&yctw`P@%8mumnyp^gSf3: e= -  @-u--$Bkm 4G\o)o8%:=@BBB?<83,&raP@1# xk`TKB:3-){'rk---%Bkm 4G\o)o8%:=@BBB?<83,&raP@1# xk`TKB:3-){'rk-- %<61,'#  !$)----H$"1GUcryuw{)5CC>l7\.G'1 * !  #1---H%"1GUcryuw{)5CC>l7\.G'1 * !  #1-- %/#---($WUJ=1# ,<L[^W---(%WUJ=1# ,<L[^W--&%XUJ>1$ -=L[_---b$/&8FGS/ZQ\rYQE3) ||sib`aZOA1!---b%/&8FGS/ZQ\rYQE3) ||sib`aZOA1!-u--($5'xx 5---(%5'xx 5--&%5&xx--% '<ZgZgVdN^FY=V3S)R RS UX--$%WyX^[C_(d jr{u]F0--"%8t^G2"---$AmhldiTdD]5V&NE ;/#/Lh~kkt\22<EPZep{wndZPD??7.#  -9DNW_ezjhofomh---%AmhldiTdD]5V&NE ;/#/Lh~kkt\22<EPZep{wndZPD??7.#  -9DNW_ezjhofomh--%k---\$,p_M=-IBZ| #++RzyyhWE4$---\%,p_M=-IBZ| #++RzyyhWE4$--%8--%---"$M@2aZqU=.F---"%M@2aZqU=.F---$ t'K'|sI_t'---% t'K'|sI_t'--%P--$%CEEoDLA*>93+#c C$--% rGp`O{=\.--% @2#iG%-- %f7s Y= Y/y--% .xM"|T|-bE*--%. 3--*%-libwmf-0.2.8.4/examples/sample2.wmf0000644000077100007710000000325007260330255016401 0ustar fjffjf00000000000000ƚa %Z I %a 1 --$5WNE=5-%x]A ' ulearaafRoG}=4+$  &8J\n @a"Bc%Ff(Hi.Je %@[w6Rm%<Sj $;Sj&=Tk (\a#aW.    !| % xl.%| upjfcdef|skd^XRxLqFk@d;]5W----F$!norw~|wtstw|~wron----F$!;-   (6CN Xa g-k;lIkVgaakXtNzC~6(~z tkaVI;----$_4VLNpp_----${pns)cK{p----$=nnG4=--libwmf-0.2.8.4/examples/text.wmf0000644000077100007710000000311007260330304016010 0ustar fjffjf00000000000000 $Garamondd- ! I am a stringArial- ! I am a stringBookman Old Styleo- ! I am a string(Bookman Old Style- ! I am a string(Comic Sans MS.- ! I am a string<Courier- ! I am a stringPCourier Newu- ! I am a stringdImpact - ! I am a stringxModern - ! I am a stringMS Sans Serif- ! I am a stringMS Serife- ! I am a stringSmall Fontsa- ! I am a stringSymbolo- ! I am a stringTahomao- ! I am a stringTimes New Romanm- ! I am a stringVerdanaA- ! I am a stringWingdings- ! I am a string,Verdana- ! I am a string@XVerdana-!I am the stringxTimes New Roman- ! I am a stringxTimes New RomanQ- ! I am a string  XVerdana%-!I am the stringxlibwmf-0.2.8.4/fonts/0000755000077100007710000000000010272000330013617 5ustar fjffjf00000000000000libwmf-0.2.8.4/fonts/Makefile.am0000644000077100007710000000105607335242767015711 0ustar fjffjf00000000000000fontdir = @WMF_FONTDIR@ bin_SCRIPTS = libwmf-fontmap FONTS = \ n019003l.afm \ n019003l.pfb \ n019004l.afm \ n019004l.pfb \ n019023l.afm \ n019023l.pfb \ n019024l.afm \ n019024l.pfb \ n021003l.afm \ n021003l.pfb \ n021004l.afm \ n021004l.pfb \ n021023l.afm \ n021023l.pfb \ n021024l.afm \ n021024l.pfb \ n022003l.afm \ n022003l.pfb \ n022004l.afm \ n022004l.pfb \ n022023l.afm \ n022023l.pfb \ n022024l.afm \ n022024l.pfb \ s050000l.afm \ s050000l.pfb font_DATA = $(FONTS) fontmap EXTRA_DIST = libwmf-fontmap.in LICENSE $(FONTS) libwmf-0.2.8.4/fonts/Makefile.in0000664000077100007710000003170210272000330015671 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = fonts DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/fontmap.in $(srcdir)/libwmf-fontmap.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = libwmf-fontmap fontmap am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(fontdir)" binSCRIPT_INSTALL = $(INSTALL_SCRIPT) SCRIPTS = $(bin_SCRIPTS) SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; fontDATA_INSTALL = $(INSTALL_DATA) DATA = $(font_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ fontdir = @WMF_FONTDIR@ bin_SCRIPTS = libwmf-fontmap FONTS = \ n019003l.afm \ n019003l.pfb \ n019004l.afm \ n019004l.pfb \ n019023l.afm \ n019023l.pfb \ n019024l.afm \ n019024l.pfb \ n021003l.afm \ n021003l.pfb \ n021004l.afm \ n021004l.pfb \ n021023l.afm \ n021023l.pfb \ n021024l.afm \ n021024l.pfb \ n022003l.afm \ n022003l.pfb \ n022004l.afm \ n022004l.pfb \ n022023l.afm \ n022023l.pfb \ n022024l.afm \ n022024l.pfb \ s050000l.afm \ s050000l.pfb font_DATA = $(FONTS) fontmap EXTRA_DIST = libwmf-fontmap.in LICENSE $(FONTS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fonts/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu fonts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh libwmf-fontmap: $(top_builddir)/config.status $(srcdir)/libwmf-fontmap.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ fontmap: $(top_builddir)/config.status $(srcdir)/fontmap.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ else :; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-fontDATA: $(font_DATA) @$(NORMAL_INSTALL) test -z "$(fontdir)" || $(mkdir_p) "$(DESTDIR)$(fontdir)" @list='$(font_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(fontDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(fontdir)/$$f'"; \ $(fontDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(fontdir)/$$f"; \ done uninstall-fontDATA: @$(NORMAL_UNINSTALL) @list='$(font_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(fontdir)/$$f'"; \ rm -f "$(DESTDIR)$(fontdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(fontdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-fontDATA install-exec-am: install-binSCRIPTS install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-fontDATA \ uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binSCRIPTS install-data install-data-am install-exec \ install-exec-am install-fontDATA install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-binSCRIPTS \ uninstall-fontDATA uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/fonts/fontmap.in0000644000077100007710000000507307335242767015654 0ustar fjffjf00000000000000 libwmf-0.2.8.4/fonts/libwmf-fontmap.in0000644000077100007710000003137207335242767017133 0ustar fjffjf00000000000000#!/bin/sh font_map=@WMF_XTRA_FONTMAP@ font_dir= echo_help=no while test $# -gt 0; do case "$1" in -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac case $1 in --help) echo_help=yes ;; --map=*) font_map=$optarg ;; *) if test "x$font_dir" = "x"; then font_dir=$1 else font_dir="$font_dir $1" fi ;; esac shift done if test "x$font_map" = "x"; then echo_help=yes fi if test "x$font_dir" = "x"; then font_dir="@WMF_FONTDIR@" else font_dir="$font_dir @WMF_FONTDIR@" fi if test $echo_help = yes; then cat < dir1 [dir2 [dir3 ...]] EOF exit $1 fi echo font map = $font_map font_pwd=`pwd` if test -w $font_map; then rm -f $font_map fi cat > $font_map < EOF for i in $font_dir; do if test -d $i; then cd $i; font_cwd=`pwd`; echo scanning $i; for j in `ls *.afm 2> /dev/null`; do font_root=`echo $j | sed s/.afm//` font_metrics=$font_cwd/$font_root.afm font_glyphs= if test -r $font_cwd/$font_root.pfa; then font_glyphs=$font_cwd/$font_root.pfa elif test -r $font_cwd/$font_root.pfb; then font_glyphs=$font_cwd/$font_root.pfb fi if test "x$font_glyphs" != "x"; then echo font: $font_root FontName=`grep "FontName " $font_metrics | sed "s/FontName //"` FullName=`grep "FullName " $font_metrics | sed "s/FullName //"` FamilyName=`grep "FamilyName " $font_metrics | sed "s/FamilyName //"` Weight=`grep "Weight " $font_metrics | sed "s/Weight //"` cd $font_pwd echo '' >> $font_map cd $font_cwd fi done for j in `ls *.ttf 2> /dev/null`; do font_root=`echo $j | sed s/.ttf//` font_recognized=yes font_glyphs=$font_cwd/$font_root.ttf case "$font_root" in antquab) FontName="BookAntiqua-Bold" FullName="Book Antiqua Bold" FamilyName="Book Antiqua" Weight="Bold" ;; antquabi) FontName="BookAntiqua-BoldItalic" FullName="Book Antiqua Bold Italic" FamilyName="Book Antiqua" Weight="Bold Italic" ;; antquai) FontName="BookAntiqua-Italic" FullName="Book Antiqua Italic" FamilyName="Book Antiqua" Weight="Italic" ;; arbli___) FontName="Arial-BlackItalic" FullName="Arial Black Italic" FamilyName="Arial Black" Weight="Italic" ;; arial) FontName="ArialMT" FullName="Arial" FamilyName="Arial" Weight="Regular" ;; arialbd) FontName="Arial-BoldMT" FullName="Arial Bold" FamilyName="Arial" Weight="Bold" ;; arialbi) FontName="Arial-BoldItalicMT" FullName="Arial Bold Italic" FamilyName="Arial" Weight="Bold Italic" ;; ariali) FontName="Arial-ItalicMT" FullName="Arial Italic" FamilyName="Arial" Weight="Italic" ;; arialn) FontName="ArialNarrow" FullName="Arial Narrow" FamilyName="Arial Narrow" Weight="Regular" ;; arialnb) FontName="ArialNarrow-Bold" FullName="Arial Narrow Bold" FamilyName="Arial Narrow" Weight="Bold" ;; arialnbi) FontName="ArialNarrow-BoldItalic" FullName="Arial Narrow Bold Italic" FamilyName="Arial Narrow" Weight="Bold Italic" ;; arialni) FontName="ArialNarrow-Italic" FullName="Arial Narrow Italic" FamilyName="Arial Narrow" Weight="Italic" ;; arialuni) FontName="ArialUnicodeMS" FullName="Arial Unicode MS" FamilyName="Arial Unicode MS" Weight="Regular" ;; ariblk) FontName="Arial-Black" FullName="Arial Black" FamilyName="Arial Black" Weight="Regular" ;; batang) FontName="Batang" FullName="Batang" FamilyName="Batang" Weight="Regular" ;; bkant) FontName="BookAntiqua" FullName="Book Antiqua" FamilyName="Book Antiqua" Weight="Regular" ;; bookos) FontName="BookmanOldStyle" FullName="Bookman Old Style" FamilyName="Bookman Old Style" Weight="Regular" ;; bookosb) FontName="BookmanOldStyle-Bold" FullName="Bookman Old Style Bold" FamilyName="Bookman Old Style" Weight="Bold" ;; bookosbi) FontName="BookmanOldStyle-BoldItalic" FullName="Bookman Old Style Bold Italic" FamilyName="Bookman Old Style" Weight="Bold Italic" ;; bookosi) FontName="BookmanOldStyle-Italic" FullName="Bookman Old Style Italic" FamilyName="Bookman Old Style" Weight="Italic" ;; century) FontName="Century" FullName="Century" FamilyName="Century" Weight="Regular" ;; comic) FontName="ComicSansMS" FullName="Comic Sans MS" FamilyName="Comic Sans MS" Weight="Regular" ;; comicbd) FontName="ComicSansMS-Bold" FullName="Comic Sans MS Bold" FamilyName="Comic Sans MS" Weight="Bold" ;; cour) FontName="CourierNewPSMT" FullName="Courier New" FamilyName="Courier New" Weight="Regular" ;; courbd) FontName="CourierNewPS-BoldMT" FullName="Courier New Bold" FamilyName="Courier New" Weight="Bold" ;; courbi) FontName="CourierNewPS-BoldItalicMT" FullName="Courier New Bold Italic" FamilyName="Courier New" Weight="Bold Italic" ;; couri) FontName="CourierNewPS-ItalicMT" FullName="Courier New Italic" FamilyName="Courier New" Weight="Italic" ;; euclid) FontName="Euclid" FullName="Euclid" FamilyName="Euclid" Weight="Regular" ;; euclidb) FontName="Euclid-Bold" FullName="Euclid Bold" FamilyName="Euclid" Weight="Bold" ;; euclidbi) FontName="Euclid-BoldItalic" FullName="Euclid Bold Italic" FamilyName="Euclid" Weight="Bold Italic" ;; euclidi) FontName="Euclid-Italic" FullName="Euclid Italic" FamilyName="Euclid" Weight="Italic" ;; eucsym) FontName="EuclidSymbol" FullName="Euclid Symbol" FamilyName="Euclid Symbol" Weight="Regular" ;; eucsymb) FontName="EuclidSymbol-Bold" FullName="Euclid Symbol Bold" FamilyName="Euclid Symbol" Weight="Bold" ;; eucsymbi) FontName="EuclidSymbol-BoldItalic" FullName="Euclid Symbol Bold Italic" FamilyName="Euclid Symbol" Weight="Bold Italic" ;; eucsymi) FontName="EuclidSymbol-Italic" FullName="Euclid Symbol Italic" FamilyName="Euclid Symbol" Weight="Italic" ;; euextra) FontName="EuclidExtra" FullName="Euclid Extra" FamilyName="Euclid Extra" Weight="Regular" ;; euextrab) FontName="EuclidExtra-Bold" FullName="Euclid Extra Bold" FamilyName="Euclid Extra" Weight="Bold" ;; eufrak) FontName="EuclidFraktur" FullName="Euclid Fraktur" FamilyName="Euclid Fraktur" Weight="Regular" ;; eufrakb) FontName="EuclidFraktur-Bold" FullName="Euclid Fraktur Bold" FamilyName="Euclid Fraktur" Weight="Bold" ;; eumat1) FontName="EuclidMathOne" FullName="Euclid Math One" FamilyName="Euclid Math One" Weight="Regular" ;; eumat1b) FontName="EuclidMathOne-Bold" FullName="Euclid Math One Bold" FamilyName="Euclid Math One" Weight="Bold" ;; eumat2) FontName="EuclidMathTwo" FullName="Euclid Math Two" FamilyName="Euclid Math Two" Weight="Regular" ;; eumat2b) FontName="EuclidMathTwo-Bold" FullName="Euclid Math Two Bold" FamilyName="Euclid Math Two" Weight="Bold" ;; fences) FontName="Fences-Plain" FullName="Fences Plain" FamilyName="Fences" Weight="Plain" ;; gara) FontName="Garamond" FullName="Garamond" FamilyName="Garamond" Weight="Regular" ;; garabd) FontName="Garamond-Bold" FullName="Garamond Bold" FamilyName="Garamond" Weight="Bold" ;; garait) FontName="Garamond-Italic" FullName="Garamond Italic" FamilyName="Garamond" Weight="Italic" ;; gothic) FontName="CenturyGothic" FullName="Century Gothic" FamilyName="Century Gothic" Weight="Regular" ;; gothicb) FontName="CenturyGothic-Bold" FullName="Century Gothic Bold" FamilyName="Century Gothic" Weight="Bold" ;; gothicbi) FontName="CenturyGothic-BoldItalic" FullName="Century Gothic Bold Italic" FamilyName="Century Gothic" Weight="Bold Italic" ;; gothici) FontName="CenturyGothic-Italic" FullName="Century Gothic Italic" FamilyName="Century Gothic" Weight="Italic" ;; impact) FontName="Impact" FullName="Impact" FamilyName="Impact" Weight="Regular" ;; l_10646) FontName="LucidaSansUnicode" FullName="Lucida Sans Unicode" FamilyName="Lucida Sans Unicode" Weight="Regular" ;; lucon) FontName="LucidaConsole" FullName="Lucida Console" FamilyName="Lucida Console" Weight="Regular" ;; marlett) FontName="Marlett" FullName="Marlett" FamilyName="Marlett" Weight="Regular" ;; msmincho) FontName="MS-Mincho" FullName="MS Mincho" FamilyName="MS Mincho" Weight="Regular" ;; mtcorsva) FontName="MonotypeCorsiva" FullName="Monotype Corsiva" FamilyName="Monotype Corsiva" Weight="Regular" ;; mtextra) FontName="MT-Extra" FullName="MT Extra" FamilyName="MT Extra" Weight="Regular" ;; mtsymbol) FontName="MT-Symbol" FullName="MT Symbol" FamilyName="MT Symbol" Weight="Regular" ;; outlook) FontName="MSOutlook" FullName="MS Outlook" FamilyName="MS Outlook" Weight="Regular" ;; pmingliu) FontName="PMingLiU" FullName="PMingLiU" FamilyName="PMingLiU" Weight="Regular" ;; simsun) FontName="SimSun" FullName="SimSun" FamilyName="SimSun" Weight="Regular" ;; symbol) FontName="SymbolMT" FullName="Symbol" FamilyName="Symbol" Weight="Regular" ;; tahoma) FontName="Tahoma" FullName="Tahoma" FamilyName="Tahoma" Weight="Regular" ;; tahomabd) FontName="Tahoma-Bold" FullName="Tahoma Bold" FamilyName="Tahoma" Weight="Bold" ;; times) FontName="TimesNewRomanPSMT" FullName="Times New Roman" FamilyName="Times New Roman" Weight="Regular" ;; timesbd) FontName="TimesNewRomanPS-BoldMT" FullName="Times New Roman Bold" FamilyName="Times New Roman" Weight="Bold" ;; timesbi) FontName="TimesNewRomanPS-BoldItalicMT" FullName="Times New Roman Bold Italic" FamilyName="Times New Roman" Weight="Bold Italic" ;; timesi) FontName="TimesNewRomanPS-ItalicMT" FullName="Times New Roman Italic" FamilyName="Times New Roman" Weight="Italic" ;; trebuc) FontName="TrebuchetMS" FullName="Trebuchet MS" FamilyName="Trebuchet MS" Weight="Regular" ;; trebucbd) FontName="TrebuchetMS-Bold" FullName="Trebuchet MS Bold" FamilyName="Trebuchet MS" Weight="Bold" ;; trebucbi) FontName="Trebuchet-BoldItalic" FullName="Trebuchet MS Bold Italic" FamilyName="Trebuchet MS" Weight="Bold Italic" ;; trebucit) FontName="TrebuchetMS-Italic" FullName="Trebuchet MS Italic" FamilyName="Trebuchet MS" Weight="Italic" ;; verdana) FontName="Verdana" FullName="Verdana" FamilyName="Verdana" Weight="Regular" ;; verdanab) FontName="Verdana-Bold" FullName="Verdana Bold" FamilyName="Verdana" Weight="Bold" ;; verdanai) FontName="Verdana-Italic" FullName="Verdana Italic" FamilyName="Verdana" Weight="Italic" ;; verdanaz) FontName="Verdana-BoldItalic" FullName="Verdana Bold Italic" FamilyName="Verdana" Weight="Bold Italic" ;; webdings) FontName="Webdings" FullName="Webdings" FamilyName="Webdings" Weight="Regular" ;; wingding) FontName="Wingdings-Regular" FullName="Wingdings" FamilyName="Wingdings" Weight="Regular" ;; wingdng2) FontName="Wingdings2" FullName="Wingdings 2" FamilyName="Wingdings 2" Weight="Regular" ;; wingdng3) FontName="Wingdings3" FullName="Wingdings 3" FamilyName="Wingdings 3" Weight="Regular" ;; *) font_recognized=no ;; esac if test $font_recognized = yes; then echo font: $font_root cd $font_pwd echo '' >> $font_map cd $font_cwd else echo "I don't know" $font_root fi done cd $font_pwd; fi done cat >> $font_map < EOF libwmf-0.2.8.4/fonts/LICENSE0000644000077100007710000000312407260330346014644 0ustar fjffjf00000000000000% Fonts contributed by: % URW++ Design and Development Incorporated % Poppenbuetteler Bogen 29A % D-22399 Hamburg % Germany % tel. +49 (40) 60 60 50 % fax +49 (40) 60 60 51 11 % http://www.urwpp.de % for distribution under the GNU License and Aladdin Free Public License. % % Each of these fonts is individually covered by the license: % for licensing purposes, they are not "part of" any larger entity. % The following notice applies to these fonts: % % Copyright URW Software, Copyright 1994 by URW. % % Copyright (C) 1996 Aladdin Enterprises. All rights reserved. % % GNU Ghostscript is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY. No author or distributor accepts responsibility % to anyone for the consequences of using it or for whether it serves any % particular purpose or works at all, unless he says so in writing. Refer % to the GNU General Public License for full details. % % Everyone is granted permission to copy, modify and redistribute GNU % Ghostscript, but only under the conditions described in the GNU General % Public License. A copy of this license is supposed to have been given % to you along with GNU Ghostscript so you can know your rights and % responsibilities. It should be in a file named COPYING. Among other % things, the copyright notice and this notice must be preserved on all % copies. % % Aladdin Enterprises supports the work of the GNU Project, but is not % affiliated with the Free Software Foundation or the GNU Project. GNU % Ghostscript, as distributed by Aladdin Enterprises, does not require any % GNU software to build or run it. libwmf-0.2.8.4/fonts/n019003l.afm0000644000077100007710000007602307260330346015422 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusSanL-Regu FullName Nimbus Sans L Regular FamilyName Nimbus Sans L Weight Regular ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -151 UnderlineThickness 50 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -174 -285 1001 953 CapHeight 729 XHeight 524 Descender -218 Ascender 729 StartCharMetrics 316 C 32 ; WX 278 ; N space ; B 191 0 191 0 ; C 33 ; WX 278 ; N exclam ; B 124 0 208 729 ; C 34 ; WX 355 ; N quotedbl ; B 52 464 305 709 ; C 35 ; WX 556 ; N numbersign ; B 14 -20 542 697 ; C 36 ; WX 556 ; N dollar ; B 26 -126 518 770 ; C 37 ; WX 889 ; N percent ; B 29 -20 859 709 ; C 38 ; WX 667 ; N ampersand ; B 52 -23 637 709 ; C 39 ; WX 221 ; N quoteright ; B 64 497 157 729 ; C 40 ; WX 333 ; N parenleft ; B 73 -212 291 729 ; C 41 ; WX 333 ; N parenright ; B 38 -212 256 729 ; C 42 ; WX 389 ; N asterisk ; B 40 441 343 729 ; C 43 ; WX 584 ; N plus ; B 50 -10 534 474 ; C 44 ; WX 278 ; N comma ; B 87 -147 192 104 ; C 45 ; WX 333 ; N hyphen ; B 46 240 284 312 ; C 46 ; WX 278 ; N period ; B 87 0 191 104 ; C 47 ; WX 278 ; N slash ; B -8 -20 284 729 ; C 48 ; WX 556 ; N zero ; B 43 -23 507 709 ; C 49 ; WX 556 ; N one ; B 102 0 347 709 ; C 50 ; WX 556 ; N two ; B 34 0 511 709 ; C 51 ; WX 556 ; N three ; B 32 -23 506 709 ; C 52 ; WX 556 ; N four ; B 28 0 520 709 ; C 53 ; WX 556 ; N five ; B 35 -23 513 709 ; C 54 ; WX 556 ; N six ; B 43 -23 513 709 ; C 55 ; WX 556 ; N seven ; B 46 0 520 709 ; C 56 ; WX 556 ; N eight ; B 37 -23 513 709 ; C 57 ; WX 556 ; N nine ; B 38 -23 509 709 ; C 58 ; WX 278 ; N colon ; B 110 0 214 524 ; C 59 ; WX 278 ; N semicolon ; B 110 -147 215 524 ; C 60 ; WX 584 ; N less ; B 45 -9 534 474 ; C 61 ; WX 584 ; N equal ; B 50 111 534 353 ; C 62 ; WX 584 ; N greater ; B 50 -9 539 474 ; C 63 ; WX 556 ; N question ; B 77 0 509 741 ; C 64 ; WX 1015 ; N at ; B 34 -142 951 741 ; C 65 ; WX 667 ; N A ; B 17 0 653 729 ; C 66 ; WX 667 ; N B ; B 79 0 623 729 ; C 67 ; WX 722 ; N C ; B 48 -23 677 741 ; C 68 ; WX 722 ; N D ; B 89 0 667 729 ; C 69 ; WX 667 ; N E ; B 90 0 613 729 ; C 70 ; WX 611 ; N F ; B 90 0 579 729 ; C 71 ; WX 778 ; N G ; B 44 -23 709 741 ; C 72 ; WX 722 ; N H ; B 83 0 644 729 ; C 73 ; WX 278 ; N I ; B 100 0 194 729 ; C 74 ; WX 500 ; N J ; B 17 -23 426 729 ; C 75 ; WX 667 ; N K ; B 79 0 658 729 ; C 76 ; WX 556 ; N L ; B 80 0 533 729 ; C 77 ; WX 833 ; N M ; B 75 0 761 729 ; C 78 ; WX 722 ; N N ; B 76 0 646 729 ; C 79 ; WX 778 ; N O ; B 38 -23 742 741 ; C 80 ; WX 667 ; N P ; B 91 0 617 729 ; C 81 ; WX 778 ; N Q ; B 38 -59 742 741 ; C 82 ; WX 722 ; N R ; B 93 0 679 729 ; C 83 ; WX 667 ; N S ; B 48 -23 621 741 ; C 84 ; WX 611 ; N T ; B 21 0 593 729 ; C 85 ; WX 722 ; N U ; B 85 -23 645 729 ; C 86 ; WX 667 ; N V ; B 30 0 645 729 ; C 87 ; WX 944 ; N W ; B 22 0 929 729 ; C 88 ; WX 667 ; N X ; B 22 0 649 729 ; C 89 ; WX 667 ; N Y ; B 13 0 661 729 ; C 90 ; WX 611 ; N Z ; B 28 0 583 729 ; C 91 ; WX 278 ; N bracketleft ; B 64 -212 250 729 ; C 92 ; WX 278 ; N backslash ; B -8 -20 284 729 ; C 93 ; WX 278 ; N bracketright ; B 23 -212 209 729 ; C 94 ; WX 469 ; N asciicircum ; B 44 329 425 709 ; C 95 ; WX 556 ; N underscore ; B -22 -176 578 -126 ; C 96 ; WX 222 ; N quoteleft ; B 65 477 158 709 ; C 97 ; WX 556 ; N a ; B 42 -23 535 539 ; C 98 ; WX 556 ; N b ; B 54 -23 523 729 ; C 99 ; WX 500 ; N c ; B 31 -23 477 539 ; C 100 ; WX 556 ; N d ; B 26 -23 495 729 ; C 101 ; WX 556 ; N e ; B 40 -23 513 539 ; C 102 ; WX 278 ; N f ; B 18 0 258 732 ; C 103 ; WX 556 ; N g ; B 29 -218 489 539 ; C 104 ; WX 556 ; N h ; B 70 0 486 729 ; C 105 ; WX 222 ; N i ; B 66 0 150 729 ; C 106 ; WX 222 ; N j ; B -18 -218 153 729 ; C 107 ; WX 500 ; N k ; B 58 0 502 729 ; C 108 ; WX 222 ; N l ; B 68 0 152 729 ; C 109 ; WX 833 ; N m ; B 70 0 762 539 ; C 110 ; WX 556 ; N n ; B 70 0 487 539 ; C 111 ; WX 556 ; N o ; B 36 -23 510 539 ; C 112 ; WX 556 ; N p ; B 54 -218 523 539 ; C 113 ; WX 556 ; N q ; B 26 -218 495 539 ; C 114 ; WX 333 ; N r ; B 69 0 321 539 ; C 115 ; WX 500 ; N s ; B 34 -23 459 539 ; C 116 ; WX 278 ; N t ; B 14 -23 254 668 ; C 117 ; WX 556 ; N u ; B 65 -23 482 524 ; C 118 ; WX 500 ; N v ; B 10 0 486 524 ; C 119 ; WX 722 ; N w ; B 6 0 708 524 ; C 120 ; WX 500 ; N x ; B 17 0 473 524 ; C 121 ; WX 500 ; N y ; B 20 -218 478 524 ; C 122 ; WX 500 ; N z ; B 31 0 457 524 ; C 123 ; WX 334 ; N braceleft ; B 43 -212 276 729 ; C 124 ; WX 260 ; N bar ; B 100 -212 160 729 ; C 125 ; WX 334 ; N braceright ; B 29 -212 262 729 ; C 126 ; WX 584 ; N asciitilde ; B 75 268 508 438 ; C 161 ; WX 333 ; N exclamdown ; B 121 -205 205 524 ; C 162 ; WX 556 ; N cent ; B 52 -120 510 628 ; C 163 ; WX 556 ; N sterling ; B 26 -23 535 729 ; C 164 ; WX 167 ; N fraction ; B -174 -20 336 709 ; C 165 ; WX 556 ; N yen ; B 11 0 545 709 ; C 166 ; WX 556 ; N florin ; B 11 -212 542 738 ; C 167 ; WX 556 ; N section ; B 43 -213 506 729 ; C 168 ; WX 556 ; N currency ; B 67 133 489 551 ; C 169 ; WX 191 ; N quotesingle ; B 48 464 142 709 ; C 170 ; WX 333 ; N quotedblleft ; B 48 477 299 709 ; C 171 ; WX 556 ; N guillemotleft ; B 98 106 455 438 ; C 172 ; WX 333 ; N guilsinglleft ; B 91 106 243 438 ; C 173 ; WX 333 ; N guilsinglright ; B 85 106 239 438 ; C 174 ; WX 500 ; N fi ; B 12 0 436 732 ; C 175 ; WX 500 ; N fl ; B 17 0 430 732 ; C 177 ; WX 556 ; N endash ; B -5 240 561 312 ; C 178 ; WX 556 ; N dagger ; B 38 -177 513 709 ; C 179 ; WX 556 ; N daggerdbl ; B 38 -177 513 709 ; C 180 ; WX 278 ; N periodcentered ; B 87 302 211 427 ; C 182 ; WX 537 ; N paragraph ; B 48 -177 522 729 ; C 183 ; WX 350 ; N bullet ; B 50 220 300 470 ; C 184 ; WX 222 ; N quotesinglbase ; B 64 -128 158 104 ; C 185 ; WX 333 ; N quotedblbase ; B 47 -128 300 104 ; C 186 ; WX 333 ; N quotedblright ; B 49 477 302 709 ; C 187 ; WX 556 ; N guillemotright ; B 98 106 451 438 ; C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 104 ; C 189 ; WX 1000 ; N perthousand ; B 9 -22 993 738 ; C 191 ; WX 611 ; N questiondown ; B 95 -217 528 524 ; C 193 ; WX 333 ; N grave ; B 22 592 231 740 ; C 194 ; WX 333 ; N acute ; B 92 592 301 740 ; C 195 ; WX 333 ; N circumflex ; B 20 591 307 741 ; C 196 ; WX 333 ; N tilde ; B 5 613 319 717 ; C 197 ; WX 333 ; N macron ; B 28 631 302 701 ; C 198 ; WX 333 ; N breve ; B 15 597 316 732 ; C 199 ; WX 333 ; N dotaccent ; B 115 612 219 716 ; C 200 ; WX 333 ; N dieresis ; B 30 612 296 715 ; C 202 ; WX 333 ; N ring ; B 79 579 255 754 ; C 203 ; WX 333 ; N cedilla ; B 39 -214 287 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -35 590 348 740 ; C 206 ; WX 333 ; N ogonek ; B 57 -205 265 0 ; C 207 ; WX 333 ; N caron ; B 19 591 306 741 ; C 208 ; WX 1000 ; N emdash ; B -9 240 1001 312 ; C 225 ; WX 1000 ; N AE ; B 11 0 950 729 ; C 227 ; WX 370 ; N ordfeminine ; B 37 303 333 742 ; C 232 ; WX 556 ; N Lslash ; B 0 0 552 729 ; C 233 ; WX 778 ; N Oslash ; B 30 -23 744 755 ; C 234 ; WX 1000 ; N OE ; B 43 -20 959 741 ; C 235 ; WX 365 ; N ordmasculine ; B 40 303 324 742 ; C 241 ; WX 889 ; N ae ; B 34 -23 845 539 ; C 245 ; WX 278 ; N dotlessi ; B 94 0 178 524 ; C 248 ; WX 222 ; N lslash ; B 0 0 212 729 ; C 249 ; WX 611 ; N oslash ; B 18 -30 529 539 ; C 250 ; WX 944 ; N oe ; B 40 -23 899 539 ; C 251 ; WX 611 ; N germandbls ; B 126 -20 566 729 ; C -1 ; WX 722 ; N Udieresis ; B 85 -23 645 914 ; C -1 ; WX 722 ; N Uacute ; B 85 -23 645 939 ; C -1 ; WX 667 ; N Scedilla ; B 45 -214 621 741 ; C -1 ; WX 611 ; N Tcaron ; B 21 0 593 940 ; C -1 ; WX 667 ; N Scaron ; B 48 -23 621 940 ; C -1 ; WX 722 ; N Rcaron ; B 93 0 679 940 ; C -1 ; WX 722 ; N Racute ; B 93 0 679 939 ; C -1 ; WX 667 ; N Sacute ; B 48 -23 621 939 ; C -1 ; WX 778 ; N Otilde ; B 38 -23 742 916 ; C -1 ; WX 556 ; N ucircumflex ; B 65 -23 482 741 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 38 -23 742 939 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 85 -23 645 939 ; C -1 ; WX 666 ; N Yacute ; B 13 0 661 939 ; C -1 ; WX 722 ; N Eth ; B 20 0 667 729 ; C -1 ; WX 722 ; N Dcroat ; B 20 0 667 729 ; C -1 ; WX 611 ; N Zacute ; B 28 0 583 939 ; C -1 ; WX 722 ; N Uring ; B 85 -23 645 953 ; C -1 ; WX 556 ; N gbreve ; B 29 -218 489 732 ; C -1 ; WX 556 ; N eogonek ; B 40 -204 514 539 ; C -1 ; WX 556 ; N edotaccent ; B 40 -23 513 716 ; C -1 ; WX 556 ; N ecaron ; B 40 -23 513 741 ; C -1 ; WX 722 ; N Ugrave ; B 85 -23 645 939 ; C -1 ; WX 666 ; N Thorn ; B 91 0 616 729 ; C -1 ; WX 556 ; N eacute ; B 40 -23 513 740 ; C -1 ; WX 556 ; N edieresis ; B 40 -23 513 715 ; C -1 ; WX 635 ; N dcaron ; B 26 -23 648 729 ; C -1 ; WX 500 ; N ccedilla ; B 31 -214 477 539 ; C -1 ; WX 500 ; N ccaron ; B 31 -23 477 741 ; C -1 ; WX 500 ; N cacute ; B 31 -23 477 740 ; C -1 ; WX 556 ; N aogonek ; B 43 -205 596 539 ; C -1 ; WX 556 ; N aring ; B 42 -23 535 754 ; C -1 ; WX 556 ; N atilde ; B 42 -23 535 717 ; C -1 ; WX 556 ; N abreve ; B 42 -23 535 732 ; C -1 ; WX 556 ; N egrave ; B 40 -23 513 740 ; C -1 ; WX 556 ; N agrave ; B 42 -23 535 740 ; C -1 ; WX 556 ; N aacute ; B 42 -23 535 740 ; C -1 ; WX 556 ; N adieresis ; B 42 -23 535 715 ; C -1 ; WX 722 ; N Uogonek ; B 85 -205 645 729 ; C -1 ; WX 556 ; N ugrave ; B 65 -23 482 740 ; C -1 ; WX 556 ; N uacute ; B 65 -23 482 740 ; C -1 ; WX 556 ; N udieresis ; B 65 -23 482 715 ; C -1 ; WX 308 ; N tcaron ; B 14 -23 321 800 ; C -1 ; WX 500 ; N scommaaccent ; B 34 -285 459 539 ; C -1 ; WX 611 ; N Zcaron ; B 28 0 583 940 ; C -1 ; WX 556 ; N ecircumflex ; B 40 -23 513 741 ; C -1 ; WX 722 ; N Ucircumflex ; B 85 -23 645 940 ; C -1 ; WX 556 ; N acircumflex ; B 42 -23 535 741 ; C -1 ; WX 611 ; N Zdotaccent ; B 28 0 583 915 ; C -1 ; WX 500 ; N scaron ; B 34 -23 459 741 ; C -1 ; WX 667 ; N Amacron ; B 17 0 653 900 ; C -1 ; WX 500 ; N sacute ; B 34 -23 459 740 ; C -1 ; WX 611 ; N Tcommaaccent ; B 21 -285 593 729 ; C -1 ; WX 667 ; N Ydieresis ; B 13 0 661 914 ; C -1 ; WX 555 ; N thorn ; B 54 -218 522 714 ; C -1 ; WX 667 ; N Emacron ; B 90 0 613 900 ; C -1 ; WX 778 ; N Ograve ; B 38 -23 742 939 ; C -1 ; WX 778 ; N Oacute ; B 38 -23 742 939 ; C -1 ; WX 778 ; N Odieresis ; B 38 -23 742 914 ; C -1 ; WX 722 ; N Ntilde ; B 76 0 646 916 ; C -1 ; WX 722 ; N Ncaron ; B 76 0 646 940 ; C -1 ; WX 722 ; N Nacute ; B 76 0 646 939 ; C -1 ; WX 556 ; N Lcaron ; B 80 0 533 729 ; C -1 ; WX 556 ; N Lacute ; B 70 0 533 939 ; C -1 ; WX 278 ; N Idotaccent ; B 92 0 196 915 ; C -1 ; WX 333 ; N racute ; B 69 0 331 740 ; C -1 ; WX 278 ; N Icircumflex ; B -1 0 286 940 ; C -1 ; WX 556 ; N ohungarumlaut ; B 36 -23 526 740 ; C -1 ; WX 556 ; N otilde ; B 36 -23 510 717 ; C -1 ; WX 556 ; N Euro ; B 2 -23 543 709 ; C -1 ; WX 556 ; N ocircumflex ; B 36 -23 510 741 ; C -1 ; WX 351 ; N onesuperior ; B 61 284 222 709 ; C -1 ; WX 351 ; N twosuperior ; B 19 284 326 709 ; C -1 ; WX 351 ; N threesuperior ; B 16 270 322 709 ; C -1 ; WX 278 ; N Igrave ; B 1 0 210 939 ; C -1 ; WX 278 ; N Iacute ; B 71 0 280 939 ; C -1 ; WX 278 ; N Imacron ; B 20 0 274 900 ; C -1 ; WX 278 ; N Iogonek ; B 66 -204 234 729 ; C -1 ; WX 278 ; N Idieresis ; B 9 0 275 907 ; C -1 ; WX 778 ; N Gbreve ; B 44 -23 709 931 ; C -1 ; WX 722 ; N Umacron ; B 85 -23 645 900 ; C -1 ; WX 667 ; N Kcommaaccent ; B 79 -285 658 729 ; C -1 ; WX 556 ; N ograve ; B 36 -23 510 740 ; C -1 ; WX 667 ; N Scommaaccent ; B 48 -285 621 741 ; C -1 ; WX 667 ; N Eogonek ; B 90 -205 652 729 ; C -1 ; WX 556 ; N oacute ; B 36 -23 510 740 ; C -1 ; WX 667 ; N Edotaccent ; B 90 0 613 915 ; C -1 ; WX 222 ; N iogonek ; B 25 -204 190 729 ; C -1 ; WX 556 ; N gcommaaccent ; B 29 -218 489 817 ; C -1 ; WX 556 ; N odieresis ; B 36 -23 510 715 ; C -1 ; WX 556 ; N ntilde ; B 70 0 487 717 ; C -1 ; WX 556 ; N ncaron ; B 70 0 487 741 ; C -1 ; WX 667 ; N Ecaron ; B 90 0 613 940 ; C -1 ; WX 667 ; N Ecircumflex ; B 90 0 613 940 ; C -1 ; WX 500 ; N scedilla ; B 34 -214 459 539 ; C -1 ; WX 333 ; N rcaron ; B 48 0 335 741 ; C -1 ; WX 667 ; N Egrave ; B 90 0 613 939 ; C -1 ; WX 667 ; N Eacute ; B 90 0 613 939 ; C -1 ; WX 778 ; N Gcommaaccent ; B 44 -285 709 741 ; C -1 ; WX 722 ; N Rcommaaccent ; B 93 -285 679 729 ; C -1 ; WX 667 ; N Edieresis ; B 90 0 613 914 ; C -1 ; WX 556 ; N nacute ; B 70 0 487 740 ; C -1 ; WX 556 ; N uogonek ; B 65 -204 521 524 ; C -1 ; WX 556 ; N umacron ; B 65 -23 482 701 ; C -1 ; WX 722 ; N Dcaron ; B 89 0 667 940 ; C -1 ; WX 292 ; N lcaron ; B 68 0 305 729 ; C -1 ; WX 722 ; N Ccaron ; B 48 -23 677 940 ; C -1 ; WX 722 ; N Cacute ; B 48 -23 677 939 ; C -1 ; WX 722 ; N Ccedilla ; B 48 -214 677 741 ; C -1 ; WX 606 ; N degree ; B 151 383 454 686 ; C -1 ; WX 667 ; N Aogonek ; B 17 -205 692 729 ; C -1 ; WX 584 ; N minus ; B 40 197 544 267 ; C -1 ; WX 584 ; N multiply ; B 95 34 488 427 ; C -1 ; WX 584 ; N divide ; B 50 0 534 472 ; C -1 ; WX 667 ; N Aring ; B 17 0 653 953 ; C -1 ; WX 1000 ; N trademark ; B 63 292 938 729 ; C -1 ; WX 333 ; N rcommaaccent ; B 65 -285 321 539 ; C -1 ; WX 222 ; N lacute ; B 63 0 272 939 ; C -1 ; WX 556 ; N omacron ; B 36 -23 510 701 ; C -1 ; WX 667 ; N Atilde ; B 17 0 653 916 ; C -1 ; WX 278 ; N icircumflex ; B -7 0 280 741 ; C -1 ; WX 278 ; N igrave ; B -5 0 204 740 ; C -1 ; WX 556 ; N ncommaaccent ; B 70 -285 487 539 ; C -1 ; WX 222 ; N lcommaaccent ; B 63 -285 163 729 ; C -1 ; WX 584 ; N plusminus ; B 50 -11 534 623 ; C -1 ; WX 869 ; N onehalf ; B 61 -20 844 709 ; C -1 ; WX 869 ; N onequarter ; B 61 -20 849 709 ; C -1 ; WX 869 ; N threequarters ; B 16 -20 849 709 ; C -1 ; WX 278 ; N iacute ; B 65 0 274 740 ; C -1 ; WX 667 ; N Abreve ; B 17 0 653 931 ; C -1 ; WX 500 ; N kcommaaccent ; B 58 -285 502 729 ; C -1 ; WX 778 ; N Omacron ; B 38 -23 742 900 ; C -1 ; WX 222 ; N imacron ; B -16 0 231 701 ; C -1 ; WX 556 ; N emacron ; B 40 -23 513 701 ; C -1 ; WX 556 ; N amacron ; B 42 -23 535 701 ; C -1 ; WX 278 ; N tcommaaccent ; B 14 -285 254 668 ; C -1 ; WX 500 ; N ydieresis ; B 20 -218 478 715 ; C -1 ; WX 500 ; N zdotaccent ; B 31 0 457 716 ; C -1 ; WX 500 ; N zcaron ; B 31 0 457 741 ; C -1 ; WX 500 ; N zacute ; B 31 0 457 740 ; C -1 ; WX 500 ; N yacute ; B 20 -218 478 740 ; C -1 ; WX 556 ; N uhungarumlaut ; B 65 -23 530 740 ; C -1 ; WX 556 ; N eth ; B 36 -23 510 743 ; C -1 ; WX 556 ; N uring ; B 65 -23 482 754 ; C -1 ; WX 778 ; N Ocircumflex ; B 38 -23 742 940 ; C -1 ; WX 333 ; N commaaccent ; B 116 -285 216 -60 ; C -1 ; WX 737 ; N copyright ; B -13 -22 751 742 ; C -1 ; WX 737 ; N registered ; B -13 -22 751 742 ; C -1 ; WX 667 ; N Acircumflex ; B 17 0 653 940 ; C -1 ; WX 278 ; N idieresis ; B 3 0 269 708 ; C -1 ; WX 489 ; N lozenge ; B 16 0 462 744 ; C -1 ; WX 711 ; N Delta ; B 10 0 701 729 ; C -1 ; WX 548 ; N notequal ; B 32 -25 516 486 ; C -1 ; WX 542 ; N radical ; B 7 -36 512 913 ; C -1 ; WX 667 ; N Agrave ; B 17 0 653 939 ; C -1 ; WX 667 ; N Aacute ; B 17 0 653 939 ; C -1 ; WX 584 ; N lessequal ; B 45 -11 534 639 ; C -1 ; WX 584 ; N greaterequal ; B 45 -11 534 639 ; C -1 ; WX 584 ; N logicalnot ; B 40 86 544 375 ; C -1 ; WX 711 ; N summation ; B 17 -97 694 760 ; C -1 ; WX 490 ; N partialdiff ; B 22 -15 458 750 ; C -1 ; WX 722 ; N Ncommaaccent ; B 76 -285 646 729 ; C -1 ; WX 556 ; N dcroat ; B 26 -23 557 729 ; C -1 ; WX 260 ; N brokenbar ; B 100 -212 160 729 ; C -1 ; WX 556 ; N Lcommaaccent ; B 80 -285 533 729 ; C -1 ; WX 667 ; N Adieresis ; B 17 0 653 914 ; C -1 ; WX 556 ; N mu ; B 65 -220 544 524 ; C -1 ; WX 278 ; N .notdef ; B 191 0 191 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -36 KPX A Ccedilla -36 KPX A G -35 KPX A O -33 KPX A Odieresis -33 KPX A Q -32 KPX A T -93 KPX A U -37 KPX A Uacute -37 KPX A Ucircumflex -37 KPX A Udieresis -37 KPX A Ugrave -37 KPX A V -75 KPX A W -51 KPX A Y -99 KPX A a -4 KPX A b 4 KPX A c -11 KPX A ccedilla -10 KPX A comma 5 KPX A d -8 KPX A e -16 KPX A g -10 KPX A guillemotleft -44 KPX A guilsinglleft -40 KPX A hyphen -3 KPX A o -13 KPX A period 5 KPX A q -8 KPX A quotedblright -56 KPX A quoteright -65 KPX A t -16 KPX A u -12 KPX A v -31 KPX A w -21 KPX A y -34 KPX Aacute C -36 KPX Aacute G -35 KPX Aacute O -33 KPX Aacute Q -32 KPX Aacute T -93 KPX Aacute U -37 KPX Aacute V -75 KPX Aacute W -51 KPX Aacute Y -99 KPX Aacute a -4 KPX Aacute b 4 KPX Aacute c -11 KPX Aacute comma 5 KPX Aacute d -8 KPX Aacute e -16 KPX Aacute g -10 KPX Aacute guillemotleft -44 KPX Aacute guilsinglleft -40 KPX Aacute hyphen -3 KPX Aacute o -13 KPX Aacute period 5 KPX Aacute q -8 KPX Aacute quoteright -65 KPX Aacute t -16 KPX Aacute u -12 KPX Aacute v -31 KPX Aacute w -21 KPX Aacute y -34 KPX Acircumflex C -36 KPX Acircumflex G -35 KPX Acircumflex O -33 KPX Acircumflex Q -32 KPX Acircumflex T -93 KPX Acircumflex U -37 KPX Acircumflex V -75 KPX Acircumflex W -51 KPX Acircumflex Y -99 KPX Acircumflex comma 5 KPX Acircumflex period 5 KPX Adieresis C -36 KPX Adieresis G -35 KPX Adieresis O -33 KPX Adieresis Q -32 KPX Adieresis T -93 KPX Adieresis U -37 KPX Adieresis V -75 KPX Adieresis W -51 KPX Adieresis Y -99 KPX Adieresis a -4 KPX Adieresis b 4 KPX Adieresis c -11 KPX Adieresis comma 5 KPX Adieresis d -8 KPX Adieresis g -10 KPX Adieresis guillemotleft -44 KPX Adieresis guilsinglleft -40 KPX Adieresis hyphen -3 KPX Adieresis o -13 KPX Adieresis period 5 KPX Adieresis q -8 KPX Adieresis quotedblright -56 KPX Adieresis quoteright -65 KPX Adieresis t -16 KPX Adieresis u -12 KPX Adieresis v -31 KPX Adieresis w -21 KPX Adieresis y -34 KPX Agrave C -36 KPX Agrave G -35 KPX Agrave O -33 KPX Agrave Q -32 KPX Agrave T -93 KPX Agrave U -37 KPX Agrave V -75 KPX Agrave W -51 KPX Agrave Y -99 KPX Agrave comma 5 KPX Agrave period 5 KPX Aring C -36 KPX Aring G -35 KPX Aring O -33 KPX Aring Q -32 KPX Aring T -93 KPX Aring U -37 KPX Aring V -75 KPX Aring W -51 KPX Aring Y -99 KPX Aring a -4 KPX Aring b 4 KPX Aring c -11 KPX Aring comma 5 KPX Aring d -8 KPX Aring e -16 KPX Aring g -10 KPX Aring guillemotleft -44 KPX Aring guilsinglleft -40 KPX Aring hyphen -3 KPX Aring o -13 KPX Aring period 5 KPX Aring q -8 KPX Aring quotedblright -56 KPX Aring quoteright -65 KPX Aring t -16 KPX Aring u -12 KPX Aring v -31 KPX Aring w -21 KPX Aring y -34 KPX Atilde C -36 KPX Atilde G -35 KPX Atilde O -33 KPX Atilde Q -32 KPX Atilde T -93 KPX Atilde U -37 KPX Atilde V -75 KPX Atilde W -51 KPX Atilde Y -99 KPX Atilde comma 5 KPX Atilde period 5 KPX B A -21 KPX B AE -21 KPX B Aacute -21 KPX B Acircumflex -21 KPX B Adieresis -21 KPX B Aring -21 KPX B Atilde -21 KPX B O -7 KPX B OE -5 KPX B Oacute -7 KPX B Ocircumflex -7 KPX B Odieresis -7 KPX B Ograve -7 KPX B Oslash -1 KPX B V -41 KPX B W -25 KPX B Y -44 KPX C A -32 KPX C AE -33 KPX C Aacute -32 KPX C Adieresis -32 KPX C Aring -32 KPX C H -12 KPX C K -10 KPX C O -8 KPX C Oacute -8 KPX C Odieresis -8 KPX Ccedilla A -31 KPX D A -42 KPX D Aacute -42 KPX D Acircumflex -42 KPX D Adieresis -42 KPX D Agrave -42 KPX D Aring -42 KPX D Atilde -42 KPX D J -5 KPX D T -45 KPX D V -51 KPX D W -29 KPX D X -53 KPX D Y -63 KPX F A -69 KPX F Aacute -69 KPX F Acircumflex -69 KPX F Adieresis -69 KPX F Agrave -69 KPX F Aring -69 KPX F Atilde -69 KPX F J -51 KPX F O -22 KPX F Odieresis -22 KPX F a -33 KPX F aacute -33 KPX F adieresis -33 KPX F ae -29 KPX F aring -33 KPX F comma -108 KPX F e -24 KPX F eacute -24 KPX F hyphen -14 KPX F i -10 KPX F j -12 KPX F o -21 KPX F oacute -21 KPX F odieresis -21 KPX F oe -23 KPX F oslash -21 KPX F period -108 KPX F r -35 KPX F u -33 KPX G A -6 KPX G AE -3 KPX G Aacute -6 KPX G Acircumflex -6 KPX G Adieresis -6 KPX G Agrave -6 KPX G Aring -6 KPX G Atilde -6 KPX G T -44 KPX G V -50 KPX G W -28 KPX G Y -62 KPX J A -32 KPX J AE -31 KPX J Adieresis -32 KPX J Aring -32 KPX K C -51 KPX K G -51 KPX K O -48 KPX K OE -45 KPX K Oacute -48 KPX K Odieresis -48 KPX K S -38 KPX K T 20 KPX K a -11 KPX K adieresis -11 KPX K ae -7 KPX K aring -11 KPX K e -32 KPX K hyphen -47 KPX K o -29 KPX K oacute -29 KPX K odieresis -29 KPX K u -19 KPX K udieresis -19 KPX K y -62 KPX L A 17 KPX L AE 20 KPX L Aacute 17 KPX L Adieresis 17 KPX L Aring 17 KPX L C -41 KPX L Ccedilla -37 KPX L G -42 KPX L O -41 KPX L Oacute -41 KPX L Ocircumflex -41 KPX L Odieresis -41 KPX L Ograve -41 KPX L Otilde -41 KPX L S -19 KPX L T -105 KPX L U -35 KPX L Udieresis -35 KPX L V -105 KPX L W -68 KPX L Y -121 KPX L hyphen -125 KPX L quotedblright -141 KPX L quoteright -149 KPX L u -7 KPX L udieresis -7 KPX L y -56 KPX N A -9 KPX N AE -6 KPX N Aacute -9 KPX N Adieresis -9 KPX N Aring -9 KPX N C -3 KPX N Ccedilla -3 KPX N G -2 KPX N O 0 KPX N Oacute 0 KPX N Odieresis 0 KPX N a -5 KPX N aacute -5 KPX N adieresis -5 KPX N ae -2 KPX N aring -5 KPX N comma -7 KPX N e 0 KPX N eacute 0 KPX N o 2 KPX N oacute 2 KPX N odieresis 2 KPX N oslash 4 KPX N period -7 KPX N u 0 KPX N udieresis 0 KPX O A -35 KPX O AE -39 KPX O Aacute -35 KPX O Adieresis -35 KPX O Aring -35 KPX O T -42 KPX O V -45 KPX O W -23 KPX O X -46 KPX O Y -59 KPX Oacute A -35 KPX Oacute T -42 KPX Oacute V -45 KPX Oacute W -23 KPX Oacute Y -59 KPX Ocircumflex T -42 KPX Ocircumflex V -45 KPX Ocircumflex Y -59 KPX Odieresis A -35 KPX Odieresis T -42 KPX Odieresis V -45 KPX Odieresis W -23 KPX Odieresis X -46 KPX Odieresis Y -59 KPX Ograve T -42 KPX Ograve V -45 KPX Ograve Y -59 KPX Oslash A -33 KPX Otilde T -42 KPX Otilde V -45 KPX Otilde Y -59 KPX P A -78 KPX P AE -86 KPX P Aacute -78 KPX P Adieresis -78 KPX P Aring -78 KPX P J -78 KPX P a -28 KPX P aacute -28 KPX P adieresis -28 KPX P ae -24 KPX P aring -28 KPX P comma -135 KPX P e -31 KPX P eacute -31 KPX P hyphen -40 KPX P o -27 KPX P oacute -27 KPX P odieresis -27 KPX P oe -28 KPX P oslash -27 KPX P period -135 KPX R C -16 KPX R Ccedilla -16 KPX R G -15 KPX R O -13 KPX R OE -11 KPX R Oacute -13 KPX R Odieresis -13 KPX R T -23 KPX R U -17 KPX R Udieresis -17 KPX R V -39 KPX R W -27 KPX R Y -43 KPX R a -15 KPX R aacute -15 KPX R adieresis -15 KPX R ae -12 KPX R aring -15 KPX R e -12 KPX R eacute -12 KPX R hyphen -2 KPX R o -9 KPX R oacute -9 KPX R odieresis -9 KPX R oe -11 KPX R u -9 KPX R uacute -9 KPX R udieresis -9 KPX R y -8 KPX S A -22 KPX S AE -22 KPX S Aacute -22 KPX S Adieresis -22 KPX S Aring -22 KPX S T -28 KPX S V -42 KPX S W -28 KPX S Y -48 KPX S t -3 KPX T A -95 KPX T AE -97 KPX T Aacute -95 KPX T Acircumflex -95 KPX T Adieresis -95 KPX T Agrave -95 KPX T Aring -95 KPX T Atilde -95 KPX T C -44 KPX T G -45 KPX T J -100 KPX T O -42 KPX T OE -35 KPX T Oacute -42 KPX T Ocircumflex -42 KPX T Odieresis -42 KPX T Ograve -42 KPX T Oslash -41 KPX T Otilde -42 KPX T S -24 KPX T V 12 KPX T W 16 KPX T Y 20 KPX T a -100 KPX T ae -97 KPX T c -90 KPX T colon -133 KPX T comma -100 KPX T e -95 KPX T g -89 KPX T guillemotleft -121 KPX T guilsinglleft -117 KPX T hyphen -77 KPX T i -3 KPX T j -5 KPX T o -92 KPX T oslash -87 KPX T period -100 KPX T r -92 KPX T s -92 KPX T semicolon -129 KPX T u -91 KPX T v -95 KPX T w -93 KPX T y -100 KPX U A -36 KPX U AE -39 KPX U Aacute -36 KPX U Acircumflex -36 KPX U Adieresis -36 KPX U Aring -36 KPX U Atilde -36 KPX U comma -27 KPX U m -4 KPX U n -4 KPX U p 3 KPX U period -25 KPX U r -4 KPX Uacute A -36 KPX Uacute comma -27 KPX Uacute m -4 KPX Uacute n -4 KPX Uacute p 3 KPX Uacute period -25 KPX Uacute r -4 KPX Ucircumflex A -36 KPX Udieresis A -36 KPX Udieresis b 3 KPX Udieresis comma -27 KPX Udieresis m -4 KPX Udieresis n -4 KPX Udieresis p 3 KPX Udieresis period -25 KPX Udieresis r -4 KPX Ugrave A -36 KPX V A -71 KPX V AE -78 KPX V Aacute -71 KPX V Acircumflex -71 KPX V Adieresis -71 KPX V Agrave -71 KPX V Aring -71 KPX V Atilde -71 KPX V C -43 KPX V G -42 KPX V O -40 KPX V Oacute -40 KPX V Ocircumflex -40 KPX V Odieresis -40 KPX V Ograve -40 KPX V Oslash -33 KPX V Otilde -40 KPX V S -35 KPX V T 15 KPX V a -59 KPX V ae -55 KPX V colon -66 KPX V comma -89 KPX V e -57 KPX V g -50 KPX V guillemotleft -83 KPX V guilsinglleft -80 KPX V hyphen -38 KPX V i -5 KPX V o -54 KPX V oslash -50 KPX V period -89 KPX V r -42 KPX V semicolon -66 KPX V u -41 KPX V y -20 KPX W A -50 KPX W AE -56 KPX W Aacute -50 KPX W Acircumflex -50 KPX W Adieresis -50 KPX W Agrave -50 KPX W Aring -50 KPX W Atilde -50 KPX W C -23 KPX W G -22 KPX W O -20 KPX W Oacute -20 KPX W Ocircumflex -20 KPX W Odieresis -20 KPX W Ograve -20 KPX W Oslash -13 KPX W Otilde -20 KPX W S -24 KPX W T 19 KPX W a -38 KPX W ae -34 KPX W colon -52 KPX W comma -56 KPX W e -32 KPX W g -25 KPX W guillemotleft -58 KPX W guilsinglleft -54 KPX W hyphen -13 KPX W i -1 KPX W o -29 KPX W oslash -25 KPX W period -56 KPX W r -28 KPX W semicolon -53 KPX W u -28 KPX W y -6 KPX X C -48 KPX X O -45 KPX X Odieresis -45 KPX X Q -44 KPX X a -15 KPX X e -36 KPX X hyphen -51 KPX X o -33 KPX X u -24 KPX X y -61 KPX Y A -96 KPX Y AE -103 KPX Y Aacute -96 KPX Y Acircumflex -96 KPX Y Adieresis -96 KPX Y Agrave -96 KPX Y Aring -96 KPX Y Atilde -96 KPX Y C -58 KPX Y G -58 KPX Y O -56 KPX Y Oacute -56 KPX Y Ocircumflex -56 KPX Y Odieresis -56 KPX Y Ograve -56 KPX Y Oslash -54 KPX Y Otilde -56 KPX Y S -41 KPX Y T 23 KPX Y a -88 KPX Y ae -84 KPX Y colon -87 KPX Y comma -111 KPX Y e -89 KPX Y g -83 KPX Y guillemotleft -123 KPX Y guilsinglleft -119 KPX Y hyphen -84 KPX Y i 3 KPX Y o -86 KPX Y oslash -82 KPX Y p -54 KPX Y period -111 KPX Y semicolon -88 KPX Y u -63 KPX Y v -36 KPX Z v -33 KPX Z y -38 KPX a j -4 KPX a quoteright -23 KPX a v -21 KPX a w -13 KPX a y -26 KPX aacute v -21 KPX aacute w -13 KPX aacute y -26 KPX adieresis v -21 KPX adieresis w -13 KPX adieresis y -26 KPX ae v -16 KPX ae w -10 KPX ae y -20 KPX agrave v -21 KPX agrave w -13 KPX agrave y -26 KPX aring v -21 KPX aring w -13 KPX aring y -26 KPX b v -11 KPX b w -3 KPX b y -15 KPX c h 1 KPX c k 7 KPX comma one -100 KPX comma quotedblright -41 KPX comma quoteright -50 KPX e quoteright -18 KPX e t -10 KPX e v -15 KPX e w -9 KPX e x -27 KPX e y -19 KPX eacute v -15 KPX eacute w -9 KPX eacute y -19 KPX ecircumflex v -15 KPX ecircumflex w -9 KPX ecircumflex y -19 KPX eight four 1 KPX eight one -48 KPX eight seven -33 KPX f a -9 KPX f aacute -9 KPX f adieresis -9 KPX f ae -5 KPX f aring -9 KPX f e -15 KPX f eacute -15 KPX f f 22 KPX f i -2 KPX f j -4 KPX f l -3 KPX f o -10 KPX f oacute -10 KPX f odieresis -10 KPX f oe -12 KPX f oslash -9 KPX f quoteright 0 KPX f s 0 KPX f t 24 KPX five four 1 KPX five one -76 KPX five seven -26 KPX four four 5 KPX four one -84 KPX four seven -56 KPX g a -5 KPX g adieresis -5 KPX g ae -1 KPX g aring -5 KPX g e 0 KPX g eacute 0 KPX g l 0 KPX g oacute 3 KPX g odieresis 3 KPX g r 0 KPX guillemotright A -50 KPX guillemotright AE -54 KPX guillemotright Aacute -50 KPX guillemotright Adieresis -50 KPX guillemotright Aring -50 KPX guillemotright T -126 KPX guillemotright V -93 KPX guillemotright W -66 KPX guillemotright Y -133 KPX guilsinglright A -44 KPX guilsinglright AE -48 KPX guilsinglright Aacute -44 KPX guilsinglright Adieresis -44 KPX guilsinglright Aring -44 KPX guilsinglright T -121 KPX guilsinglright V -88 KPX guilsinglright W -60 KPX guilsinglright Y -128 KPX h quoteright -15 KPX h y -18 KPX hyphen A -7 KPX hyphen AE -11 KPX hyphen Aacute -7 KPX hyphen Adieresis -7 KPX hyphen Aring -7 KPX hyphen T -80 KPX hyphen V -46 KPX hyphen W -19 KPX hyphen Y -92 KPX i T -7 KPX i j -3 KPX k a -2 KPX k aacute -2 KPX k adieresis -2 KPX k ae 2 KPX k aring -2 KPX k comma 0 KPX k e -21 KPX k eacute -21 KPX k g -16 KPX k hyphen -41 KPX k o -19 KPX k oacute -19 KPX k odieresis -19 KPX k period 0 KPX k s -3 KPX k u -11 KPX k udieresis -6 KPX l v 0 KPX l y -5 KPX m p 5 KPX m v -13 KPX m w -7 KPX m y -18 KPX n T -96 KPX n p 5 KPX n quoteright -14 KPX n v -13 KPX n w -7 KPX n y -18 KPX nine four -3 KPX nine one -43 KPX nine seven -37 KPX o T -99 KPX o quoteright -21 KPX o t -10 KPX o v -18 KPX o w -10 KPX o x -27 KPX o y -22 KPX oacute v -18 KPX oacute w -10 KPX oacute y -22 KPX ocircumflex t -10 KPX odieresis t -10 KPX odieresis v -18 KPX odieresis w -10 KPX odieresis x -27 KPX odieresis y -22 KPX ograve v -18 KPX ograve w -10 KPX ograve y -22 KPX one comma -74 KPX one eight -65 KPX one five -67 KPX one four -81 KPX one nine -65 KPX one one -118 KPX one period -74 KPX one seven -90 KPX one six -62 KPX one three -67 KPX one two -69 KPX one zero -62 KPX p t -4 KPX p y -16 KPX period one -101 KPX period quotedblright -41 KPX period quoteright -51 KPX q c 8 KPX q u 4 KPX quotedblbase A 30 KPX quotedblbase AE 30 KPX quotedblbase T -75 KPX quotedblbase V -69 KPX quotedblbase W -34 KPX quotedblbase Y -91 KPX quotedblleft A -52 KPX quotedblleft AE -64 KPX quotedblleft Aacute -52 KPX quotedblleft Adieresis -52 KPX quotedblleft Aring -52 KPX quotedblleft T 9 KPX quotedblleft V 15 KPX quotedblleft W 27 KPX quotedblleft Y 5 KPX quotedblright A -53 KPX quotedblright AE -66 KPX quotedblright Aacute -53 KPX quotedblright Adieresis -53 KPX quotedblright Aring -53 KPX quotedblright T 11 KPX quotedblright V 15 KPX quotedblright W 26 KPX quotedblright Y 7 KPX quoteleft A -67 KPX quoteleft AE -79 KPX quoteleft Aacute -67 KPX quoteleft Adieresis -67 KPX quoteleft Aring -67 KPX quoteleft T -5 KPX quoteleft V 0 KPX quoteleft W 12 KPX quoteleft Y -9 KPX quoteright A -72 KPX quoteright AE -85 KPX quoteright Aacute -72 KPX quoteright Adieresis -72 KPX quoteright Aring -72 KPX quoteright comma -60 KPX quoteright d -20 KPX quoteright o -26 KPX quoteright period -60 KPX quoteright r -18 KPX quoteright s -18 KPX quoteright t -7 KPX quoteright v -2 KPX quoteright w 2 KPX quoteright y -6 KPX r a -5 KPX r aacute -5 KPX r acircumflex -5 KPX r adieresis -5 KPX r ae -1 KPX r agrave -5 KPX r aring -5 KPX r c -6 KPX r ccedilla -9 KPX r colon -22 KPX r comma -69 KPX r d -1 KPX r e -11 KPX r eacute -11 KPX r ecircumflex -11 KPX r egrave -11 KPX r f 26 KPX r g -4 KPX r h 0 KPX r hyphen -47 KPX r i 1 KPX r j 0 KPX r k 6 KPX r l 1 KPX r m 0 KPX r n 0 KPX r o -6 KPX r oacute -6 KPX r ocircumflex -6 KPX r odieresis -6 KPX r oe -8 KPX r ograve -6 KPX r oslash -6 KPX r p 8 KPX r period -69 KPX r q -3 KPX r quoteright 1 KPX r r 0 KPX r s 4 KPX r semicolon -22 KPX r t 28 KPX r u 2 KPX r v 29 KPX r w 31 KPX r x 20 KPX r y 24 KPX r z 9 KPX s quoteright -22 KPX s t -3 KPX seven colon -77 KPX seven comma -119 KPX seven eight -28 KPX seven five -30 KPX seven four -93 KPX seven one -53 KPX seven period -119 KPX seven seven -4 KPX seven six -40 KPX seven three -23 KPX seven two -28 KPX six four 1 KPX six one -43 KPX six seven -30 KPX t S -8 KPX t a -1 KPX t aacute -1 KPX t adieresis -1 KPX t ae 2 KPX t aring -1 KPX t colon -28 KPX t e -14 KPX t eacute -14 KPX t h -3 KPX t o -12 KPX t oacute -12 KPX t odieresis -12 KPX t quoteright -1 KPX t semicolon -28 KPX three four -2 KPX three one -49 KPX three seven -33 KPX two four -37 KPX two one -36 KPX two seven -25 KPX u quoteright -8 KPX v a -18 KPX v aacute -18 KPX v acircumflex -18 KPX v adieresis -18 KPX v ae -14 KPX v agrave -18 KPX v aring -18 KPX v atilde -18 KPX v c -16 KPX v colon -23 KPX v comma -69 KPX v e -21 KPX v eacute -21 KPX v ecircumflex -21 KPX v egrave -21 KPX v g -14 KPX v hyphen -12 KPX v l 0 KPX v o -17 KPX v oacute -17 KPX v odieresis -17 KPX v ograve -17 KPX v oslash -17 KPX v period -69 KPX v s -9 KPX v semicolon -23 KPX w a -15 KPX w aacute -15 KPX w acircumflex -15 KPX w adieresis -15 KPX w ae -11 KPX w agrave -15 KPX w aring -15 KPX w atilde -15 KPX w c -7 KPX w colon -23 KPX w comma -50 KPX w e -12 KPX w eacute -12 KPX w ecircumflex -12 KPX w egrave -12 KPX w g -6 KPX w hyphen -1 KPX w l 0 KPX w o -9 KPX w oacute -9 KPX w odieresis -9 KPX w ograve -9 KPX w oslash -6 KPX w period -50 KPX w s -5 KPX w semicolon -23 KPX x a -17 KPX x c -23 KPX x e -28 KPX x eacute -28 KPX x o -25 KPX x q -20 KPX y a -22 KPX y aacute -22 KPX y acircumflex -22 KPX y adieresis -22 KPX y ae -18 KPX y agrave -22 KPX y aring -22 KPX y atilde -22 KPX y c -19 KPX y colon -27 KPX y comma -70 KPX y e -24 KPX y eacute -24 KPX y ecircumflex -24 KPX y egrave -24 KPX y g -17 KPX y hyphen -14 KPX y l -4 KPX y o -20 KPX y oacute -20 KPX y odieresis -20 KPX y ograve -20 KPX y oslash -19 KPX y period -70 KPX y s -12 KPX y semicolon -27 KPX zero four -2 KPX zero one -46 KPX zero seven -39 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n019003l.pfb0000644000077100007710000010627207260330347015427 0ustar fjffjf00000000000000]%!PS-AdobeFont-1.0: NimbusSanL-Regu 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Sans L Regular) readonly def /FamilyName (Nimbus Sans L) readonly def /Weight (Regular) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -151 def /UnderlineThickness 50 def end readonly def /FontName /NimbusSanL-Regu def /PaintType 0 def /WMode 0 def /FontBBox {-174 -285 1001 953} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020902 def currentdict end currentfile eexec 5 `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>nc5+\3v,I5L:vL$l۬:s" aS㘧Ĝ;@QcIzL6kGy姽򱠧 裳ZfcY 0@\d"CK# ْ:ˣntsgAhx/R e'R>{q¹ñ'XJ<2u_l1H5GoqAjL.=1@눒u:lN:ݶoWoO)zX&wf\RsR7Np¢_[ d+m)f4dIm4b})yVE[ C1 +Ny<:Pa 4cfϤl4cÄchhUnߔDJ,kMjȍr6qtLAc$3TQ2ˑ2xgt7QlFx 3A4IF;@4i]=UW2}_SE img@H K,|zlmr+EiP~W439 >P*UzlW?gf^bU:8bnsBγ;Ldb;x+[D*@d?깙i~ӽZ䖆c&Cٛp3ڀDOɮhra.j3%*QΩ=ͽpx P)x;\: CevT ??GHBo*18) 80.#`lY!d;0uTeAr9Xh:m@O '̂ytnn h ۘ@mbF- LRPͨ26af!.;B*; GP'K(wʞ?Y h ^f(9Ė^}OçzǏ€_F25f rƮvm,Gy%M͐䠉q>f]7^pCQz4c#P񦸶WMNaύte·j;h쌞]XQ_@쒓۷D[m9). )C:<:(*ao x3p1rPa|0͉RT^󀕍I ( n+!c@YSsU#;dw |m7&tafV/ڻaŗWEUqZ^Y+u ].#i}, }Q$H`Dկ\,. i+*N;SDDŽ;HvFκ֒F*-o|AƊ&z]m!M tGok.5[Nɗcw5`{|}Iͩ*⤟Τ: sŘ2}` :&{Z;uUb Kw+V7S >\͈E ^OߚiG-x @faF%SUFX,.q2Szb co#OK3S{d}q@o9/ukp#"肥g) 5jh9򕜧5"Sv'\_F7E y[;N`=!1QK_9&Gww 87eSxZQ̒D"sq4'ٯiAoQ Q*{|J;v!hTҘ? Wc$D8 E_}cj٣ u >ΗskXq0m\'\9 @#[_@P(cq UBu3)vV޶ _TSZs56Y=] |c B( >s2:|AӴpdŏ/'"K7$͈֑QDAg`R'mc`aM1UmI0eg ,'Cʉ,g`O8}n0Hy%򞫴ax5"P ~ '8̭^ifjlپ@ v4!w ;[D %i>Ju[(Q*İg i4>ǔBv/QZb e`5pᱵ qX'qXnU4G Mx;{؆M9cB=GLQ_9&퐯 0^8jK|}s~ :hk8WX'KlL4a{6-p;Ok5i)̃"Ql1 >ٿsCG^^.v$;! c9`Ⓦ,9p@jht\0 goFGɠ68urR+ޣ 1Ah2l?mSM14y7@zs5NFKՋbИ46h[ ,=j[Ϳ-gQ^>wyu._!#~& UI ḫ=?A8I7-pƕzAܹQ@†ZB[v.&\ݘbU1t;:>߫=ʯ % ҇^lā}sPF>d_v߃DҾAS@\E ܠ`莟5NyƷ IHweZ Н:F,\>)b^+ 0s/B'n] dk{^^H/c |sw!a,L n?=9-zDȋي0b͘p= NWx1($o޲yS(`Q9X}R+LxpdnP'-}p-s> _zY@/y%ҭ"]Q%I9>S9ۊ< @ qY s X 'Wé &|B1i|/7g+⿎&}QU%PqNu)ED;iN/nd!0x4>U;_-^A|p-`iy.Tޏ|q2+wY)$bdSO4 ꢇ{X>l)БzD'(&"lvDX]o͓V2] txű.n /%Sz:(:oo%M*tg"6a D&;$U?Voe H !> U49UN% Hd!$)c ,7_GR+:Ǭ~Au+I .|4նPޣx06ǫi| l,iM.l[NzӼ^f$2UCҀ$FfV"ɶ[HPUk;"=(qV&ׯ`/枺ҋ=TJrn7XU{KFډ;dL2/"ĻL f\={:Wɮd8Ma˷Hz}(9@v _[DlF;ZAgʜs?Ўr;|iЖce ~E ;t)Ϯ}Ɛ[*CRH4Ot]`kt-5*gi b\}_mぇ.(?T 5p# jh`}KpSE;SN&qY*df<@)oh-~0~(҃u柔'.1ڍ5;"\ǻFe>X$KA9A:?ؤ'ͷf ݬUNZn%']`^b.V1j\pJIBm(Y4]6V|oݻ,ݩ3HI'9jDFԧYH( L;7C}˱H!b`ihڗj]Բ7<cC@Em"fUK"<ƨf ջKj.[`9ft_bYij^Cu@F@ٓ|pnBY.;3&-@2 peSCx-9è+NU ?f/xFG9)R|bz?,/Ѽ 1^$qk sSsՙfsQG_W*C86`S48wqmol~T&۷ W"-JAsa m`5;F(@7:|Owa6FBܮa6]}~kn>J`1O1Ձ#M?)_f0ƽj4lÀ :eZ50p;LPE1xYpԳ,$h/7Oq6۠3y1*O/ӗwr$/-GGJ`s+zNj%+WJtլn30EJ<\ˉI%2]-Q٤ƴn 6V򒊲u|3gB_)oH?Cվ]bnw)À[u31xSIʃ7Gh;w?%BW5pEm C^YTP\u`p&ҳv .F[܅F5馉$'SPo x!D,Dž-z߽QK~IfEHRcT؈B{eQ&!۫l. 8xZ{ Z:?×)Y1+7liSZs:ؘ0LnC1oErU͆ ?Ƭ6p٤ȶu 5%swKW&ʦ[YZKf `ґ>N2O^[bUQA^) j-Pm'bGeؙqU4 dGM]xq!9';]d3u2SO|P*7OCڡr9: G$/6T ϹVOf蹓ap 9pd&!ne@բ`,lck(<&.; Mz>XL΍dc3fEs+L2zIAc~ PP4ˈGn2* SvZZU"њ-^B!UZ.m ܫ{XZaRQs1&pky)xކ.I;zևKN=,;!aoy=1}f`㱊ErWJ;!w?>߮ ԶmQt0 a隲YykJ RpH]uAzDXdI7Z`p^nf]RF>6'gѩO  ^ hQK"h?C L"b挧*$5xtI}QvT%uvU2kc^59u]Qk!x ʾEf6lJ?.,e/X V*Dƥ9e07O+n2Fy_OV9 lYW5=`i++n:IAT?c{Dv~]1x3WFO-*M{튡d>M/7>I054%-0EYXП6%7Uܕ!>!2m*EQWQ~ Աgxg^XN`V;hc0%kFsC0ﲻfYu=41P{LDY`دi[H8N )KW6v;4oLpz\w{soGUVq]0QrɤU*ypA[4cm*FxÙhRG5]%5)XZ<* PQL|Ƞ`M}%}d}"c_ ؎ B1$59nm#QNroAz_%N)ϔaq\ûa vLA1WLUƼUspn1 T6$#Nwʬd"Y8yGzQVu]7˴/8W% ?w.j HRr Wdr׫fI#3p[wERz^3i 5IYFE]1~nCRY.Z;lKIDf(ٞ$#MdE7 ? sq0@%y@?Z^ZAלlʈS m6hDP.Od, 4%oxԔrHg5.R%&T4C~Z"B^#dUIB*O7.]}# lG3/LZ@,y k|_Xݶ5+F 9}EM;,֐s!T`T~AmU!7n0?Yy<ۓ)^Nvb1M{`ů)KbNzR8#iW)9U8ۨ>f,$}YQb~gcX,ˌ5닪 O-qd@AƙۭzեK3>GQ1#h^D>Fi2*_H@NjIlJc:Sp7$\ >[ξ3x `^]l4߹c:Iv&!J.m&5VZK5&yq)걄 "ʿi@pbPv?o?-1ps6]n# &3o;,3_@0kO{gK@tVʍ֟Q>+A+fGo|$hҭ+X@(Mj8dl$qJR#~: 8PDhf9EPLo C|{Fr+wE@z55Bz,1)ʠn[pjuruHڸ}ZOmz&UϨd(ovn'yAWK K4 0+#3_JDζvWFw[+ 8~AU:F[  HGq#‹吗U$@]+ Gǻ2`m_Ot7ō-ڼ|GS+Kk3)5 BFCJ`G~ʡ.!ꆨ.aUpOe"U.(Čvcn0 eUzO< 8KXн,ll@;gL/9:yֵ;m$$aJ+/l: <ς!.*E<6s;P>e HN&na(9U1]už=XV<_wI6g+ܛ56R39AE| -È63mpfZ6SY6 kOn?yK$S =JWma'%NI Ź&Sg!):+ٓ9A' nnj% bHvܧ&QyT/w?$@ "kӦ0plBwadO%z#XȽ9ƲvH'"$Yh9 Tg&ZOYT*HX)+}/'-:9%(^O4wI%IQ>0L$̬%n,pb#Rionp;*xPOy0ϼ[j$vL 1hSDk! y)/z2jo( C$ʆVVsb)OQ>TOdGDqG5里}~+fT `ŽX^H}RPu М.’L դj#SĚe5K='z>\.QoK,-@,àiCBd΂QW*g=&4N, aD¯ &R+K_كd5|~̠Ğ qO۵VpHC0ܷkF>aצT:-x[FH e%WvR?(imK~0誁1ܜTZ%cuF3lwZ‹랼~]>n|$a1pj2 ߟR-&Bձx ^Ga0$tr{HU%fIZO5Sz#C} A_`u!.>08/l5nk@o_酭JGX{K~l0oQNvg(E*ZٱSdLbU7?h{4iĔ(4Y8M,A4#gdm_ÌNzNW.BӻyBiA2\#J"ָڴ,t.`d(~тE)TxV)`!|2\3DHX֘ k!u~4f{JCVY) -~ʓjV9]ZyGAA8\ +mOyz]ڰv@{F W ?ʢTY7] 7#k?՚y{,V"'u:Hq)?a4j:`cYdY4IVuKwӃko7 g|EhxL]h Og -W^\Oa$|%$vVFCk]^:JϡłF##cSMp 7|9 gg}DfE!-MoH֣K߬aO1>yvIA|[V&KlY{PZ q,2_{(&T (S 4UsED%q&Ž­ uąΧN鎕wޒ  @#^ht_sVT䇰q4P%)fWowp;S^vz59?i+zho֬"2O..2(~.2q qST(~(,"l#v(%%!nx+/ȍܧ5@r\W.nT^33ϚRBIT_=@TfZB9:XԻ.w60e\am5߅z*'+V~N 9.`q`z=7 \AmY ۪3 jwN$DR32Mm MrSUsz?Tst%a-)hy!w`:/k`_x۹TeU2 3=1l vaaتL]`T~~%p5IX^$]~尨MC8%w 16hLț+017͋5Sm-0~Nx@AbR?SJ?&·j!`t F.1eVwnnDȜS˳r0at+'oQn03mhʥ1YȚHb\IKdi}Ԗ@&'iyzUTH.‡x7oϐl'ɴUBׇ 1]з* k(EՉyiXJ?lG:[ I=buմr E/^)>Vzo] zڃ(b砾mzpbk2>UC24ȟZwAP!al '闋7׈ 4ػ@gv M'lUdE!XN) sc!{XxBeCw=T;I+p I  YX5p`v/L@0Wm"zB.;Wxu)TT{G}c~ 8%)ɓ,KY]k̴q86}i ǁSS)%\?wIFnuzcX.S׮#9>I1p$wWe6[_e̼.$23M}L$SӮ"6b >ɦYw7H᥎|QdNS.r`Jw\Eix !۲ZfA).L3DaPc:)Q km+.ʮ阉&gZb.~3=^Di Zʄ"0tro++S}wc cWlvܻϤV/e‰ A=Kn7+@!!RB'Fm:!CB=lZZƒt0:f @c,90-];~<*& H? UI'OSv Aff`2U*jߨ]Fx(F#'F8 A; 0S3ȱ@'7?s|&TN\RfU mȯ+,,UT []a,Dv棺<ƈ3M(UfC߸Jl IkѨX]Rap|Պ-۠3y;rC\:@W͔lpWNM#M#[_K#+F%i{/&كEUAB>T^yv4eyBO~&Mr:EI[Q-3Y,ؾo /pN nh ?늺T?oj9}!j,Q29k^'vsQ^[Ӌ.dJzoUı>Z l:΀eT=~ny.xL\6 (.y??='A욾. â43S]Cxۙ.{{)ow*}eSG=vkd/Ʈ{ӔD}zԿ(šW{[\q*?Ň4a6+B>SLJizpQ< T9)vr-# $MZH%;zaa%yj?+]4(.&<岯 (~Dq>Hduij|%T+QGvLew[mQ:uy][]@aŰ n i(% .3( -1ZGm.+XP3mKg?zR-z"V|_f\v*Bf69 ;{k覊1v+p',m4ߺ`M f)o0^0A' zU-岙{IӮb(ԅ\mR9Tz({\eޯ>W3XsV~g*[EʈzP}ũNH>*x4̚\2tuRX:\-b5 %׼"Оze}q6g3nEDqIM {yPB=lF2Ƒ_~GICVn8Y[;"zDdoaAq˭$g~`=fZ"HH;4k4cL t8LfYc@G/t;w&ib).gUXJ1!~2Q`^y EZd=뭵cQmj(,W 3w}QpTmLY۟2e-05t,bm+{S(RA9t^1&Ng.`Gcη7Mӽ,j"g46}?ɸx~_CPtNK݌H뱄K]mXn7{2NniУHUc%ry0(?=XR5nN9 _$LxqS횒A-I84K6N[r^X!9Q|赚ʃR3@ ȇT2Va'(+?Lu.r7/(CPԏ=o_[]dOS3>o mA KR#9TPf7]-^TMߙ_*v;u.Z03E MƧ4}ڧ)~>v<ؗF3]AZ*m\6L1]]⮾tT7a"x4劌73b.d7ΏU/͵tؘl 8W'OVDgdнV9@B^C!yt):Vc-®&~d˺IzP\v14(D8`=u2Yi0ѫ2jX#=̄q Aq%yE9@\6餋犅̠Tȫ{_dЌPm bft2-Ma!SKH76 Ĭ-4,TK& 2Z_΋ CDL??M!7;o\o0Ldd Ny f )M8_2[Ȼ짐 34L1o! Pg{GD4L2>Ol1Oр?dTiGk2%SLX7P-hchB=F:bƓCeh8|cPwQD7 WC^޻x@`TQt}ЄKY!;jrKod0R.`4|JK5Oeikm{,;BU, Yl j|i h:xln8O3_Q Uʋv "^>O :7]=]S\5繍נp`,;vy[TZbU'Ӑ,+#1&6;- VTv^4HaQB1jzF˩rD { bM+TO|?AݗpZLJE* G&6t4UnbfjtYOuQ6ٹp';\2ikm(C?7d`T&  Nf9e{>X4xpxt-VHH`Il8  QJf'vc9YdpUE@YGa/,m:W% (5O|rkxb6E1OdЬa(Lǣ4Rʛ<͞s1c;Z$3i[Aޢ 7*΁Mς?k'0:_m"0@ڧM]N(̣Jџ[\7T|:C|n+uFgC"6swW0.ϹrR  q wBd;b­*~+D7*Z/C,'^' +[xaQn;|*S(3 dWVZB+ T2M=g"uت1NXVkƩN/ź\1HYҦB0mAcTzM D|n KH!E_<_"!RTe3xbtݸ V=x.)A6Ow(Û?/<&$ d/Ȯ[Y;oqy`K 1&=`NS {MC~1KF*^!\P^AkA ၴ,7{vRN*WݾVVUœ+ }npj1ts>3|v_6Ft-9V\{R#z7Rs5?@sTUI;7&WPs*E$7syvs0o}<gHmI3G%ʼB t5|;#)*!{ﮛSnSXz < K\~_h*2xdd`2.ل*WGw :" :ϏJBb`?{šuvZqS&\`ӻkfXbK,Xrׁ-RY~Z}-hGd*S4^;7ap|Cۓf.d;dkjkE}`a:ၮ I3PCmeU*Ovj_ ~;u0)cnKr9wxWOx(<~}a րRE贆.{T b1s%OR#J7~0{5m?">O# U|0R#8krw+z qfPR!i6-B!n|)׻zyG)km3 {뼞qra^8h⹿@nKWopUEU'Pj2:vB {U{XfYqs&Uĩf{v(/cMݒt w*MQۻbܶYC4ϔ6@L윰)DئPÔUYcͅmg~ȧxsygBȔ. Q̵<n0j{Y0a?:ƕ'J9 .KTxuOq[tؐYգ'G2aHKl"${yzF_۸]~DdsWOJn+g EA7{yU#, >+'&Յp¹}oUlMhwU}C*svR8>MY6ζpo8g6qx 6feһLmz'\_z1$XB,<`N?⸣1:VO:M;ʼnǼ~=ɗ[<6əoF%Sc>€V砄g/0"lwx> {BwCkԣ>S$Vh0)[r 6)Io;'wz6%` P}V`mֹZuMj򚺺/U%ôFWF=>?e}P3In9ZG s.]1)M\я%>+TEw/gF%cDTL Dj>_SqW!%-thsN`|FĿr{ Tg|U!`5=mQΚko;^D3V'^70<W^GfFVGڑp5Gs$R:1*t%ʐVu.qC|%+E|qLU :d,O[Kof̣=CP,!#FXqxz\<3B/͉3vqRٶ-D@w0TR miBRW0x6/#YX! %yrR/-ִh`T-DB",G6V~{­0ݺŵ^%(,}W;~W*GjY [4Q&MSHB d)m4_>Vgs` ):q|x詮D[L~ ê}A==|kelХߎ/fؼ;hm'D?R.hP/ZJ-+ C1.jad/S͡V)pQ\V&@@c2$ᚠVc\7^غMjd]ڱV(,Ukug# X1f?w}F3N)7J2Q0$ VV7͝C1V'P@KzEE˅8rUBʁ %w _QHw/Y!<_ܡڑ//.)ZxX]}ئ7c 9?'hD/] lV[R\EQ3 ǁ>υ<¾ݤ.a%,nf K1䮏Bu=u*:>$w8.,gؓ2.D^a?ˎx^8&GÝ[~871hHv@"\6A=r|UIp/^k)y8S- Ȝo{$C>]l }i3NYJށ|01b:Ɲ=?{捴8_W>$.leGqlE-]_(+#ĐFC mpa[Y~I2F;8)tKތ9c 4:_ ZfY9:?g\" ^8<7YJf*l|ZyGaS/dZU_4^G3? GҦI-֐:E~<,]ZUnM}I*e2E0fg[MuosS40b (Ѝ,iÈ0-C&ԝ(@ q` FU\jtNMĦrcQ]2 z0S:/߆0UXiB<7(Z=vĎYmP R( V=` GQDv.Kfq=A0?ׅVVO1Τ5E9u5.2tu\3LpM1c+˩:'o4l=.@d5`]ZZc7dmԷ7nbJi,+{ٵLq+~ϫkZYߴ6KN-ʞW~ɆC~ j2Ɉi)E! wԍ CiVȺ?sr_uw$n3L;@VE `r~jIn|w: ` iK{%Jø0E}1:5^{bTUv:C}VRYJlÿ́sJQ OEjz{Zx"lj58PE93vZhi:l=B2ceO2P0%M^nRc!&np]h\Evg uw/F##C[eE$dPVRJ4UD &KTt3˲IRj!u踯 = d?i@bDB'8?*UͰNPvYX8jMb.P܆&wJL), LKϙ݅Py5yQEr׆ijر) CT)nױzY۵754f?lDB7z4)龻BpF<쵻[r Fr j# C75&U |=z4 )NKCM/c<~Q8eZS`[8 BWj`hfK^ďz¡a DLou JPA-UJ`+aEȵKln@3ָ,kH` [Ԡf"AoeytExxFz_G{xQr?/b1lloJwf ihkYiCOG̾˭pn#6Q! Z/~j,ĶB`WwzM>k̰@EdpV崙Xk*Zw6DH0Cw A^ zd$/_9SL]9!ifP(/Ɖ\(ƺbf@qO6TzVXX:ÊPNPm }(ʢQ,aIX^P9 ٢63n$Pwz>#B$nd3*]|rB64ъ(A=i>`DzvWc<,A̩cɰײwOigKp70P}6% ,k_c`ڽwֈxc4mmiH(VPL ^8gmy]J5tr qi$}2ućzZ csϭZ^XԦ;Tat|Ddx/5cA#zw5 #ɮstytsvmLf5}|xűfǹ.\$ 7א: )"uugxpfb(:kN/IXhL5Gf1-z9Y Vs mpCUOlzg{Q9SN8;u|Y/*@όgJ!3v-#c Eʖi:e%X9dm?%#(18xtWm&)ڿSq{Ue{ZF冰Lz`߉mw½"[T>{! /MZ[.$roS5I\dH>'î/c{NUt?%8&!ݼޓrMcܼY(h@:|ߐ's韉ZT-xCޟ)eqozBi.cynu:c1Wn_  ; hûmD,T[:S$;VK2J01Aewt6|MASHHn[eLh~;6LpDO60%'@ <`G/eIg^%NdmF=.Hw,yQ8+q/;4P)ABt„]ڪhhADh][`b-Vϳ^ݏLdԹHP )P k^r{_FQ"nyStĞ_` FhnWAD31S XGQwn#]R5hqTmB(ڑv|Q@9͋D9\:yV[-,K .2ӁaȱUPOU$8|aæ񮔉*/P:!nI0CxY3J!^m(7Q׀ N&= #LX"%qUi MctiR{'NuQ&ŽyV)§xge/nnwMI``r+"l 7nKiJS#Q:Ej,.}ѧ*5HL 2{jMgsirHvaq[y!nnkslLtV6494ZZىFKR+rĥf.e:R|>K^h^>ѫ=9pv#5ԟq=Kg}%HWbb)'*!r W1+Ja]Sa"ȼ!C ~ 7+a p;xݴ#/#]^Ax݇We*J!OG;B @scħs6><| uig%/d܊{1kݡ ( a#K^ҜF%jx(lG+CH#ɑ%7.νw&~w+ )w"Ww:'5cc c'_G&5$E # $q;5=ψ?g;r{eLɹv_r vD,g Kxyq[+T`~EF?8=jq.ofh@wKx 7UI-12-} !CiSъW3Q"_"Z:D#~zܔ:FfO(ՏHI>ǽ0ĭmd42T)` Uv,hSZF``]8MQҟ V,reopl`}ėYs,5L*c6! huW\ ?'N'?LVXRW tQ4n8enϡaf8AcP AY5<0ON6c >]Y8 4Ԡ8B Um,0fP1 aYi;:A_2 ٮFӕXmZ6iR؅p?AO_2ŜLflڀëbI>AE,S̏0)юs'ZDaz肹ygͽ!dr*Z<ݥ !Ջ`qWnZ B5\|l5$9)2\ 6d9J?$i^(:UnPđ;l-L92  =&=aOeDa\6R} N"but4VPI\w'"DV6ԽOaWY*sb"jVP}$dQ3$Qa-EÆf#J9<}T4|e ?gxkN. rqʩKa2K?JЯv*1hS.:^wAܑ"[T¦Xː#dUyȏn9^sA#lk,Q\iRb7^/h36ƴX}6Cci{(0"^ɄfɊ`f"4/!F԰D1#fO;-^yF5k)ūfW;s a%+P#@$yݤ=Qs:jU `B8vݭ U;(U0%1ɀA2D74Rx ZA"#'HA kByeYV 41-TIG -s<q'狼ygWjA9+xZ fW2kHJ砙{\Bb\qHOδS%aݗ[!fD-"93=s(Zy % "Nn$DI}FOi'opGf;~MUDte5&(p_+aY]%v$Z0yވ%>BR2TpeS0j'g2 o\4-sX^MR[D̬yÓs\8gFҔo_u=S}c FfI6wZiXLMz)>Y9K&{NO"sݹۮ уJ0+`p/P<"@u֝7Ǜb[ dۦ-F1חMh/85HWbPc#c&MuM)6 LũC\iH)Hq+֧YcUT1M5>; vh/5i1 b{KE<\c{>zWcQ<}  dp&9Pig=ܭ-EN=ìJS:|!X:pǨ^suڏ^bu}Ѹ1̫6Bv-!2I:Fz?){@)ƋDZ[C7Ues`̣b[z `s6nfr/y9R,&%3=phdyA%uufOG<"[\?5/U ?$ =]?zĉQHh:#+Un!+VcMO| L)[*&i){C CCy$oYqGQ0L2\j$#"m1ј9A bw"`pe!h=par;95O3E<ʟOrQSo  sH}f6Og'JDL>%}DkG}fM?SfD. /"K=bP,%.V;+.8Zoz!']=KDԣR(' }\|^~Z9ut*p\'=<,*{x{ I(#!QfZ -=qxs͡ѡG,? gkĆŷKRGAXok.5|QlV.1ݿAd lΩ#;Ja E&:@شu G0䧖ek]챲;f&t#6B TIAiu)`Ŗ\]*hVYOB\W8<· EĄ8&:^b0u8ָJƀO80MtyuMg}& 8#Ǿ+X+ XIѽHBȀkx x!YJu Ѝލ˚!sFmp>L88%nW Dғ,@XULQbͪ4->)OY1gm?4Ԏd]\[A{ +bd0(m_~EgibK%9Ag@i[RS1hTJYHnx4O]ߚ,mpI_Dc=M˟8Q/&#N5H߿QsT6UWYV<;Sb]UEOL,g(ȋ8 ~)(Hmնp&)e5 jH޹dV%$sciDm@R2Vl˾>ܠ˙"GaƞeZBmIiPc7aΥ7b?Vi ARb$cQr6њi䥑q Θ;0u%x&`[01> p r[YyK?Xj178ߑ泦BߖzLwAL5jf5"mC:!)> 6!FJ'q@M¦Ϙo$Y$) v4#%eq"u08[H\OgeɐRe_}Oxf5M~Llu./)]Ek\h)Vo uOLOɔBTVvJ$'HOÕ:3Qm "m=7+.Q=S08ȓ{w˒幨q}.؞,o;F̾4eN&TՖ!ifv; _pN6@"dre 7->_+hnZz22WJB0_=l5)6j&3]+ m soEHb-R9}2lLt~ssR~RYy"h^io^QXLkȂv|nuNv|s%t"ijU=`3:< Jhn<1Z=8Adt!gbA#_Jpݰ8Eb[ADW ؀Y7MϪY:.1dRnm|YF ILK|׎V_JenJحIԏ/YPg &+&G܏ ><W0>śl?2Dkl1: }bbS\5BH5kH[VC}7`A@o%ї,0 ?Pe3?\bvT\TPt0 |K7m/DImIVNc-o"@[`~AsD,y$#9qIZn,gUgnZfh |ju!K3D!*פ+)ʯd$IXNtS,hsyrQFceڻQXks-1 $dv?}ZKLS'1s]]{DN 0栞@Z1e6 A8HBd:X@̀jwSx g97:T84a0ǫ4mL9`:j3'|G',@-çPm[ILa h`ܓLJ7b;KD,O@|^nQU~:΅: k 9:RK3A/_!\qAWxf[ {f5%yI׏11zjRT޴0zZ<[ACB*k5 hs|Sq_q|ؖXbG|ݎFǿ0Ixo@b3GԿ#Z1Syj5a끓'gP,_L(oIjw\Gd3BWBvvwB %'oC[ےkA扜4z~TƗ_LKTJ0#d\r{1Ax^W*{{j<mvgSKpn'ScUٲUNdKHr ֥z()]?krID-6Y_~>i 3U k$0PczQm.ߥԭ%&z*#R 3n"+[Ѧ}`((n-C|3;=Q7 |G+G|ٴB-#Q_Bc-??Ugx+_=G50"}>՘Ï(l=CH*i<a\PYU9eֻp44urTYk`0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/n019004l.afm0000644000077100007710000007555307260330347015433 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusSanL-Bold FullName Nimbus Sans L Bold FamilyName Nimbus Sans L Weight Bold ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -155 UnderlineThickness 69 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -173 -307 1003 949 CapHeight 729 XHeight 540 Descender -217 Ascender 729 StartCharMetrics 316 C 32 ; WX 278 ; N space ; B 214 0 214 0 ; C 33 ; WX 333 ; N exclam ; B 112 0 262 726 ; C 34 ; WX 474 ; N quotedbl ; B 50 470 424 729 ; C 35 ; WX 556 ; N numbersign ; B 3 -32 553 697 ; C 36 ; WX 556 ; N dollar ; B 22 -126 527 763 ; C 37 ; WX 889 ; N percent ; B 22 -20 863 709 ; C 38 ; WX 722 ; N ampersand ; B 55 -23 694 723 ; C 39 ; WX 278 ; N quoteright ; B 66 469 201 729 ; C 40 ; WX 333 ; N parenleft ; B 40 -200 303 729 ; C 41 ; WX 333 ; N parenright ; B 22 -200 285 729 ; C 42 ; WX 389 ; N asterisk ; B 23 407 357 729 ; C 43 ; WX 584 ; N plus ; B 50 -10 533 473 ; C 44 ; WX 278 ; N comma ; B 64 -174 214 146 ; C 45 ; WX 333 ; N hyphen ; B 26 207 298 342 ; C 46 ; WX 278 ; N period ; B 64 0 214 146 ; C 47 ; WX 278 ; N slash ; B 2 -14 275 714 ; C 48 ; WX 556 ; N zero ; B 29 -23 517 724 ; C 49 ; WX 556 ; N one ; B 68 0 378 709 ; C 50 ; WX 556 ; N two ; B 30 0 515 724 ; C 51 ; WX 556 ; N three ; B 29 -23 516 724 ; C 52 ; WX 556 ; N four ; B 24 0 522 709 ; C 53 ; WX 556 ; N five ; B 27 -23 517 709 ; C 54 ; WX 556 ; N six ; B 32 -23 519 724 ; C 55 ; WX 556 ; N seven ; B 29 0 528 709 ; C 56 ; WX 556 ; N eight ; B 22 -23 525 724 ; C 57 ; WX 556 ; N nine ; B 28 -24 516 724 ; C 58 ; WX 333 ; N colon ; B 113 0 263 520 ; C 59 ; WX 333 ; N semicolon ; B 113 -174 263 520 ; C 60 ; WX 584 ; N less ; B 40 -10 529 474 ; C 61 ; WX 584 ; N equal ; B 50 52 534 411 ; C 62 ; WX 584 ; N greater ; B 40 -10 529 474 ; C 63 ; WX 611 ; N question ; B 64 0 556 744 ; C 64 ; WX 975 ; N at ; B 27 -138 947 745 ; C 65 ; WX 722 ; N A ; B 26 0 703 729 ; C 66 ; WX 722 ; N B ; B 82 0 666 729 ; C 67 ; WX 722 ; N C ; B 44 -23 685 741 ; C 68 ; WX 722 ; N D ; B 77 0 681 729 ; C 69 ; WX 667 ; N E ; B 79 0 624 729 ; C 70 ; WX 611 ; N F ; B 74 0 586 729 ; C 71 ; WX 778 ; N G ; B 42 -23 711 741 ; C 72 ; WX 722 ; N H ; B 68 0 657 729 ; C 73 ; WX 278 ; N I ; B 63 0 213 729 ; C 74 ; WX 556 ; N J ; B 24 -23 486 729 ; C 75 ; WX 722 ; N K ; B 74 0 717 729 ; C 76 ; WX 611 ; N L ; B 80 0 579 729 ; C 77 ; WX 833 ; N M ; B 66 0 776 729 ; C 78 ; WX 722 ; N N ; B 68 0 661 729 ; C 79 ; WX 778 ; N O ; B 40 -23 742 741 ; C 80 ; WX 667 ; N P ; B 76 0 633 729 ; C 81 ; WX 778 ; N Q ; B 43 -54 745 741 ; C 82 ; WX 722 ; N R ; B 80 0 677 729 ; C 83 ; WX 667 ; N S ; B 32 -23 633 741 ; C 84 ; WX 611 ; N T ; B 14 0 598 729 ; C 85 ; WX 722 ; N U ; B 76 -23 654 729 ; C 86 ; WX 667 ; N V ; B 24 0 647 729 ; C 87 ; WX 944 ; N W ; B 13 0 932 729 ; C 88 ; WX 667 ; N X ; B 22 0 653 729 ; C 89 ; WX 667 ; N Y ; B 27 0 650 729 ; C 90 ; WX 611 ; N Z ; B 30 0 578 729 ; C 91 ; WX 333 ; N bracketleft ; B 66 -200 308 729 ; C 92 ; WX 278 ; N backslash ; B -12 -14 289 714 ; C 93 ; WX 333 ; N bracketright ; B 18 -200 260 729 ; C 94 ; WX 584 ; N asciicircum ; B 61 270 522 695 ; C 95 ; WX 556 ; N underscore ; B -22 -189 578 -120 ; C 96 ; WX 278 ; N quoteleft ; B 67 469 202 729 ; C 97 ; WX 556 ; N a ; B 28 -23 524 549 ; C 98 ; WX 611 ; N b ; B 59 -23 575 729 ; C 99 ; WX 556 ; N c ; B 34 -23 522 549 ; C 100 ; WX 611 ; N d ; B 29 -23 545 729 ; C 101 ; WX 556 ; N e ; B 22 -23 525 549 ; C 102 ; WX 333 ; N f ; B 14 0 313 729 ; C 103 ; WX 611 ; N g ; B 34 -218 541 549 ; C 104 ; WX 611 ; N h ; B 67 0 541 729 ; C 105 ; WX 278 ; N i ; B 67 0 207 729 ; C 106 ; WX 278 ; N j ; B 4 -218 210 729 ; C 107 ; WX 556 ; N k ; B 59 0 548 729 ; C 108 ; WX 278 ; N l ; B 67 0 207 729 ; C 109 ; WX 889 ; N m ; B 60 0 824 549 ; C 110 ; WX 611 ; N n ; B 63 0 546 549 ; C 111 ; WX 611 ; N o ; B 35 -23 569 549 ; C 112 ; WX 611 ; N p ; B 58 -218 574 549 ; C 113 ; WX 611 ; N q ; B 28 -218 544 549 ; C 114 ; WX 389 ; N r ; B 63 0 370 549 ; C 115 ; WX 556 ; N s ; B 29 -23 520 549 ; C 116 ; WX 333 ; N t ; B 14 -23 301 674 ; C 117 ; WX 611 ; N u ; B 58 -23 541 540 ; C 118 ; WX 556 ; N v ; B 14 0 536 540 ; C 119 ; WX 778 ; N w ; B 5 0 766 540 ; C 120 ; WX 556 ; N x ; B 16 0 535 540 ; C 121 ; WX 556 ; N y ; B 9 -219 538 540 ; C 122 ; WX 500 ; N z ; B 21 0 468 540 ; C 123 ; WX 389 ; N braceleft ; B 37 -200 317 729 ; C 124 ; WX 280 ; N bar ; B 100 -200 180 729 ; C 125 ; WX 389 ; N braceright ; B 72 -200 352 729 ; C 126 ; WX 584 ; N asciitilde ; B 60 142 519 314 ; C 161 ; WX 333 ; N exclamdown ; B 66 -186 216 540 ; C 162 ; WX 556 ; N cent ; B 36 -124 522 634 ; C 163 ; WX 556 ; N sterling ; B 31 -23 537 715 ; C 164 ; WX 167 ; N fraction ; B -173 -20 337 715 ; C 165 ; WX 556 ; N yen ; B 5 0 552 704 ; C 166 ; WX 556 ; N florin ; B 21 -220 535 744 ; C 167 ; WX 556 ; N section ; B 33 -201 518 723 ; C 168 ; WX 556 ; N currency ; B 26 100 530 604 ; C 169 ; WX 238 ; N quotesingle ; B 50 470 188 729 ; C 170 ; WX 500 ; N quotedblleft ; B 71 469 433 729 ; C 171 ; WX 556 ; N guillemotleft ; B 88 72 468 481 ; C 172 ; WX 333 ; N guilsinglleft ; B 83 72 250 481 ; C 173 ; WX 333 ; N guilsinglright ; B 80 72 247 481 ; C 174 ; WX 611 ; N fi ; B 9 0 548 729 ; C 175 ; WX 611 ; N fl ; B 12 0 546 729 ; C 177 ; WX 556 ; N endash ; B -9 207 557 311 ; C 178 ; WX 556 ; N dagger ; B 31 -194 523 709 ; C 179 ; WX 556 ; N daggerdbl ; B 28 -194 520 709 ; C 180 ; WX 278 ; N periodcentered ; B 64 169 188 292 ; C 182 ; WX 556 ; N paragraph ; B 19 -191 529 729 ; C 183 ; WX 350 ; N bullet ; B 50 175 300 425 ; C 184 ; WX 278 ; N quotesinglbase ; B 66 -135 201 125 ; C 185 ; WX 500 ; N quotedblbase ; B 72 -135 432 125 ; C 186 ; WX 500 ; N quotedblright ; B 73 469 440 729 ; C 187 ; WX 556 ; N guillemotright ; B 88 72 462 481 ; C 188 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ; C 189 ; WX 1000 ; N perthousand ; B 11 -22 990 739 ; C 191 ; WX 611 ; N questiondown ; B 51 -204 544 540 ; C 193 ; WX 333 ; N grave ; B 17 607 213 757 ; C 194 ; WX 333 ; N acute ; B 121 607 317 757 ; C 195 ; WX 333 ; N circumflex ; B 8 607 326 757 ; C 196 ; WX 333 ; N tilde ; B -9 621 345 749 ; C 197 ; WX 333 ; N macron ; B 16 640 315 719 ; C 198 ; WX 333 ; N breve ; B 35 605 299 748 ; C 199 ; WX 333 ; N dotaccent ; B 112 621 222 743 ; C 200 ; WX 333 ; N dieresis ; B 18 621 314 743 ; C 202 ; WX 333 ; N ring ; B 77 590 257 770 ; C 203 ; WX 333 ; N cedilla ; B 27 -220 294 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -44 610 340 757 ; C 206 ; WX 333 ; N ogonek ; B 45 -234 268 0 ; C 207 ; WX 333 ; N caron ; B 9 607 327 757 ; C 208 ; WX 1000 ; N emdash ; B -7 207 1003 311 ; C 225 ; WX 1000 ; N AE ; B 1 0 966 729 ; C 227 ; WX 370 ; N ordfeminine ; B 31 262 329 729 ; C 232 ; WX 611 ; N Lslash ; B 0 0 597 729 ; C 233 ; WX 778 ; N Oslash ; B 31 -39 755 749 ; C 234 ; WX 1000 ; N OE ; B 28 -23 970 741 ; C 235 ; WX 365 ; N ordmasculine ; B 23 262 343 729 ; C 241 ; WX 889 ; N ae ; B 27 -24 857 549 ; C 245 ; WX 278 ; N dotlessi ; B 67 0 207 540 ; C 248 ; WX 278 ; N lslash ; B 0 0 252 729 ; C 249 ; WX 611 ; N oslash ; B 11 -38 598 557 ; C 250 ; WX 944 ; N oe ; B 23 -23 920 549 ; C 251 ; WX 611 ; N germandbls ; B 67 -17 575 729 ; C -1 ; WX 722 ; N Udieresis ; B 76 -23 654 922 ; C -1 ; WX 722 ; N Uacute ; B 76 -23 654 936 ; C -1 ; WX 667 ; N Scedilla ; B 32 -220 633 741 ; C -1 ; WX 611 ; N Tcaron ; B 14 0 598 936 ; C -1 ; WX 667 ; N Scaron ; B 32 -23 633 936 ; C -1 ; WX 722 ; N Rcaron ; B 80 0 677 936 ; C -1 ; WX 722 ; N Racute ; B 80 0 677 936 ; C -1 ; WX 667 ; N Sacute ; B 32 -23 633 936 ; C -1 ; WX 778 ; N Otilde ; B 40 -23 742 928 ; C -1 ; WX 611 ; N ucircumflex ; B 58 -23 541 757 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 40 -23 742 936 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 76 -23 654 936 ; C -1 ; WX 667 ; N Yacute ; B 27 0 650 936 ; C -1 ; WX 722 ; N Eth ; B 0 0 681 729 ; C -1 ; WX 722 ; N Dcroat ; B 0 0 681 729 ; C -1 ; WX 611 ; N Zacute ; B 30 0 578 936 ; C -1 ; WX 722 ; N Uring ; B 76 -23 654 949 ; C -1 ; WX 611 ; N gbreve ; B 34 -218 541 748 ; C -1 ; WX 556 ; N eogonek ; B 21 -234 525 549 ; C -1 ; WX 556 ; N edotaccent ; B 22 -23 525 743 ; C -1 ; WX 556 ; N ecaron ; B 22 -23 525 757 ; C -1 ; WX 722 ; N Ugrave ; B 76 -23 654 936 ; C -1 ; WX 667 ; N Thorn ; B 76 0 633 729 ; C -1 ; WX 556 ; N eacute ; B 22 -23 525 757 ; C -1 ; WX 556 ; N edieresis ; B 22 -23 525 743 ; C -1 ; WX 707 ; N dcaron ; B 29 -23 720 729 ; C -1 ; WX 556 ; N ccedilla ; B 34 -220 522 549 ; C -1 ; WX 556 ; N ccaron ; B 34 -23 522 757 ; C -1 ; WX 556 ; N cacute ; B 34 -23 522 757 ; C -1 ; WX 556 ; N aogonek ; B 28 -233 548 549 ; C -1 ; WX 556 ; N aring ; B 28 -23 524 770 ; C -1 ; WX 556 ; N atilde ; B 28 -23 524 749 ; C -1 ; WX 556 ; N abreve ; B 28 -23 524 748 ; C -1 ; WX 556 ; N egrave ; B 22 -23 525 757 ; C -1 ; WX 556 ; N agrave ; B 28 -23 524 757 ; C -1 ; WX 556 ; N aacute ; B 28 -23 524 757 ; C -1 ; WX 556 ; N adieresis ; B 28 -23 524 743 ; C -1 ; WX 722 ; N Uogonek ; B 76 -234 654 729 ; C -1 ; WX 611 ; N ugrave ; B 58 -23 541 757 ; C -1 ; WX 611 ; N uacute ; B 58 -23 541 757 ; C -1 ; WX 611 ; N udieresis ; B 58 -23 541 743 ; C -1 ; WX 385 ; N tcaron ; B 14 -23 398 829 ; C -1 ; WX 556 ; N scommaaccent ; B 29 -307 520 549 ; C -1 ; WX 611 ; N Zcaron ; B 30 0 578 936 ; C -1 ; WX 556 ; N ecircumflex ; B 22 -23 525 757 ; C -1 ; WX 722 ; N Ucircumflex ; B 76 -23 654 936 ; C -1 ; WX 556 ; N acircumflex ; B 28 -23 524 757 ; C -1 ; WX 611 ; N Zdotaccent ; B 30 0 578 922 ; C -1 ; WX 556 ; N scaron ; B 29 -23 520 757 ; C -1 ; WX 722 ; N Amacron ; B 26 0 703 898 ; C -1 ; WX 556 ; N sacute ; B 29 -23 520 757 ; C -1 ; WX 611 ; N Tcommaaccent ; B 14 -307 598 729 ; C -1 ; WX 667 ; N Ydieresis ; B 27 0 650 922 ; C -1 ; WX 611 ; N thorn ; B 58 -218 574 729 ; C -1 ; WX 667 ; N Emacron ; B 79 0 624 898 ; C -1 ; WX 778 ; N Ograve ; B 40 -23 742 936 ; C -1 ; WX 778 ; N Oacute ; B 40 -23 742 936 ; C -1 ; WX 778 ; N Odieresis ; B 40 -23 742 922 ; C -1 ; WX 722 ; N Ntilde ; B 68 0 661 928 ; C -1 ; WX 722 ; N Ncaron ; B 68 0 661 936 ; C -1 ; WX 722 ; N Nacute ; B 68 0 661 936 ; C -1 ; WX 611 ; N Lcaron ; B 80 0 579 729 ; C -1 ; WX 611 ; N Lacute ; B 80 0 579 936 ; C -1 ; WX 278 ; N Idotaccent ; B 63 0 213 922 ; C -1 ; WX 389 ; N racute ; B 63 0 370 757 ; C -1 ; WX 278 ; N Icircumflex ; B -19 0 299 936 ; C -1 ; WX 611 ; N ohungarumlaut ; B 35 -23 569 757 ; C -1 ; WX 611 ; N otilde ; B 35 -23 569 749 ; C -1 ; WX 556 ; N Euro ; B 6 -23 546 724 ; C -1 ; WX 611 ; N ocircumflex ; B 35 -23 569 757 ; C -1 ; WX 351 ; N onesuperior ; B 40 284 242 709 ; C -1 ; WX 351 ; N twosuperior ; B 16 284 328 718 ; C -1 ; WX 351 ; N threesuperior ; B 15 271 329 718 ; C -1 ; WX 278 ; N Igrave ; B -10 0 213 936 ; C -1 ; WX 278 ; N Iacute ; B 63 0 290 936 ; C -1 ; WX 278 ; N Imacron ; B 2 0 274 898 ; C -1 ; WX 278 ; N Iogonek ; B 34 -233 237 729 ; C -1 ; WX 278 ; N Idieresis ; B -9 0 287 922 ; C -1 ; WX 778 ; N Gbreve ; B 42 -23 711 927 ; C -1 ; WX 722 ; N Umacron ; B 76 -23 654 898 ; C -1 ; WX 722 ; N Kcommaaccent ; B 74 -307 717 729 ; C -1 ; WX 611 ; N ograve ; B 35 -23 569 757 ; C -1 ; WX 667 ; N Scommaaccent ; B 32 -307 633 741 ; C -1 ; WX 667 ; N Eogonek ; B 79 -233 648 729 ; C -1 ; WX 611 ; N oacute ; B 35 -23 569 757 ; C -1 ; WX 667 ; N Edotaccent ; B 79 0 624 922 ; C -1 ; WX 278 ; N iogonek ; B 34 -233 231 729 ; C -1 ; WX 611 ; N gcommaaccent ; B 34 -218 541 853 ; C -1 ; WX 611 ; N odieresis ; B 35 -23 569 743 ; C -1 ; WX 611 ; N ntilde ; B 63 0 546 749 ; C -1 ; WX 611 ; N ncaron ; B 63 0 546 757 ; C -1 ; WX 667 ; N Ecaron ; B 79 0 624 936 ; C -1 ; WX 667 ; N Ecircumflex ; B 79 0 624 936 ; C -1 ; WX 556 ; N scedilla ; B 29 -220 520 549 ; C -1 ; WX 389 ; N rcaron ; B 54 0 372 757 ; C -1 ; WX 667 ; N Egrave ; B 79 0 624 936 ; C -1 ; WX 667 ; N Eacute ; B 79 0 624 936 ; C -1 ; WX 778 ; N Gcommaaccent ; B 42 -307 711 741 ; C -1 ; WX 722 ; N Rcommaaccent ; B 80 -307 677 729 ; C -1 ; WX 667 ; N Edieresis ; B 79 0 624 922 ; C -1 ; WX 611 ; N nacute ; B 63 0 546 757 ; C -1 ; WX 611 ; N uogonek ; B 58 -233 564 540 ; C -1 ; WX 611 ; N umacron ; B 58 -23 541 719 ; C -1 ; WX 722 ; N Dcaron ; B 77 0 681 936 ; C -1 ; WX 369 ; N lcaron ; B 67 0 382 729 ; C -1 ; WX 722 ; N Ccaron ; B 44 -23 685 936 ; C -1 ; WX 722 ; N Cacute ; B 44 -23 685 936 ; C -1 ; WX 722 ; N Ccedilla ; B 44 -220 685 741 ; C -1 ; WX 606 ; N degree ; B 151 383 454 686 ; C -1 ; WX 722 ; N Aogonek ; B 26 -233 723 729 ; C -1 ; WX 584 ; N minus ; B 40 172 544 291 ; C -1 ; WX 584 ; N multiply ; B 79 18 505 444 ; C -1 ; WX 584 ; N divide ; B 50 -11 534 474 ; C -1 ; WX 722 ; N Aring ; B 26 0 703 949 ; C -1 ; WX 1000 ; N trademark ; B 71 273 929 729 ; C -1 ; WX 389 ; N rcommaaccent ; B 63 -307 370 549 ; C -1 ; WX 278 ; N lacute ; B 67 0 278 936 ; C -1 ; WX 611 ; N omacron ; B 35 -23 569 719 ; C -1 ; WX 722 ; N Atilde ; B 26 0 703 928 ; C -1 ; WX 278 ; N icircumflex ; B -19 0 299 757 ; C -1 ; WX 278 ; N igrave ; B -10 0 207 757 ; C -1 ; WX 611 ; N ncommaaccent ; B 63 -307 546 549 ; C -1 ; WX 278 ; N lcommaaccent ; B 67 -307 207 729 ; C -1 ; WX 584 ; N plusminus ; B 56 -16 527 608 ; C -1 ; WX 869 ; N onehalf ; B 40 -20 846 715 ; C -1 ; WX 869 ; N onequarter ; B 40 -20 850 715 ; C -1 ; WX 869 ; N threequarters ; B 15 -20 850 718 ; C -1 ; WX 278 ; N iacute ; B 67 0 290 757 ; C -1 ; WX 722 ; N Abreve ; B 26 0 703 927 ; C -1 ; WX 556 ; N kcommaaccent ; B 59 -307 548 729 ; C -1 ; WX 778 ; N Omacron ; B 40 -23 742 898 ; C -1 ; WX 278 ; N imacron ; B 7 0 266 719 ; C -1 ; WX 556 ; N emacron ; B 22 -23 525 719 ; C -1 ; WX 556 ; N amacron ; B 28 -23 524 719 ; C -1 ; WX 333 ; N tcommaaccent ; B 14 -307 301 674 ; C -1 ; WX 556 ; N ydieresis ; B 9 -219 538 743 ; C -1 ; WX 500 ; N zdotaccent ; B 21 0 468 743 ; C -1 ; WX 500 ; N zcaron ; B 21 0 468 757 ; C -1 ; WX 500 ; N zacute ; B 21 0 468 757 ; C -1 ; WX 556 ; N yacute ; B 9 -219 538 757 ; C -1 ; WX 611 ; N uhungarumlaut ; B 58 -23 559 757 ; C -1 ; WX 611 ; N eth ; B 35 -23 569 744 ; C -1 ; WX 611 ; N uring ; B 58 -23 541 770 ; C -1 ; WX 778 ; N Ocircumflex ; B 40 -23 742 936 ; C -1 ; WX 333 ; N commaaccent ; B 112 -307 234 -60 ; C -1 ; WX 737 ; N copyright ; B -14 -22 751 743 ; C -1 ; WX 737 ; N registered ; B -14 -22 751 743 ; C -1 ; WX 722 ; N Acircumflex ; B 26 0 703 936 ; C -1 ; WX 278 ; N idieresis ; B -9 0 287 743 ; C -1 ; WX 489 ; N lozenge ; B 16 0 462 744 ; C -1 ; WX 729 ; N Delta ; B 8 0 721 729 ; C -1 ; WX 548 ; N notequal ; B 50 -69 534 528 ; C -1 ; WX 542 ; N radical ; B 7 -36 512 913 ; C -1 ; WX 722 ; N Agrave ; B 26 0 703 936 ; C -1 ; WX 722 ; N Aacute ; B 26 0 703 936 ; C -1 ; WX 584 ; N lessequal ; B 45 -10 534 639 ; C -1 ; WX 584 ; N greaterequal ; B 45 -10 534 639 ; C -1 ; WX 584 ; N logicalnot ; B 40 86 544 375 ; C -1 ; WX 711 ; N summation ; B 17 -96 694 760 ; C -1 ; WX 490 ; N partialdiff ; B 22 -15 458 750 ; C -1 ; WX 722 ; N Ncommaaccent ; B 68 -307 661 729 ; C -1 ; WX 611 ; N dcroat ; B 29 -23 605 729 ; C -1 ; WX 280 ; N brokenbar ; B 100 -200 180 729 ; C -1 ; WX 611 ; N Lcommaaccent ; B 80 -307 579 729 ; C -1 ; WX 722 ; N Adieresis ; B 26 0 703 922 ; C -1 ; WX 611 ; N mu ; B 58 -220 573 540 ; C -1 ; WX 278 ; N .notdef ; B 214 0 214 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -33 KPX A Ccedilla -33 KPX A G -35 KPX A O -34 KPX A Odieresis -34 KPX A Q -35 KPX A T -81 KPX A U -32 KPX A Uacute -32 KPX A Ucircumflex -32 KPX A Udieresis -32 KPX A Ugrave -32 KPX A V -66 KPX A W -51 KPX A Y -90 KPX A a -1 KPX A b -1 KPX A c -14 KPX A ccedilla -14 KPX A comma 19 KPX A d -13 KPX A e -9 KPX A g -14 KPX A guillemotleft -43 KPX A guilsinglleft -40 KPX A hyphen 7 KPX A o -16 KPX A period 19 KPX A q -12 KPX A quotedblright -65 KPX A quoteright -61 KPX A t -18 KPX A u -12 KPX A v -37 KPX A w -23 KPX A y -35 KPX Aacute C -33 KPX Aacute G -35 KPX Aacute O -34 KPX Aacute Q -35 KPX Aacute T -81 KPX Aacute U -32 KPX Aacute V -66 KPX Aacute W -51 KPX Aacute Y -90 KPX Aacute a -1 KPX Aacute b -1 KPX Aacute c -14 KPX Aacute comma 19 KPX Aacute d -13 KPX Aacute e -9 KPX Aacute g -14 KPX Aacute guillemotleft -43 KPX Aacute guilsinglleft -40 KPX Aacute hyphen 7 KPX Aacute o -16 KPX Aacute period 19 KPX Aacute q -12 KPX Aacute quoteright -61 KPX Aacute t -18 KPX Aacute u -12 KPX Aacute v -37 KPX Aacute w -23 KPX Aacute y -35 KPX Acircumflex C -33 KPX Acircumflex G -35 KPX Acircumflex O -34 KPX Acircumflex Q -35 KPX Acircumflex T -81 KPX Acircumflex U -32 KPX Acircumflex V -66 KPX Acircumflex W -51 KPX Acircumflex Y -90 KPX Acircumflex comma 19 KPX Acircumflex period 19 KPX Adieresis C -33 KPX Adieresis G -35 KPX Adieresis O -34 KPX Adieresis Q -35 KPX Adieresis T -81 KPX Adieresis U -32 KPX Adieresis V -66 KPX Adieresis W -51 KPX Adieresis Y -90 KPX Adieresis a -1 KPX Adieresis b -1 KPX Adieresis c -14 KPX Adieresis comma 19 KPX Adieresis d -13 KPX Adieresis g -14 KPX Adieresis guillemotleft -43 KPX Adieresis guilsinglleft -40 KPX Adieresis hyphen 7 KPX Adieresis o -16 KPX Adieresis period 19 KPX Adieresis q -12 KPX Adieresis quotedblright -65 KPX Adieresis quoteright -61 KPX Adieresis t -18 KPX Adieresis u -12 KPX Adieresis v -37 KPX Adieresis w -23 KPX Adieresis y -35 KPX Agrave C -33 KPX Agrave G -35 KPX Agrave O -34 KPX Agrave Q -35 KPX Agrave T -81 KPX Agrave U -32 KPX Agrave V -66 KPX Agrave W -51 KPX Agrave Y -90 KPX Agrave comma 19 KPX Agrave period 19 KPX Aring C -33 KPX Aring G -35 KPX Aring O -34 KPX Aring Q -35 KPX Aring T -81 KPX Aring U -32 KPX Aring V -66 KPX Aring W -51 KPX Aring Y -90 KPX Aring a -1 KPX Aring b -1 KPX Aring c -14 KPX Aring comma 19 KPX Aring d -13 KPX Aring e -9 KPX Aring g -14 KPX Aring guillemotleft -43 KPX Aring guilsinglleft -40 KPX Aring hyphen 7 KPX Aring o -16 KPX Aring period 19 KPX Aring q -12 KPX Aring quotedblright -65 KPX Aring quoteright -61 KPX Aring t -18 KPX Aring u -12 KPX Aring v -37 KPX Aring w -23 KPX Aring y -35 KPX Atilde C -33 KPX Atilde G -35 KPX Atilde O -34 KPX Atilde Q -35 KPX Atilde T -81 KPX Atilde U -32 KPX Atilde V -66 KPX Atilde W -51 KPX Atilde Y -90 KPX Atilde comma 19 KPX Atilde period 19 KPX B A -32 KPX B AE -20 KPX B Aacute -32 KPX B Acircumflex -32 KPX B Adieresis -32 KPX B Aring -32 KPX B Atilde -32 KPX B O -11 KPX B OE -2 KPX B Oacute -11 KPX B Ocircumflex -11 KPX B Odieresis -11 KPX B Ograve -11 KPX B Oslash -5 KPX B V -39 KPX B W -27 KPX B Y -51 KPX C A -29 KPX C AE -17 KPX C Aacute -29 KPX C Adieresis -29 KPX C Aring -29 KPX C H 5 KPX C K 2 KPX C O -6 KPX C Oacute -6 KPX C Odieresis -6 KPX Ccedilla A -28 KPX D A -37 KPX D Aacute -37 KPX D Acircumflex -37 KPX D Adieresis -37 KPX D Agrave -37 KPX D Aring -37 KPX D Atilde -37 KPX D J 2 KPX D T -17 KPX D V -35 KPX D W -20 KPX D X -35 KPX D Y -56 KPX F A -63 KPX F Aacute -63 KPX F Acircumflex -63 KPX F Adieresis -63 KPX F Agrave -63 KPX F Aring -63 KPX F Atilde -63 KPX F J -25 KPX F O -16 KPX F Odieresis -16 KPX F a -15 KPX F aacute -15 KPX F adieresis -15 KPX F ae -17 KPX F aring -15 KPX F comma -76 KPX F e -7 KPX F eacute -7 KPX F hyphen 11 KPX F i -7 KPX F j -9 KPX F o -14 KPX F oacute -14 KPX F odieresis -14 KPX F oe -8 KPX F oslash -15 KPX F period -75 KPX F r -27 KPX F u -24 KPX G A -8 KPX G AE 4 KPX G Aacute -8 KPX G Acircumflex -8 KPX G Adieresis -8 KPX G Agrave -8 KPX G Aring -8 KPX G Atilde -8 KPX G T -17 KPX G V -36 KPX G W -20 KPX G Y -56 KPX J A -32 KPX J AE -20 KPX J Adieresis -32 KPX J Aring -32 KPX K C -53 KPX K G -55 KPX K O -54 KPX K OE -44 KPX K Oacute -54 KPX K Odieresis -54 KPX K S -30 KPX K T 13 KPX K a -3 KPX K adieresis -3 KPX K ae 0 KPX K aring -3 KPX K e -25 KPX K hyphen -44 KPX K o -33 KPX K oacute -33 KPX K odieresis -33 KPX K u -23 KPX K udieresis -23 KPX K y -65 KPX L A 9 KPX L AE 21 KPX L Aacute 9 KPX L Adieresis 9 KPX L Aring 9 KPX L C -26 KPX L Ccedilla -26 KPX L G -30 KPX L O -29 KPX L Oacute -29 KPX L Ocircumflex -29 KPX L Odieresis -29 KPX L Ograve -29 KPX L Otilde -29 KPX L S -2 KPX L T -95 KPX L U -24 KPX L Udieresis -24 KPX L V -90 KPX L W -68 KPX L Y -112 KPX L hyphen -12 KPX L quotedblright -141 KPX L quoteright -138 KPX L u -7 KPX L udieresis -7 KPX L y -55 KPX N A -5 KPX N AE 7 KPX N Aacute -5 KPX N Adieresis -5 KPX N Aring -5 KPX N C 9 KPX N Ccedilla 9 KPX N G 8 KPX N O 8 KPX N Oacute 8 KPX N Odieresis 8 KPX N a 13 KPX N aacute 13 KPX N adieresis 13 KPX N ae 13 KPX N aring 13 KPX N comma 15 KPX N e 18 KPX N eacute 18 KPX N o 11 KPX N oacute 11 KPX N odieresis 11 KPX N oslash 11 KPX N period 16 KPX N u 12 KPX N udieresis 12 KPX O A -37 KPX O AE -26 KPX O Aacute -37 KPX O Adieresis -37 KPX O Aring -37 KPX O T -20 KPX O V -36 KPX O W -21 KPX O X -36 KPX O Y -59 KPX Oacute A -37 KPX Oacute T -20 KPX Oacute V -36 KPX Oacute W -21 KPX Oacute Y -59 KPX Ocircumflex T -20 KPX Ocircumflex V -36 KPX Ocircumflex Y -59 KPX Odieresis A -37 KPX Odieresis T -20 KPX Odieresis V -36 KPX Odieresis W -21 KPX Odieresis X -36 KPX Odieresis Y -59 KPX Ograve T -20 KPX Ograve V -36 KPX Ograve Y -59 KPX Oslash A -32 KPX Otilde T -20 KPX Otilde V -36 KPX Otilde Y -59 KPX P A -65 KPX P AE -54 KPX P Aacute -65 KPX P Adieresis -65 KPX P Aring -65 KPX P J -44 KPX P a -7 KPX P aacute -7 KPX P adieresis -7 KPX P ae -8 KPX P aring -7 KPX P comma -94 KPX P e -8 KPX P eacute -8 KPX P hyphen 0 KPX P o -14 KPX P oacute -14 KPX P odieresis -14 KPX P oe -8 KPX P oslash -17 KPX P period -94 KPX R C -5 KPX R Ccedilla -5 KPX R G -6 KPX R O -6 KPX R OE 3 KPX R Oacute -6 KPX R Odieresis -6 KPX R T 0 KPX R U -4 KPX R Udieresis -4 KPX R V -26 KPX R W -17 KPX R Y -37 KPX R a 0 KPX R aacute 0 KPX R adieresis 0 KPX R ae 0 KPX R aring 0 KPX R e 2 KPX R eacute 2 KPX R hyphen 15 KPX R o -4 KPX R oacute -4 KPX R odieresis -4 KPX R oe 1 KPX R u 0 KPX R uacute 0 KPX R udieresis 0 KPX R y 5 KPX S A -20 KPX S AE -8 KPX S Aacute -20 KPX S Adieresis -20 KPX S Aring -20 KPX S T -5 KPX S V -31 KPX S W -17 KPX S Y -43 KPX S t 1 KPX T A -87 KPX T AE -75 KPX T Aacute -87 KPX T Acircumflex -87 KPX T Adieresis -87 KPX T Agrave -87 KPX T Aring -87 KPX T Atilde -87 KPX T C -20 KPX T G -22 KPX T J -87 KPX T O -22 KPX T OE -11 KPX T Oacute -22 KPX T Ocircumflex -22 KPX T Odieresis -22 KPX T Ograve -22 KPX T Oslash -23 KPX T Otilde -22 KPX T S 3 KPX T V 18 KPX T W 24 KPX T Y 16 KPX T a -73 KPX T ae -73 KPX T c -74 KPX T colon -97 KPX T comma -67 KPX T e -69 KPX T g -75 KPX T guillemotleft -101 KPX T guilsinglleft -98 KPX T hyphen -48 KPX T i -1 KPX T j -3 KPX T o -76 KPX T oslash -73 KPX T period -67 KPX T r -71 KPX T s -74 KPX T semicolon -98 KPX T u -72 KPX T v -82 KPX T w -77 KPX T y -80 KPX U A -34 KPX U AE -22 KPX U Aacute -34 KPX U Acircumflex -34 KPX U Adieresis -34 KPX U Aring -34 KPX U Atilde -34 KPX U comma -7 KPX U m 6 KPX U n 5 KPX U p 7 KPX U period -4 KPX U r 5 KPX Uacute A -34 KPX Uacute comma -7 KPX Uacute m 6 KPX Uacute n 5 KPX Uacute p 7 KPX Uacute period -4 KPX Uacute r 5 KPX Ucircumflex A -34 KPX Udieresis A -34 KPX Udieresis b 6 KPX Udieresis comma -7 KPX Udieresis m 6 KPX Udieresis n 5 KPX Udieresis p 7 KPX Udieresis period -4 KPX Udieresis r 5 KPX Ugrave A -34 KPX V A -71 KPX V AE -59 KPX V Aacute -71 KPX V Acircumflex -71 KPX V Adieresis -71 KPX V Agrave -71 KPX V Aring -71 KPX V Atilde -71 KPX V C -36 KPX V G -38 KPX V O -37 KPX V Oacute -37 KPX V Ocircumflex -37 KPX V Odieresis -37 KPX V Ograve -37 KPX V Oslash -31 KPX V Otilde -37 KPX V S -21 KPX V T 21 KPX V a -47 KPX V ae -48 KPX V colon -65 KPX V comma -69 KPX V e -43 KPX V g -49 KPX V guillemotleft -74 KPX V guilsinglleft -72 KPX V hyphen -21 KPX V i -5 KPX V o -50 KPX V oslash -48 KPX V period -69 KPX V r -34 KPX V semicolon -67 KPX V u -34 KPX V y -10 KPX W A -54 KPX W AE -43 KPX W Aacute -54 KPX W Acircumflex -54 KPX W Adieresis -54 KPX W Agrave -54 KPX W Aring -54 KPX W Atilde -54 KPX W C -20 KPX W G -22 KPX W O -21 KPX W Oacute -21 KPX W Ocircumflex -21 KPX W Odieresis -21 KPX W Ograve -21 KPX W Oslash -15 KPX W Otilde -21 KPX W S -12 KPX W T 25 KPX W a -29 KPX W ae -29 KPX W colon -53 KPX W comma -45 KPX W e -24 KPX W g -30 KPX W guillemotleft -55 KPX W guilsinglleft -53 KPX W hyphen -3 KPX W i -1 KPX W o -31 KPX W oslash -29 KPX W period -45 KPX W r -24 KPX W semicolon -54 KPX W u -23 KPX W y 0 KPX X C -34 KPX X O -35 KPX X Odieresis -35 KPX X Q -37 KPX X a -5 KPX X e -25 KPX X hyphen -27 KPX X o -32 KPX X u -25 KPX X y -40 KPX Y A -86 KPX Y AE -74 KPX Y Aacute -86 KPX Y Acircumflex -86 KPX Y Adieresis -86 KPX Y Agrave -86 KPX Y Aring -86 KPX Y Atilde -86 KPX Y C -52 KPX Y G -54 KPX Y O -54 KPX Y Oacute -54 KPX Y Ocircumflex -54 KPX Y Odieresis -54 KPX Y Ograve -54 KPX Y Oslash -47 KPX Y Otilde -54 KPX Y S -29 KPX Y T 22 KPX Y a -66 KPX Y ae -67 KPX Y colon -81 KPX Y comma -78 KPX Y e -63 KPX Y g -68 KPX Y guillemotleft -98 KPX Y guilsinglleft -96 KPX Y hyphen -50 KPX Y i -3 KPX Y o -70 KPX Y oslash -67 KPX Y p -45 KPX Y period -78 KPX Y semicolon -83 KPX Y u -48 KPX Y v -27 KPX Z v -11 KPX Z y -9 KPX a j -1 KPX a quoteright -11 KPX a v -19 KPX a w -5 KPX a y -17 KPX aacute v -19 KPX aacute w -5 KPX aacute y -17 KPX adieresis v -19 KPX adieresis w -5 KPX adieresis y -17 KPX ae v -21 KPX ae w -7 KPX ae y -19 KPX agrave v -19 KPX agrave w -5 KPX agrave y -17 KPX aring v -19 KPX aring w -5 KPX aring y -17 KPX b v -20 KPX b w -7 KPX b y -20 KPX c h 0 KPX c k 3 KPX comma one -73 KPX comma quotedblright -33 KPX comma quoteright -30 KPX e quoteright -12 KPX e t -4 KPX e v -19 KPX e w -6 KPX e x -21 KPX e y -17 KPX eacute v -19 KPX eacute w -6 KPX eacute y -17 KPX ecircumflex v -19 KPX ecircumflex w -6 KPX ecircumflex y -17 KPX eight four 10 KPX eight one -23 KPX eight seven -6 KPX f a 1 KPX f aacute 1 KPX f adieresis 1 KPX f ae 0 KPX f aring 1 KPX f e -3 KPX f eacute -3 KPX f f 21 KPX f i -3 KPX f j -6 KPX f l -3 KPX f o -9 KPX f oacute -9 KPX f odieresis -9 KPX f oe -3 KPX f oslash -9 KPX f quoteright 10 KPX f s -1 KPX f t 21 KPX five four 6 KPX five one -29 KPX five seven -10 KPX four four 9 KPX four one -50 KPX four seven -28 KPX g a 3 KPX g adieresis 3 KPX g ae 3 KPX g aring 3 KPX g e 8 KPX g eacute 8 KPX g l 0 KPX g oacute 1 KPX g odieresis 1 KPX g r 1 KPX guillemotright A -51 KPX guillemotright AE -39 KPX guillemotright Aacute -51 KPX guillemotright Adieresis -51 KPX guillemotright Aring -51 KPX guillemotright T -108 KPX guillemotright V -78 KPX guillemotright W -60 KPX guillemotright Y -111 KPX guilsinglright A -46 KPX guilsinglright AE -35 KPX guilsinglright Aacute -46 KPX guilsinglright Adieresis -46 KPX guilsinglright Aring -46 KPX guilsinglright T -104 KPX guilsinglright V -74 KPX guilsinglright W -56 KPX guilsinglright Y -107 KPX h quoteright -14 KPX h y -21 KPX hyphen A -1 KPX hyphen AE 10 KPX hyphen Aacute -1 KPX hyphen Adieresis -1 KPX hyphen Aring -1 KPX hyphen T -57 KPX hyphen V -27 KPX hyphen W -9 KPX hyphen Y -64 KPX i T -4 KPX i j -2 KPX k a -2 KPX k aacute -2 KPX k adieresis -2 KPX k ae 1 KPX k aring -2 KPX k comma 7 KPX k e -15 KPX k eacute -15 KPX k g -21 KPX k hyphen -25 KPX k o -22 KPX k oacute -22 KPX k odieresis -22 KPX k period 6 KPX k s -10 KPX k u -1 KPX k udieresis -1 KPX l v -5 KPX l y -2 KPX m p 6 KPX m v -19 KPX m w -6 KPX m y -18 KPX n T -80 KPX n p 5 KPX n quoteright -12 KPX n v -20 KPX n w -7 KPX n y -19 KPX nine four 4 KPX nine one -21 KPX nine seven -17 KPX o T -84 KPX o quoteright -17 KPX o t -8 KPX o v -23 KPX o w -10 KPX o x -25 KPX o y -22 KPX oacute v -23 KPX oacute w -10 KPX oacute y -22 KPX ocircumflex t -8 KPX odieresis t -8 KPX odieresis v -23 KPX odieresis w -10 KPX odieresis x -25 KPX odieresis y -22 KPX ograve v -23 KPX ograve w -10 KPX ograve y -22 KPX one comma -42 KPX one eight -37 KPX one five -43 KPX one four -56 KPX one nine -39 KPX one one -85 KPX one period -42 KPX one seven -65 KPX one six -37 KPX one three -44 KPX one two -47 KPX one zero -34 KPX p t -5 KPX p y -20 KPX period one -73 KPX period quotedblright -32 KPX period quoteright -29 KPX q c 4 KPX q u 4 KPX quotedblbase A 12 KPX quotedblbase AE 24 KPX quotedblbase T -75 KPX quotedblbase V -73 KPX quotedblbase W -51 KPX quotedblbase Y -92 KPX quotedblleft A -68 KPX quotedblleft AE -57 KPX quotedblleft Aacute -68 KPX quotedblleft Adieresis -68 KPX quotedblleft Aring -68 KPX quotedblleft T -2 KPX quotedblleft V 6 KPX quotedblleft W 16 KPX quotedblleft Y -9 KPX quotedblright A -69 KPX quotedblright AE -57 KPX quotedblright Aacute -69 KPX quotedblright Adieresis -69 KPX quotedblright Aring -69 KPX quotedblright T 1 KPX quotedblright V 7 KPX quotedblright W 17 KPX quotedblright Y -7 KPX quoteleft A -73 KPX quoteleft AE -62 KPX quoteleft Aacute -73 KPX quoteleft Adieresis -73 KPX quoteleft Aring -73 KPX quoteleft T -7 KPX quoteleft V 2 KPX quoteleft W 11 KPX quoteleft Y -13 KPX quoteright A -77 KPX quoteright AE -66 KPX quoteright Aacute -77 KPX quoteright Adieresis -77 KPX quoteright Aring -77 KPX quoteright comma -46 KPX quoteright d -27 KPX quoteright o -30 KPX quoteright period -45 KPX quoteright r -15 KPX quoteright s -22 KPX quoteright t -4 KPX quoteright v -5 KPX quoteright w 1 KPX quoteright y -3 KPX r a 6 KPX r aacute 6 KPX r acircumflex 6 KPX r adieresis 6 KPX r ae 4 KPX r agrave 6 KPX r aring 6 KPX r c 0 KPX r ccedilla 0 KPX r colon -27 KPX r comma -57 KPX r d 0 KPX r e 4 KPX r eacute 4 KPX r ecircumflex 4 KPX r egrave 4 KPX r f 22 KPX r g -2 KPX r h -4 KPX r hyphen -35 KPX r i -4 KPX r j -6 KPX r k 0 KPX r l -4 KPX r m -1 KPX r n -2 KPX r o -1 KPX r oacute -1 KPX r ocircumflex -1 KPX r odieresis -1 KPX r oe 5 KPX r ograve -1 KPX r oslash -4 KPX r p 0 KPX r period -57 KPX r q 1 KPX r quoteright 14 KPX r r -2 KPX r s 3 KPX r semicolon -27 KPX r t 22 KPX r u 0 KPX r v 21 KPX r w 26 KPX r x 17 KPX r y 23 KPX r z 9 KPX s quoteright -12 KPX s t -1 KPX seven colon -63 KPX seven comma -88 KPX seven eight -3 KPX seven five -21 KPX seven four -62 KPX seven one -14 KPX seven period -87 KPX seven seven 9 KPX seven six -13 KPX seven three 0 KPX seven two -4 KPX six four 7 KPX six one -21 KPX six seven -3 KPX t S 0 KPX t a 6 KPX t aacute 6 KPX t adieresis 6 KPX t ae 7 KPX t aring 6 KPX t colon -25 KPX t e -3 KPX t eacute -3 KPX t h 2 KPX t o -10 KPX t oacute -10 KPX t odieresis -10 KPX t quoteright 4 KPX t semicolon -25 KPX three four 6 KPX three one -27 KPX three seven -10 KPX two four -9 KPX two one -16 KPX two seven -3 KPX u quoteright -2 KPX v a -15 KPX v aacute -15 KPX v acircumflex -15 KPX v adieresis -15 KPX v ae -16 KPX v agrave -15 KPX v aring -15 KPX v atilde -15 KPX v c -20 KPX v colon -32 KPX v comma -51 KPX v e -15 KPX v eacute -15 KPX v ecircumflex -15 KPX v egrave -15 KPX v g -21 KPX v hyphen 0 KPX v l -5 KPX v o -22 KPX v oacute -22 KPX v odieresis -22 KPX v ograve -22 KPX v oslash -20 KPX v period -50 KPX v s -17 KPX v semicolon -34 KPX w a -7 KPX w aacute -7 KPX w acircumflex -7 KPX w adieresis -7 KPX w ae -8 KPX w agrave -7 KPX w aring -7 KPX w atilde -7 KPX w c -8 KPX w colon -27 KPX w comma -33 KPX w e -3 KPX w eacute -3 KPX w ecircumflex -3 KPX w egrave -3 KPX w g -9 KPX w hyphen 11 KPX w l -1 KPX w o -10 KPX w oacute -10 KPX w odieresis -10 KPX w ograve -10 KPX w oslash -8 KPX w period -32 KPX w s -9 KPX w semicolon -29 KPX x a -9 KPX x c -22 KPX x e -17 KPX x eacute -17 KPX x o -24 KPX x q -20 KPX y a -14 KPX y aacute -14 KPX y acircumflex -14 KPX y adieresis -14 KPX y ae -15 KPX y agrave -14 KPX y aring -14 KPX y atilde -14 KPX y c -21 KPX y colon -31 KPX y comma -51 KPX y e -16 KPX y eacute -16 KPX y ecircumflex -16 KPX y egrave -16 KPX y g -21 KPX y hyphen 0 KPX y l -4 KPX y o -22 KPX y oacute -22 KPX y odieresis -22 KPX y ograve -22 KPX y oslash -20 KPX y period -50 KPX y s -16 KPX y semicolon -33 KPX zero four 5 KPX zero one -19 KPX zero seven -10 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n019004l.pfb0000644000077100007710000010614507260330347015427 0ustar fjffjf00000000000000W%!PS-AdobeFont-1.0: NimbusSanL-Bold 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Sans L Bold) readonly def /FamilyName (Nimbus Sans L) readonly def /Weight (Bold) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -155 def /UnderlineThickness 69 def end readonly def /FontName /NimbusSanL-Bold def /PaintType 0 def /WMode 0 def /FontBBox {-173 -307 1003 949} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020904 def currentdict end currentfile eexec  `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>ne壷hm65tL=7By#mcwW{ͪƴˑG8nq.!^1&:K4!}UqR[Ѿ'n_ϣA{z / QΨ6ykwbQ\e@Lo"ǀ*ƃW0KDTZ~C25<+cvnH%׃^׋ (6Sc|>T +ƄO#^-Q:N0r&fש .4k wȢ2ɚfSLj-@? gO bFP'xxхϖhIL"V$GMڡG|hzg!6dTk- Md^C66(@`{9 E,|ZsoDepr{7['dH0=$>zF}Hf ), ѹy^z x󀋇X,v5Z`zJΤL[^ی Wt|Rkm^,\C;ѕQ u{Oxgjw NS wzTdkSlu&DJRW"̮HGAsO =hd ;;4fHOI$8i漜X ygf nqWWŔ^쾀0z6^?d[':H.k}uUH Ƅ&Y-c}p9wX=HA]-2K =;tUҒfI&V?R=("N X&@@ Pbr?G/ĊItT\waWdL$©Å\_*ۡxO|Q 3%2C @ĺLv<# GZzlgZQND`I$;6 {8xv~yYntTd- -jqNZn8LxU_Z]GDV }cGk{^aF/aVƩxl y\Lk_ k &3$FjP!P\E[8]voPЍ]b1;jBiL9`툻EЏCXf ,Q`Rp9S < "\@P/=?b'D4,-N(6{܀8Bw =jmPa69-9로ݱ xl_PG~ݙmȏ_<@w>}vc0XLEd:ym.u8q '儍} r:"I̲l;Ίc{)cd'z#9P=;7],"*\ۻCTy07rk$C)g5^Ɔ&?Y"s,y߯m0I5A(~mjoGʍqL:em>˷pFoDq 'v;DҴ{NiL # ?ae3\.$BďFJ5-K?ϲ|(vx;*&8|l5k@lıS:^iR٩T;zHt#Ѫ./`FCӛm_Ё+)c۟^L/o_nސXCFۖSVV' ZKJSVZ 2/D`Hwh?(_Faj5az5 ;_1UV7 cNRXXUJF7:MːIObsO}x-mO:5d%9IDHb.k?_R1 Ue[?86Fl=o:*\$30mM6P}AlՉ?42LD?5͖9'1JDn#4࡛tUKo+y<Ż_E!v Tp) '~u&c8n9FG1?mI/};ϴZRy>hqE'3G/B' aёitNj>*rjn'ޕu{]s;?mxSjG17iԏW7u,:ɪ#0g8MVv;D&Jr! π1+ [C9E)tн@'\>DP1lbW87~9YeO#E"1Xu)c5Jk'X&TuI8eTMF`FVqx p\(9A9#SD]Y҆)]*!J;1 \d!bTe&IA;\J& z_KuNB|X5d|Fq~j Zc!q.,IsqdtR LZM۵hEId(Jʓm NܱR~px1a֮0OinUg*ùc4I:u#H. "~2rr{4LM@2}.:\x c,.!^ ʹW7r?nC tתm@TV>F~~ #4SU`#7_Nz&96t[wbuځ4ۘƣshH=MȎ=Ĉ2f _d2uO#w) t|D9!-y3̕@S <޷Sr8wf e^uJHUqvYמ$YmUW4x_)-Hʂ 90b~T9VsH~@ivV~W%2PbfTz֒s9==ӭƽN&F @U2 \ƄrT]!RM7}MG4PO2)"+wٴxXLE:2MHÀ_Ũ)!_:~~X;H[WN7JwRq#s"-} MuH O=5Ԛn3~5PmoBk:,q(BS`&(B >.;/)&4JaۮO/Q!4_y=o+ "-t~QRA>T [=̯>%v/U.!EFLoAIVgV`ÿXQ>g+9Hϛakl+bz9/}{Iԁܑ"V(4\%6~ R} R7@N&J{0e<54Ix^xs}8-wPltJrO_rLBKވe#^d{}&Nl^cyfXtq#heebQ~,y%,?Ұ k7`C#wCR]ب~ANf/#76y{g)ڸ>OB~.'{ W:R1}vݠ>PLKs66s/# J,2kDdƵ6s5{=DTjQq J'g0¢J(싌%ꀭxTz/~t 8ZV{U >΄&Si~(4'%vY;ԛG۰ygJ}xb{P#ּekSa̻ihadN}I\)o'Sѥ<ϞL mόF#zgE##@Bs8 /{e>z=꣔]0ߞ?mڻ|;qYhd;vytNT=ut'߉yrA)*4ʜ۩gLQ|b&&rH-VuѬBC맥H lEcּ[)Y{F,`7b6@eB}i &LͽSم^:.c)s(彲סtgc$ؽoEk@+Vq/ N1aQ QaDD\}ܗneW搸xl^*.f5"d϶97(#|fxM#qv , _~]?;a*FY N5&aM*>ɒwe{0Zgf0y!Eܵ^=18/y{o;m+ɄD-ƶkͮ.NL!;/8hL%*K8QRJUR0ETbR*V1.CS".8ljC#L2DIh&i6O5ؠd$oZM u{`;У",=غw|1e)OLvY  1-Ưe!4$>H-载ɗ}p`5v1_bZhiksxQTdZZ8>JJ*]@fHH$ߢQe"?3{\P|QEfۄE@ @_.48A dO2 vyKHG6M'1H"^@NSWg}E`e"p.u!Tp\,Jf#z5:5n0pEW_:H^ {Ǡ`9b>Ȑ1v J閌O WФ]ƟYE5U% F/@EDeIH`K=y$Jh16e9d^-ǸaFL?WDWC){2r~5畢!ܮLe=.Bswz]a[سQ'bV-j%6P?2b`CL_"G,(.c-',?焖l;=|Rp-eǥBJwQպ'dSBHm|,&9faF%(be\F޹A|oߍd[n7[*K?+5LuJќ9V-oCxfUɣ)]Z -U#o+w ;ws%3^rSe挳S\=/-w/Wl,yfX)7%jXwhnr9+ΠdgsK`6ĨlX;Җ!^Z^MsԴLXGJ ASJ/Ò4[#+ sKץ\*TjcV`+>.{"UFG*ȒF2 9A}/a⟦]B;>\BixX[m7Nv%(OWX c;ZS3E1kE*B23u>} *q=Ć3=7:NJΙg&_h;A~h`[w!{}U$1},Pg? TjLӦx".Ղa()`A>Tl@ih _g1ȊZ`TSMYj]ަCU]@ :&30 햐*#iT; (T1%y4}QU{e޸K%:R';N&Q$ 9Õi#-,ׅrci)n=={2 I6~dQ' Wt:m Ty +6,[yv͡~qBDΚi)Y-7ѧ^D)+Ȕ/}/Z"~0ռEvVb()1O{Z-~6MDDIv!l x<t^)^TTI3TdoXڀ*^!#ƉT:7\a5JL躹p+%b$Z , {T]mF&=j塄d}now^J?]8 *P-u춿pyΚ0[Q] fJaj6P}JYTS$-o5{O0lN^+wgv ݩ[3hz? ѱ@ !<]h/4T!26xpt>FXOEsPsSd׹fmT YIfa&67*ϻ1C).#18\fR(=X7n~+W5ZK51{ZG|]!b$W-?l'ʂs , >[Zs*Ƌ_3hA߳Nje5"g|XÔڋAE$Y{oޜEJ Cf2}{Du +QPϨʃPjZ/BoȊ ڧ=dzqzlI ~cpˆeZ0ÐꡖsڌeVM6_ (NqX[}#w"g mv F~ɿGq`A_ml!H:EB|c|pT ]pk]p:$@v@.Tr$. w^Fp U"K̓mc]tIcnjx )<{l__C_K(?12(bPQ5X'F29 ^r_ Rc&04 16$%b] .B?OH8=vXU(MW V/2ۚz6 FxDx/+Ûj9p$NjM;8UbV|7S flikd:~ҘHڲ.2aS[(&ez6v_q0ZQNT/ŐK ,¨}dzԈ|W cu%L^Lk!i (1 \F9( FqM7BP ?w5M-(Ҍ˷* (e_%Ȟeڇ^KZ`6,>`(sgf-?dX=͓HNb&9h%apRkޫ6v/>/>˅'O` GtKe|}]%M;Y\hW Z<Ś0HdS)^]v.A/2"؟[bE54/)0nw;zWHZ9~y%GCq,}XVѷ:g {~{s8Ir\Q>Q$<@# ̿._wCgA0f A | 단BF:3j4 E$tjs8?ԘE#~lQ˺q=3;w 닑yم\_ I.qݭ3okjֳڙ@9AJ_]biZ`[YWM 25Vam^"QC$7Fϟݳ{IH2F292ɧ8\J/C.u89]j:M zFҺ={x %xQ=x,Zid}KBQ_cIv9E*ddB:.h^}APM .S'XF5Be_[SWhezMJ&+"\V p$ute` Ӑ!cY?T1BR?},5q fܙimsQUvyWz"u~G.xsvrхF\ b-$v4BZcfm.}iEݗ)p88I~/8,n蝯Oo줳 [u6< .yWJT-{#lhB(VښvK+;Cq0@"Q-"!w[v]D4)$h<w6Enn֧pgzZV?An4Ic.3ZeݶM~Gl/Z^n oA%rͭtKuG"DPb$d5¼CH|^VE]-^ EEMlj&]8QV %<8W K.`*j $!CEdE.!""&F(,Tt)*w!T♖4!x^r>l5QfȊL?KarJryf=*!P: psl^tȱ,JV|ܬM<ͧA:XÒףۗpnbZHl(񾪇M _sÅv5S{Է k tߜc'9X3MNsU\ڔ^8\&_? *8K` W ocl5*Ehe; k 6`q f?{HG, Ho tcJb5y3˕E7+Q.h)Yuj""˪,H4Gvfa p&ZBAG`wSX?sI֦h`Va!̈Qr;ؿW^ʻoHii9Ӛ*O`EBWml<+* Ѐͬ({ mr֩iͫM1㿠}_Uśzs\I[ ߑg^O*޷xv{Ƹז, _Ug+gCOdNQQ*=4vZH1k(v/ S~&GwW=qש|yK&i6:ҍθ59$L |q,go օj\BI=kQ Xݦ UlP*]20>VoDKP=m<9.8b 3bv1?:;冑%~(Uګr T0"V̵rDV6cԍ|[ :8wLsT`Dgpt1)Gq Ϯ(OJr`/jqjLoVdۖh 4ShRF0hʐ׎)PNVIm rL̍$OEOi3좜efL1k,($[bfAkWO.)%HY*eq7\5gĽWxAӒl/n%*OrQsƺ5i1rZ#E R58؇ʂwmnɾ;iQRee7m 1*{cCD X88^X]ȩQ[Ghq%͑oX>1ISX d6ZC g ə}8(0G'& KMC 96yNT5BB1yeM L ?6,ShF^>C=dx6GK4]-\];;㉀#{QC5Z$j@ܩ#' A?s |&ެ>%={:yʲO6Y8bJ+=ŝr%2U~Z&W[rBq xU;x{U>}7`o0';՗GZGx "!U5/ΟѪMh{Jsx N|C ѯyx2 v&l@ɬ:§qbJ0 ' >Sm[ƣU5A wfJqyj~ >l,ho-ai:T뺾X{dWq^*I6B08NV;ǭi@d [ڨrDeHxaM7+7: /Wfae8hrwB?,'!*L)_ه a-4\.,)Um7e~#$d 15C6kYg^C=~  0ߺGm7u#NJaPP&/ISVwz.-t:cҦ.|vue(3$)#Cf&ַͯ dXS1оi:P:l@֊`|bZ(܏"̙}]bP'Y--i ݻ>rwrwaմ[jH0e4hE!!4Q$l6ڗnI{J0dI2Fm{[MUf`et#=C@c  !qX%J2G*c @5TCWPK1'MX拉ǍMͶ5uXW9pw3Ye&6'8W +fj]ɮ}xŐ; Sfj'ZeIzu&RQPkj fAKW`$]s=iW C@ V(`*1N8` =W_E9qԁNLuLM^yV){lAPBs7\N28wc!uͦYBB+XS`\*߆Ot5:Ǣ3amٗ.n)yna>GI@C[ןAI:5F,8Ixh8S6`{=Pd"(MV{^n"rbCL>M& /<`L]>]dh_H>i#enJykl97.Z1PP(kM2No:~>uNJN_:|FN^$Ʒ=o(9WJ՛dO`M6]Sֈ)BKXHpf̑u{ܺ8.|3(dv"J%Ho 12p qηM*[Ŧ]`K*$z9Mu/X)dї5,e(rm5.LLQϦc?ҹt W;I/i˷.g?J9ɸM7Oڒ yz,M'g# _ivd g2nnj[wO ?ix}XqC{\fI u}U89|~wچ+. U) T" iY %=ܻ>PL~bLivKWь!2"4k7Va5 GPO%BmoE.<\A r飛iH!IX1WmPsw㘤Wa Vu Ϊ2Nz5Yɗ{Mp.ɴoѾOXٶ@\/[z_-NhpoIs[LQY"Fӊs[ _CܒHZ2gR af3vDOnEv -iEQr3sZu2A,mr43e#Uz39h}# u2 Lpڄs@`^apl)!I* ?g1HL I{@C5@c%k"{FHQJĦ&. !L{X\a>1eE[z:\kCjT.l6SVI M m05YRqp8p#8ߦs}=q.M6cATa+E*bu2ˋcҁ.>|GdCÑK4:" E1:d:'چ!i>Xp zղv+2lzSMFoɋF@AZ"eذrI$|K4-Ћ%&T ¥U鄑W=$0m~ \m$;)akܠ<\' _9f jŎDQ>9>`5JD# |Q=xb$Aqmf qCG}F&[IcڜCAGNW Io7KP=գn|,v}{?YyjIQ\(2%'Z,,\6:݇xOeۦ!aVYƔ'˗øf!uJzİfBtn2tvx^n#kx.4(1#0&B( bBvFT(]"sDҺA$QNC}g]eCL܏tk>lGŎ} j,7_\|{q4LW_A!IKMIXk@-,u^ diBԊ3h0 #*\o7CL4yT';YhEYvJנ}.H])p#HG#A1PkIG9E9m6oʮy͊\?n8=_O̎7~œ Ju!N!֨ e7Jxʹ9V)eڬVIXMqjAna3,FS-CyQ c*YGR@7LE}wARNHb+mS^q{Ej6{,/ؾbźnxm]ZQn%?f=vtİB*zF4luN''}v4hf9Fۯ:ouFN84Ζ `91TM듼 }qvlTm1Qs֮$Q`6.SfBUꎟenC%6v{Ϫu}[(Dՠo4#5bnO-Z'V[2{Nڟ>Lw6Ը)_|")KSZ.|ɿ-!00TB*n8~[ $;,8 "'kN.Nsyd[b]9Ew0o,i^3 #P&:ˆ7CLcQ. %t٭Km'u"IHztq#|.[n5HûHaABp&>Bei/* BCd|>ӘLg'!A/*{ *7.ܚ6絀 X zatc{*A:ο RlꋫZc3]WQ$f˹#fL 5|Oݹbb6 d߉BjM M1o|+TӞ{M JĂN#xIcy|tz'+[~7;.X"(ASU`% hNLXɨf \*!gM QԀT{:!gKЙ'/osNS e>&7c)]^_!t~thjZnBsT?}K}qgŊSx7׃6( HR0E9:tEGST OE Y>.:T<ĒȧnqF>.M<3t6X#̞U?< cN$vd-j@%(Gw׋B" 7[g{|sM_vF` \7H.-_7J+rwn#<#';WMMAMgc=;ڣ8wUlnFhɥUÉ467~|Zd>\6 N$UGuSg+ރ#*sm+Zk}8ⱽMڕ =KiBF/RM˩ߙ;x>7D=,qt1(ѧݝush}57X LDUv`,x:UJIyf-&J}#NP?wU{ra@ZJ.!gJ184I:Y>tb(` TjuA95zyW> tC W$٘RgblY{-CO뤟UƑ7Nz%:Zަ@߂X2{w l3F7蠋wi!oxt^3kVцK1Jm6F)[ ~OagԼ鶚YVr1} ,'>՟`mBajǁeS!ΫBw+3*$7kd*5^aXs"vBDs,[M󶳘4e~@_B:q}Tp|GhМ$mH7oG꜎(OaGX-=}M^\ +hbu{N垃V1(љqzWB&xrneb4QNU6 {ϻ&BspJj\ 7Š^͚)tzVsC?^ q9cV ɞxQ@rV׌ʴ}x##?9 ǁ@9^hJX9@6$Pf)>]M! iYU 8>M 6?+e?%+`:fKF\_pyK{9/h=iyBT\;6^F`BC"ϒWoOGxj,{CXf8ğVAB2B}[B=˗vDF>\-4ϯ n[|Q.-VM3# O9 g- Ѽm^u_%~ 8eR3;ġ2a_<,ߟȿK/e 3{ỡk3jaJoSJ y4/tHӿK?W ]=7\%ꐬ8>D[}pgCc"_4b+TA662<v]t)ޡP rW<eUX,ߋ.t{8CI,wKyO7h1Kk@oAm%;Cٰ/쎠 )^_!O`]wP(U@ ڳN]%Ãk.A)cٍ,@՜޿V`(bﲎVjTK|41kHFcs?m>ǼNN)r08HPcNWQ(YLG` bqM$AͿ7,@ϩ-~|1dv;ٝp3?'OCQS`Sbq=OPlCF9\nNi5W%Q#Պ +M]<&([g݈LPzZ7ouzxI pOV`ճVb 0i &=d&Ƀ7 G9 =M oګ5dvݒL-c-%S&dk\D\ӆWa|*p-Bíϛ¯K 4T{UM`e.)2n1ydV_n/&7d34|:瑮5͉$Y65⍪ZzĄkXxN쉥IMLTd`"d%s!**_g%.巁1mWP\@ŘRR8!2`٦O/5řV{ Lgl>ka1gbej^ExW|ьqq9aɶdf$ wkzss,>ole2](@n:!BG(JTZӏb3R48dB֛)k2XCqLf}1G0hI MǺl-q#W:i30r')h|\D׭LA8gSA)sےIG9_6B'tz4=,| ~."HY| sH-dH]E"DkJ?|QA0&ýToVpJgVh! X\W{':kC K9;m4aQHWo?ⲯs al:)vUILx74mtVGf1PeIAeW[ g +,KϤ+ JߙV#֗% f?!Ph8<ٴl<-Wlݑ<6ap= daVQ_[l?Amv~KƢXs[e#p a11N]RJTedgzkPwևwmA@㌚iY}/qbkd6ݹOn4,Hs$QDc _g]_hiP_К&%@BehE|`_D)gdoY(Ѣw&{c7#K+ kWAuӐ02g?C !.=yJ[Wb48ߓQHizS,ImϪ\i92x"Jo> Pz Cd, ,f8>õ|1m8)zp5{ :K0Tց=D3%i5c) zKKT'V*y37a&'F&W] #}VK2N] e#B?#2]BEd-ƈyHŷdX:֡}i#a-4w-W'kmY"j8ʭTnLꖉ+%#vnu 'K`1;O2Ϥ.R4 |jГ s<s%x^ՖꑀL 9c^؝ACn>x㬣ӹsub$5l鱤Ojuu S*kfE ^DY`+.26@}n:1Hf2d6ANn7\nc,(ZPaCod Pʯ|9L>U0ٶ"Η]{ǒ Gt?JL^oye^C{}Ae]n.SDGy ȭ1Tk Sta[|,g lɻbb9)H}/",߅O&?O"eR3.KS`{ T ̭17*nl',__W.xMCpCḆEjݳ@;>PWNUL<'&>lƣHOJXY@m'LUdxsdu Ft FQI;OoPSHaB{T0To ˵,]}xd{.f]Ď+Z 3c-DM;TdgF߱a|?yaW?Vz1x_*kEL"^H).jJnLos?L%-rɣ'?jWVI/tߚ؅[ Lc-H+#)#fcljۜ &aR=ԠWwH9u|S҇ڵ$نHzbPLg)޲=?{ok0m9vxqߤ/x>(u$u.Vnnecm82:TY]*mXnۋ ~&*i@AN^8+EM hhтg 1%!VD+u&Sײ%NN2շW͊2B>ʢyҩ<{h"dNJ9}՛ɩmK*[m{ő!Ki80Oxd;;UM/Ck<7&gqz[o220R=hv@|e+&xOkU:_h&[>`N_q׉#UԸ%t o$3y,>\q5 ,U:ڌs_~!u5!KPZW k3G`E ƥ8J@`7 Ԡ1 3@)/@xÀ 2pF6aunClT_4пMlT4o+4n@.0黁iݳ!h|bS瑑 B_z]ES ,ފsTM ėFpu&J`hf+ ٿ0`Tb5CuƌY"Gc؊grMݰ[=]χ'C,Et ~Ъ99/'D6wjB3]fHN\Ú&- ܠm^+%T)hI8?wɩiDEBC*h󸏵𛞢>:%&_Z#TyL@!U錷 @Mޠe҄)°&٘ysS(NоQ_>&NVd04󔇺*"-OPbsM!ȰDޮ<=7P!w{m&G^.u͙j, nQ]1&g mpn_1h%jK_Zv+ (E5+ŔlyKʐgܮZ%v9afoΜ+h7|gnrH4:vX)5s͗O$5UJZ]Pmws->()8 fV\Xls'%8z-<2ѧMԖ⫿nlbE:1~qR\lii-.{tƳMk[TA.+цzI5ޞ-_=Hq/ @ =zkf0XuLT"AەXO| fg"O^U?\jvȖ׹ I8)[%=]tǎ)H})I$㬸'?b'XE M'+9LauGX~4lMK;YZGjpѹ2f8Pl7/ufK `]̬vU#OZY=tIV'HK.hfzk.k=D ɼǖln |n +D՚:&]㕰dCg h13vZ{+ٷB@D6.NSPunCQHb58L5DT.YjNK,N$C!,i}c ,)PyC)^+Qm ۜ{eQm#$?9wTo7duT=e meBiLvm9Ni+ڱW |X]>`Oj0Z& /?L>;i3[lまYjVE~_DSj_ϗ~I!m~ψ)Zqxf $RK2M9Hmus`QSw,ɲ<4Lxd,/GfYI17C)a &lk /ފpLB֎?) j73poCɻ) ag䘾m.UYܮ]U~#sSF~t22ET!(F wTZ -,T w~vKtvJ=9S2u;y=lWy*L}CO)Ӛ" h6k@p@!+_?ih+3J$$9aLJ:zt0=7?UlMmP(J9"uT'Cj PLG:aBD} *5 :t.m3vَ]*Em FP]%|):?ħiC Ow-!#f5CYk3Ջ`yOv>WBQ*{|RC Z'I隥+ك6b2i+}*? hF^FCRcݒd3ܬu\77qP%ːņaK8ғXm m ~ Z_5vl\ 65B`xb3{u3 E_Hr/nRjнG! žLCQi3 @rXQ_`F7Rzҋ `:ō,'{b3GUa "Pk:zv%v(*X"iXK%C;lƷ(:܂,qӈGWk0;WsžOC*dzڔ!֔рg);ʼ6Ϛw=ci 4#"9+41P",o^ɱ.w:HlQIdGn<[7ͪkyܒ0?<Y&5[.ẹ*~]C~p&Nrs5eo{mN\<ll⼣w?rwSdm!! K;Y,B<e okK3;_+ioχ1OrTWuLÍ9a@X%H31+V @PDW;wP0&53%Ot-275EL4C~;s.,5b7@f  $Y)k֚RpGji|Z(n}Ă.Tb|Qzeo(G|fs6=S布XJG08%:iwL:čR]}~AiH^SG>UT;^GQ #kq!!b'‘hB3䃏ui%[2Q=waab?7M^ W,Bsxi}+ 7#ȑK">MIRY#tu&'fXAۓj-L+{b+;:9:~֕6G袺v~ӼTB/;ɮVIքycto#n _!LED%UC0MO/00٫VǸar.{co W3(8&]ثstq,܈c5 }g(`|bLHq;ĊY Dn(|œgF!ـz뮁ΩX K;mD?-Wc4ղ@%`D6݌ߣDKvFv^6v&xS]/-#l#N\WN *@Yg|Hȴ eO%,… ^>K81?pN-Wò {le#2Vk (1gxj {s (\C1aem~=җ;>}DO"2T[JO ޑ " >y .=h0ҹ*"5؀Ar_ḀD=eϪ-NADe;q4~!6QcyfeO{;OMw-=r؋+J嵄KE3}R0Р9K6k[y7E2NQN/iy7tًa<).^3X2zX0iΥhukWlNb~*LpRImGs- |ۘ>@jtf]&TۥNЊ-#u`s i(6zBhT B؁ P^YY|һNa*DlY)N9kX74!f V@`8$#"ťGFիv괜jcJ(b㠾)#b+;B-]ϖDƏ#L.zk߮RCR_Yȝ޵*4ǿ钛VXoz=gZZn$#B'ǀ۲\/'ff?7#̣BNB5PB"zM C\ ?yw Lilͧ[CLȮד7=~X$G|fw씏\Y3cV GPA'R= =1}DL8x?b2^$G (ZҤrH*mہ#)4F,+_*VD?ANCuVBES$ n$XAԫ;1J@ia΂|:b_R'V 1*s9[ʥ eZ([vr7?LTF׶v!7Ԍc^432Ȝu?5yD -f`ҤrT?Y1\n^QFXg )pՄER Bο( "8CGӚ:픑4-Zrs9xG |E?LsB3,HH.aп>roXl>b΢nڤ~8X尲+tM%|MPĆ< {e&˚Q(P8O+G(+IγlKwKy ".|. &_zj2дuЬ; fw1 ʢnY7ĂI;ӿ#ԇq>Rjh<-&VQ£$.vc=|X4t>iG܇ ߪ֘b2O5>>ZNE圷bMl<n7Q41ֶ3*'͇u-l_Q|d[!W}7vZ6|$$djQSVj8Kx O2U,|Uҍ f%0Cn 89^.eߦeU m<_ t-s5{XXlہoSMY)y%?edVwJf4)fo̙qWaB}BўcHND PI3Vi?>U6%'7îf}#|&4Lb Jhxԡ]3c>a٣C X'!wE"żonctOK,K>lc f븏~ HpGOd@.g_4%EwP,-*[Wrϩ2a;7'z-slR_BVٴl}(9r<ͤ<jo5y2N9s:lEA,ttؤPWmf?;4_T}&mRvVf/;g/e=Cqm]naA޶{Ne?+.|[iI~ےSm4s*Zǩ?`Y+Ȳ= Ldɝ;T٫++#)>Mu=},uj٥,.Ykԙ=ˇwqm ѦgzX4LuhD;6AvtuJ*G&VȞaD笨 Ql}gk!h@/RV aB ugm•k [s61}A5K -s0(.uIU_7U^:Dr{9Q0 䌊ᮥ$䯗@Tw^RY^;GU1/F䩑x_N+8L@XMy  I[j7i+ڐ(+qJRsSocq2|%T~6Š]RDFA/=TAAFVj-0~f@{:u ڎàuyCIa嚋rCҀsZYIDzs#oB4qv\tmMtʱtduȍI|v8ws-bm!x0K?h (gA|S{,u@]dtkUkZ$BQ3iq~r`PG~^Ɗ=>\;[ݺ1&z[$DRBvRwƿ&lf? PXcOJ%8F8dBx N!!_Q @[`/>$Qﺜm~ExDƜ`IM#V'r4!df]ʥ|vgq|#@!˂q@T̀0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/n019023l.afm0000644000077100007710000007656207260330350015427 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusSanL-ReguItal FullName Nimbus Sans L Regular Italic FamilyName Nimbus Sans L Weight Regular ItalicAngle -12.0 IsFixedPitch false UnderlinePosition -151 UnderlineThickness 50 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -178 -284 1108 953 CapHeight 729 XHeight 524 Descender -213 Ascender 729 StartCharMetrics 316 C 32 ; WX 278 ; N space ; B 213 0 213 0 ; C 33 ; WX 278 ; N exclam ; B 124 0 363 729 ; C 34 ; WX 355 ; N quotedbl ; B 177 464 455 709 ; C 35 ; WX 556 ; N numbersign ; B 54 -20 649 697 ; C 36 ; WX 556 ; N dollar ; B 69 -126 613 770 ; C 37 ; WX 889 ; N percent ; B 134 -20 895 709 ; C 38 ; WX 667 ; N ampersand ; B 83 -23 644 709 ; C 39 ; WX 222 ; N quoteright ; B 166 477 309 708 ; C 40 ; WX 333 ; N parenleft ; B 113 -213 446 729 ; C 41 ; WX 333 ; N parenright ; B -7 -213 325 729 ; C 42 ; WX 389 ; N asterisk ; B 169 438 471 729 ; C 43 ; WX 584 ; N plus ; B 92 -11 591 473 ; C 44 ; WX 278 ; N comma ; B 55 -150 214 103 ; C 45 ; WX 333 ; N hyphen ; B 97 240 351 312 ; C 46 ; WX 278 ; N period ; B 87 0 213 103 ; C 47 ; WX 278 ; N slash ; B -12 -20 434 729 ; C 48 ; WX 556 ; N zero ; B 98 -23 598 709 ; C 49 ; WX 556 ; N one ; B 208 0 498 709 ; C 50 ; WX 556 ; N two ; B 34 0 620 709 ; C 51 ; WX 556 ; N three ; B 71 -23 599 709 ; C 52 ; WX 556 ; N four ; B 63 0 573 709 ; C 53 ; WX 556 ; N five ; B 70 -23 629 709 ; C 54 ; WX 556 ; N six ; B 93 -23 611 709 ; C 55 ; WX 556 ; N seven ; B 137 0 671 709 ; C 56 ; WX 556 ; N eight ; B 74 -23 604 709 ; C 57 ; WX 556 ; N nine ; B 83 -23 599 709 ; C 58 ; WX 278 ; N colon ; B 110 0 326 524 ; C 59 ; WX 278 ; N semicolon ; B 78 -150 325 524 ; C 60 ; WX 584 ; N less ; B 87 -9 635 474 ; C 61 ; WX 584 ; N equal ; B 74 111 609 355 ; C 62 ; WX 584 ; N greater ; B 48 -9 596 474 ; C 63 ; WX 556 ; N question ; B 184 0 630 741 ; C 64 ; WX 1015 ; N at ; B 80 -142 1036 741 ; C 65 ; WX 667 ; N A ; B 17 0 653 729 ; C 66 ; WX 667 ; N B ; B 79 0 711 729 ; C 67 ; WX 722 ; N C ; B 112 -23 770 741 ; C 68 ; WX 722 ; N D ; B 89 0 759 729 ; C 69 ; WX 667 ; N E ; B 90 0 751 729 ; C 70 ; WX 611 ; N F ; B 90 0 734 729 ; C 71 ; WX 778 ; N G ; B 109 -23 809 741 ; C 72 ; WX 722 ; N H ; B 83 0 799 729 ; C 73 ; WX 278 ; N I ; B 100 0 349 729 ; C 74 ; WX 500 ; N J ; B 47 -23 581 729 ; C 75 ; WX 667 ; N K ; B 79 0 813 729 ; C 76 ; WX 556 ; N L ; B 80 0 551 729 ; C 77 ; WX 833 ; N M ; B 75 0 916 729 ; C 78 ; WX 722 ; N N ; B 76 0 801 729 ; C 79 ; WX 778 ; N O ; B 104 -23 828 741 ; C 80 ; WX 667 ; N P ; B 91 0 733 729 ; C 81 ; WX 778 ; N Q ; B 104 -59 828 741 ; C 82 ; WX 722 ; N R ; B 93 0 770 729 ; C 83 ; WX 667 ; N S ; B 89 -23 714 741 ; C 84 ; WX 611 ; N T ; B 158 0 748 729 ; C 85 ; WX 722 ; N U ; B 124 -23 800 729 ; C 86 ; WX 667 ; N V ; B 185 0 800 729 ; C 87 ; WX 944 ; N W ; B 177 0 1084 729 ; C 88 ; WX 667 ; N X ; B 22 0 794 729 ; C 89 ; WX 667 ; N Y ; B 168 0 816 729 ; C 90 ; WX 611 ; N Z ; B 28 0 737 729 ; C 91 ; WX 278 ; N bracketleft ; B 19 -213 405 729 ; C 92 ; WX 278 ; N backslash ; B 147 -20 280 729 ; C 93 ; WX 278 ; N bracketright ; B -23 -213 364 729 ; C 94 ; WX 469 ; N asciicircum ; B 115 329 496 709 ; C 95 ; WX 556 ; N underscore ; B -59 -176 551 -126 ; C 96 ; WX 222 ; N quoteleft ; B 163 477 308 709 ; C 97 ; WX 556 ; N a ; B 65 -23 568 539 ; C 98 ; WX 556 ; N b ; B 54 -23 588 729 ; C 99 ; WX 500 ; N c ; B 76 -23 554 539 ; C 100 ; WX 556 ; N d ; B 73 -23 650 729 ; C 101 ; WX 556 ; N e ; B 84 -23 580 539 ; C 102 ; WX 278 ; N f ; B 89 0 413 732 ; C 103 ; WX 556 ; N g ; B 32 -218 601 539 ; C 104 ; WX 556 ; N h ; B 70 0 574 729 ; C 105 ; WX 222 ; N i ; B 66 0 305 729 ; C 106 ; WX 222 ; N j ; B -65 -218 308 729 ; C 107 ; WX 500 ; N k ; B 58 0 584 729 ; C 108 ; WX 222 ; N l ; B 68 0 307 729 ; C 109 ; WX 833 ; N m ; B 71 0 852 539 ; C 110 ; WX 556 ; N n ; B 70 0 574 539 ; C 111 ; WX 556 ; N o ; B 80 -23 576 539 ; C 112 ; WX 556 ; N p ; B 7 -213 586 539 ; C 113 ; WX 556 ; N q ; B 71 -213 607 539 ; C 114 ; WX 333 ; N r ; B 69 0 436 539 ; C 115 ; WX 500 ; N s ; B 61 -23 520 539 ; C 116 ; WX 278 ; N t ; B 97 -23 366 668 ; C 117 ; WX 556 ; N u ; B 88 -23 594 524 ; C 118 ; WX 500 ; N v ; B 122 0 598 524 ; C 119 ; WX 722 ; N w ; B 118 0 820 524 ; C 120 ; WX 500 ; N x ; B 17 0 583 524 ; C 121 ; WX 500 ; N y ; B 8 -218 590 524 ; C 122 ; WX 500 ; N z ; B 31 0 557 524 ; C 123 ; WX 334 ; N braceleft ; B 91 -213 431 729 ; C 124 ; WX 260 ; N bar ; B 54 -212 315 729 ; C 125 ; WX 334 ; N braceright ; B -16 -213 324 729 ; C 126 ; WX 584 ; N asciitilde ; B 137 268 594 438 ; C 161 ; WX 333 ; N exclamdown ; B 76 -205 317 524 ; C 162 ; WX 556 ; N cent ; B 96 -120 585 628 ; C 163 ; WX 556 ; N sterling ; B 44 -23 628 729 ; C 164 ; WX 167 ; N fraction ; B -178 -20 486 709 ; C 165 ; WX 556 ; N yen ; B 100 0 696 709 ; C 166 ; WX 556 ; N florin ; B -32 -212 696 738 ; C 167 ; WX 556 ; N section ; B 63 -213 589 729 ; C 168 ; WX 556 ; N currency ; B 110 133 593 556 ; C 169 ; WX 191 ; N quotesingle ; B 173 464 292 709 ; C 170 ; WX 333 ; N quotedblleft ; B 146 477 449 709 ; C 171 ; WX 556 ; N guillemotleft ; B 147 106 548 438 ; C 172 ; WX 333 ; N guilsinglleft ; B 140 106 336 438 ; C 173 ; WX 333 ; N guilsinglright ; B 109 106 307 438 ; C 174 ; WX 500 ; N fi ; B 83 0 591 732 ; C 175 ; WX 500 ; N fl ; B 88 0 585 732 ; C 177 ; WX 556 ; N endash ; B 46 240 628 312 ; C 178 ; WX 556 ; N dagger ; B 127 -177 620 709 ; C 179 ; WX 556 ; N daggerdbl ; B 51 -177 620 709 ; C 180 ; WX 278 ; N periodcentered ; B 166 192 293 295 ; C 182 ; WX 537 ; N paragraph ; B 145 -178 677 729 ; C 183 ; WX 350 ; N bullet ; B 120 220 376 470 ; C 184 ; WX 222 ; N quotesinglbase ; B 37 -128 180 103 ; C 185 ; WX 333 ; N quotedblbase ; B 20 -128 322 103 ; C 186 ; WX 333 ; N quotedblright ; B 150 477 452 708 ; C 187 ; WX 556 ; N guillemotright ; B 121 106 518 438 ; C 188 ; WX 1000 ; N ellipsis ; B 115 0 907 103 ; C 189 ; WX 1000 ; N perthousand ; B 93 -20 1024 738 ; C 191 ; WX 611 ; N questiondown ; B 86 -217 531 524 ; C 193 ; WX 333 ; N grave ; B 179 592 357 740 ; C 194 ; WX 333 ; N acute ; B 218 592 458 740 ; C 195 ; WX 333 ; N circumflex ; B 146 591 433 741 ; C 196 ; WX 333 ; N tilde ; B 130 611 471 719 ; C 197 ; WX 333 ; N macron ; B 160 627 450 696 ; C 198 ; WX 333 ; N breve ; B 165 594 471 729 ; C 199 ; WX 333 ; N dotaccent ; B 244 612 370 715 ; C 200 ; WX 333 ; N dieresis ; B 159 612 446 715 ; C 202 ; WX 333 ; N ring ; B 216 579 396 754 ; C 203 ; WX 333 ; N cedilla ; B 1 -214 264 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 91 590 505 740 ; C 206 ; WX 333 ; N ogonek ; B 35 -205 246 0 ; C 207 ; WX 333 ; N caron ; B 176 592 463 740 ; C 208 ; WX 1000 ; N emdash ; B 42 240 1068 312 ; C 225 ; WX 1000 ; N AE ; B 11 0 1087 729 ; C 227 ; WX 370 ; N ordfeminine ; B 107 303 441 742 ; C 232 ; WX 556 ; N Lslash ; B 75 0 570 729 ; C 233 ; WX 778 ; N Oslash ; B 32 -24 867 741 ; C 234 ; WX 1000 ; N OE ; B 101 -23 1108 741 ; C 235 ; WX 365 ; N ordmasculine ; B 114 303 452 742 ; C 241 ; WX 889 ; N ae ; B 59 -23 915 539 ; C 245 ; WX 278 ; N dotlessi ; B 94 0 290 527 ; C 248 ; WX 222 ; N lslash ; B 62 0 312 729 ; C 249 ; WX 611 ; N oslash ; B 19 -30 639 541 ; C 250 ; WX 944 ; N oe ; B 85 -23 966 539 ; C 251 ; WX 611 ; N germandbls ; B 126 -23 655 729 ; C -1 ; WX 722 ; N Udieresis ; B 124 -23 800 914 ; C -1 ; WX 722 ; N Uacute ; B 124 -23 800 939 ; C -1 ; WX 667 ; N Scedilla ; B 89 -214 714 741 ; C -1 ; WX 611 ; N Tcaron ; B 158 0 748 939 ; C -1 ; WX 667 ; N Scaron ; B 89 -23 714 939 ; C -1 ; WX 722 ; N Rcaron ; B 93 0 770 939 ; C -1 ; WX 722 ; N Racute ; B 93 0 770 939 ; C -1 ; WX 667 ; N Sacute ; B 89 -23 714 939 ; C -1 ; WX 778 ; N Otilde ; B 104 -23 828 918 ; C -1 ; WX 556 ; N ucircumflex ; B 88 -23 594 741 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 104 -23 841 939 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 124 -23 806 939 ; C -1 ; WX 667 ; N Yacute ; B 168 0 816 939 ; C -1 ; WX 722 ; N Eth ; B 89 0 759 729 ; C -1 ; WX 722 ; N Dcroat ; B 89 0 759 729 ; C -1 ; WX 611 ; N Zacute ; B 28 0 737 939 ; C -1 ; WX 722 ; N Uring ; B 124 -23 800 953 ; C -1 ; WX 556 ; N gbreve ; B 32 -218 601 729 ; C -1 ; WX 556 ; N eogonek ; B 84 -205 580 539 ; C -1 ; WX 556 ; N edotaccent ; B 84 -23 580 715 ; C -1 ; WX 556 ; N ecaron ; B 84 -23 580 740 ; C -1 ; WX 722 ; N Ugrave ; B 124 -23 800 939 ; C -1 ; WX 667 ; N Thorn ; B 91 0 708 729 ; C -1 ; WX 556 ; N eacute ; B 84 -23 580 740 ; C -1 ; WX 556 ; N edieresis ; B 84 -23 580 715 ; C -1 ; WX 650 ; N dcaron ; B 73 -23 810 729 ; C -1 ; WX 500 ; N ccedilla ; B 76 -214 554 539 ; C -1 ; WX 500 ; N ccaron ; B 76 -23 563 740 ; C -1 ; WX 500 ; N cacute ; B 76 -23 575 740 ; C -1 ; WX 556 ; N aogonek ; B 65 -205 571 539 ; C -1 ; WX 556 ; N aring ; B 65 -23 568 754 ; C -1 ; WX 556 ; N atilde ; B 65 -23 583 719 ; C -1 ; WX 556 ; N abreve ; B 65 -23 582 729 ; C -1 ; WX 556 ; N egrave ; B 84 -23 580 740 ; C -1 ; WX 556 ; N agrave ; B 65 -23 568 740 ; C -1 ; WX 556 ; N aacute ; B 65 -23 570 740 ; C -1 ; WX 556 ; N adieresis ; B 65 -23 568 715 ; C -1 ; WX 722 ; N Uogonek ; B 124 -205 800 729 ; C -1 ; WX 556 ; N ugrave ; B 88 -23 594 740 ; C -1 ; WX 556 ; N uacute ; B 88 -23 594 740 ; C -1 ; WX 556 ; N udieresis ; B 88 -23 594 715 ; C -1 ; WX 319 ; N tcaron ; B 97 -23 492 801 ; C -1 ; WX 500 ; N scommaaccent ; B 61 -284 520 539 ; C -1 ; WX 611 ; N Zcaron ; B 28 0 737 939 ; C -1 ; WX 556 ; N ecircumflex ; B 84 -23 580 741 ; C -1 ; WX 722 ; N Ucircumflex ; B 124 -23 800 940 ; C -1 ; WX 556 ; N acircumflex ; B 65 -23 568 741 ; C -1 ; WX 611 ; N Zdotaccent ; B 28 0 737 914 ; C -1 ; WX 500 ; N scaron ; B 61 -23 547 740 ; C -1 ; WX 667 ; N Amacron ; B 17 0 663 895 ; C -1 ; WX 500 ; N sacute ; B 61 -23 545 740 ; C -1 ; WX 611 ; N Tcommaaccent ; B 158 -284 748 729 ; C -1 ; WX 667 ; N Ydieresis ; B 168 0 816 914 ; C -1 ; WX 556 ; N thorn ; B 7 -213 586 729 ; C -1 ; WX 667 ; N Emacron ; B 90 0 751 895 ; C -1 ; WX 778 ; N Ograve ; B 104 -23 828 939 ; C -1 ; WX 778 ; N Oacute ; B 104 -23 828 939 ; C -1 ; WX 778 ; N Odieresis ; B 104 -23 828 914 ; C -1 ; WX 722 ; N Ntilde ; B 76 0 801 918 ; C -1 ; WX 722 ; N Ncaron ; B 76 0 801 939 ; C -1 ; WX 722 ; N Nacute ; B 76 0 801 939 ; C -1 ; WX 556 ; N Lcaron ; B 80 0 551 729 ; C -1 ; WX 556 ; N Lacute ; B 80 0 551 939 ; C -1 ; WX 278 ; N Idotaccent ; B 100 0 389 914 ; C -1 ; WX 333 ; N racute ; B 69 0 498 740 ; C -1 ; WX 278 ; N Icircumflex ; B 100 0 454 940 ; C -1 ; WX 556 ; N ohungarumlaut ; B 80 -23 683 740 ; C -1 ; WX 556 ; N otilde ; B 80 -23 583 719 ; C -1 ; WX 556 ; N Euro ; B 12 -22 636 709 ; C -1 ; WX 556 ; N ocircumflex ; B 80 -23 576 741 ; C -1 ; WX 390 ; N onesuperior ; B 205 284 393 709 ; C -1 ; WX 390 ; N twosuperior ; B 100 284 468 709 ; C -1 ; WX 390 ; N threesuperior ; B 123 270 455 709 ; C -1 ; WX 278 ; N Igrave ; B 100 0 378 939 ; C -1 ; WX 278 ; N Iacute ; B 100 0 479 939 ; C -1 ; WX 278 ; N Imacron ; B 100 0 458 895 ; C -1 ; WX 278 ; N Iogonek ; B 28 -205 349 729 ; C -1 ; WX 278 ; N Idieresis ; B 100 0 467 907 ; C -1 ; WX 778 ; N Gbreve ; B 109 -23 809 928 ; C -1 ; WX 722 ; N Umacron ; B 124 -23 800 895 ; C -1 ; WX 667 ; N Kcommaaccent ; B 79 -284 813 729 ; C -1 ; WX 556 ; N ograve ; B 80 -23 576 740 ; C -1 ; WX 667 ; N Scommaaccent ; B 89 -284 714 741 ; C -1 ; WX 667 ; N Eogonek ; B 90 -205 751 729 ; C -1 ; WX 556 ; N oacute ; B 80 -23 576 740 ; C -1 ; WX 667 ; N Edotaccent ; B 90 0 751 914 ; C -1 ; WX 222 ; N iogonek ; B 0 -205 305 729 ; C -1 ; WX 527 ; N gcommaaccent ; B 3 -218 572 813 ; C -1 ; WX 556 ; N odieresis ; B 80 -23 576 715 ; C -1 ; WX 556 ; N ntilde ; B 70 0 589 719 ; C -1 ; WX 556 ; N ncaron ; B 70 0 578 740 ; C -1 ; WX 667 ; N Ecaron ; B 90 0 751 939 ; C -1 ; WX 667 ; N Ecircumflex ; B 90 0 751 940 ; C -1 ; WX 500 ; N scedilla ; B 61 -214 521 539 ; C -1 ; WX 333 ; N rcaron ; B 69 0 486 740 ; C -1 ; WX 667 ; N Egrave ; B 90 0 751 939 ; C -1 ; WX 667 ; N Eacute ; B 90 0 751 939 ; C -1 ; WX 778 ; N Gcommaaccent ; B 109 -284 809 741 ; C -1 ; WX 722 ; N Rcommaaccent ; B 93 -284 770 729 ; C -1 ; WX 667 ; N Edieresis ; B 90 0 751 914 ; C -1 ; WX 556 ; N nacute ; B 70 0 580 740 ; C -1 ; WX 556 ; N uogonek ; B 88 -205 594 524 ; C -1 ; WX 556 ; N umacron ; B 88 -23 594 696 ; C -1 ; WX 722 ; N Dcaron ; B 89 0 759 939 ; C -1 ; WX 307 ; N lcaron ; B 68 0 467 729 ; C -1 ; WX 722 ; N Ccaron ; B 112 -23 770 939 ; C -1 ; WX 722 ; N Cacute ; B 112 -23 770 939 ; C -1 ; WX 722 ; N Ccedilla ; B 112 -214 770 741 ; C -1 ; WX 606 ; N degree ; B 291 383 594 686 ; C -1 ; WX 667 ; N Aogonek ; B 17 -205 663 729 ; C -1 ; WX 584 ; N minus ; B 81 197 601 269 ; C -1 ; WX 584 ; N multiply ; B 113 34 568 427 ; C -1 ; WX 584 ; N divide ; B 92 0 591 462 ; C -1 ; WX 667 ; N Aring ; B 17 0 653 953 ; C -1 ; WX 1000 ; N trademark ; B 208 292 1096 729 ; C -1 ; WX 333 ; N rcommaaccent ; B 5 -284 436 539 ; C -1 ; WX 222 ; N lacute ; B 68 0 463 939 ; C -1 ; WX 556 ; N omacron ; B 80 -23 576 696 ; C -1 ; WX 667 ; N Atilde ; B 17 0 680 918 ; C -1 ; WX 278 ; N icircumflex ; B 94 0 406 741 ; C -1 ; WX 278 ; N igrave ; B 94 0 330 740 ; C -1 ; WX 556 ; N ncommaaccent ; B 70 -284 574 539 ; C -1 ; WX 222 ; N lcommaaccent ; B -1 -284 307 729 ; C -1 ; WX 584 ; N plusminus ; B 50 0 625 633 ; C -1 ; WX 947 ; N onehalf ; B 202 -20 965 709 ; C -1 ; WX 947 ; N onequarter ; B 205 -20 938 709 ; C -1 ; WX 947 ; N threequarters ; B 123 -20 938 709 ; C -1 ; WX 278 ; N iacute ; B 94 0 431 740 ; C -1 ; WX 667 ; N Abreve ; B 17 0 683 928 ; C -1 ; WX 500 ; N kcommaaccent ; B 58 -284 584 729 ; C -1 ; WX 778 ; N Omacron ; B 104 -23 828 895 ; C -1 ; WX 222 ; N imacron ; B 66 0 373 696 ; C -1 ; WX 556 ; N emacron ; B 84 -23 580 696 ; C -1 ; WX 556 ; N amacron ; B 65 -23 568 696 ; C -1 ; WX 278 ; N tcommaaccent ; B 55 -284 366 668 ; C -1 ; WX 500 ; N ydieresis ; B 8 -218 590 715 ; C -1 ; WX 500 ; N zdotaccent ; B 31 0 557 715 ; C -1 ; WX 500 ; N zcaron ; B 31 0 557 740 ; C -1 ; WX 500 ; N zacute ; B 31 0 557 740 ; C -1 ; WX 500 ; N yacute ; B 8 -218 590 740 ; C -1 ; WX 556 ; N uhungarumlaut ; B 88 -23 683 740 ; C -1 ; WX 556 ; N eth ; B 80 -23 576 743 ; C -1 ; WX 556 ; N uring ; B 88 -23 594 754 ; C -1 ; WX 778 ; N Ocircumflex ; B 104 -23 828 940 ; C -1 ; WX 333 ; N commaaccent ; B 57 -284 205 -60 ; C -1 ; WX 737 ; N copyright ; B 55 -22 836 742 ; C -1 ; WX 737 ; N registered ; B 55 -22 836 742 ; C -1 ; WX 667 ; N Acircumflex ; B 17 0 653 940 ; C -1 ; WX 278 ; N idieresis ; B 94 0 419 708 ; C -1 ; WX 489 ; N lozenge ; B 16 0 462 744 ; C -1 ; WX 712 ; N Delta ; B 10 0 701 729 ; C -1 ; WX 584 ; N notequal ; B 74 2 609 480 ; C -1 ; WX 542 ; N radical ; B 102 -36 705 913 ; C -1 ; WX 667 ; N Agrave ; B 17 0 653 939 ; C -1 ; WX 667 ; N Aacute ; B 17 0 667 939 ; C -1 ; WX 584 ; N lessequal ; B 45 0 659 584 ; C -1 ; WX 584 ; N greaterequal ; B 56 0 626 584 ; C -1 ; WX 584 ; N logicalnot ; B 99 86 619 377 ; C -1 ; WX 711 ; N summation ; B -18 -97 760 762 ; C -1 ; WX 490 ; N partialdiff ; B 22 -15 458 750 ; C -1 ; WX 722 ; N Ncommaaccent ; B 76 -284 801 729 ; C -1 ; WX 556 ; N dcroat ; B 73 -23 695 729 ; C -1 ; WX 260 ; N brokenbar ; B 54 -212 315 729 ; C -1 ; WX 556 ; N Lcommaaccent ; B 80 -284 551 729 ; C -1 ; WX 667 ; N Adieresis ; B 17 0 662 914 ; C -1 ; WX 556 ; N mu ; B 18 -220 593 524 ; C -1 ; WX 278 ; N .notdef ; B 213 0 213 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -41 KPX A Ccedilla -41 KPX A G -41 KPX A O -37 KPX A Odieresis -37 KPX A Q -38 KPX A T -103 KPX A U -42 KPX A Uacute -42 KPX A Ucircumflex -42 KPX A Udieresis -42 KPX A Ugrave -42 KPX A V -81 KPX A W -57 KPX A Y -104 KPX A a -16 KPX A b -5 KPX A c -16 KPX A ccedilla -16 KPX A comma -4 KPX A d -14 KPX A e -22 KPX A g -17 KPX A guillemotleft -51 KPX A guilsinglleft -47 KPX A hyphen -8 KPX A o -19 KPX A period -2 KPX A q -15 KPX A quotedblright -60 KPX A quoteright -68 KPX A t -22 KPX A u -18 KPX A v -40 KPX A w -29 KPX A y -44 KPX Aacute C -42 KPX Aacute G -42 KPX Aacute O -38 KPX Aacute Q -39 KPX Aacute T -103 KPX Aacute U -43 KPX Aacute V -81 KPX Aacute W -57 KPX Aacute Y -104 KPX Aacute a -16 KPX Aacute b -6 KPX Aacute c -17 KPX Aacute comma -4 KPX Aacute d -15 KPX Aacute e -23 KPX Aacute g -17 KPX Aacute guillemotleft -51 KPX Aacute guilsinglleft -48 KPX Aacute hyphen -9 KPX Aacute o -20 KPX Aacute period -3 KPX Aacute q -16 KPX Aacute quoteright -68 KPX Aacute t -23 KPX Aacute u -20 KPX Aacute v -40 KPX Aacute w -29 KPX Aacute y -44 KPX Acircumflex C -41 KPX Acircumflex G -41 KPX Acircumflex O -37 KPX Acircumflex Q -38 KPX Acircumflex T -103 KPX Acircumflex U -42 KPX Acircumflex V -81 KPX Acircumflex W -57 KPX Acircumflex Y -104 KPX Acircumflex comma -4 KPX Acircumflex period -2 KPX Adieresis C -42 KPX Adieresis G -41 KPX Adieresis O -38 KPX Adieresis Q -39 KPX Adieresis T -103 KPX Adieresis U -43 KPX Adieresis V -81 KPX Adieresis W -57 KPX Adieresis Y -104 KPX Adieresis a -16 KPX Adieresis b -5 KPX Adieresis c -17 KPX Adieresis comma -4 KPX Adieresis d -14 KPX Adieresis g -17 KPX Adieresis guillemotleft -51 KPX Adieresis guilsinglleft -48 KPX Adieresis hyphen -8 KPX Adieresis o -19 KPX Adieresis period -3 KPX Adieresis q -15 KPX Adieresis quotedblright -60 KPX Adieresis quoteright -68 KPX Adieresis t -22 KPX Adieresis u -19 KPX Adieresis v -40 KPX Adieresis w -29 KPX Adieresis y -44 KPX Agrave C -41 KPX Agrave G -41 KPX Agrave O -37 KPX Agrave Q -38 KPX Agrave T -103 KPX Agrave U -42 KPX Agrave V -81 KPX Agrave W -57 KPX Agrave Y -104 KPX Agrave comma -4 KPX Agrave period -2 KPX Aring C -41 KPX Aring G -41 KPX Aring O -37 KPX Aring Q -38 KPX Aring T -103 KPX Aring U -42 KPX Aring V -81 KPX Aring W -57 KPX Aring Y -104 KPX Aring a -16 KPX Aring b -5 KPX Aring c -16 KPX Aring comma -4 KPX Aring d -14 KPX Aring e -22 KPX Aring g -17 KPX Aring guillemotleft -51 KPX Aring guilsinglleft -47 KPX Aring hyphen -8 KPX Aring o -19 KPX Aring period -2 KPX Aring q -15 KPX Aring quotedblright -60 KPX Aring quoteright -68 KPX Aring t -22 KPX Aring u -18 KPX Aring v -40 KPX Aring w -29 KPX Aring y -44 KPX Atilde C -43 KPX Atilde G -42 KPX Atilde O -39 KPX Atilde Q -40 KPX Atilde T -103 KPX Atilde U -44 KPX Atilde V -81 KPX Atilde W -57 KPX Atilde Y -104 KPX Atilde comma -4 KPX Atilde period -4 KPX B A -28 KPX B AE -29 KPX B Aacute -28 KPX B Acircumflex -28 KPX B Adieresis -28 KPX B Aring -28 KPX B Atilde -28 KPX B O -14 KPX B OE -11 KPX B Oacute -14 KPX B Ocircumflex -14 KPX B Odieresis -14 KPX B Ograve -14 KPX B Oslash -2 KPX B V -49 KPX B W -27 KPX B Y -56 KPX C A -43 KPX C AE -44 KPX C Aacute -43 KPX C Adieresis -43 KPX C Aring -43 KPX C H -22 KPX C K -20 KPX C O -18 KPX C Oacute -18 KPX C Odieresis -18 KPX Ccedilla A -44 KPX D A -50 KPX D Aacute -50 KPX D Acircumflex -50 KPX D Adieresis -50 KPX D Agrave -50 KPX D Aring -50 KPX D Atilde -50 KPX D J -13 KPX D T -56 KPX D V -54 KPX D W -31 KPX D X -58 KPX D Y -74 KPX F A -78 KPX F Aacute -78 KPX F Acircumflex -78 KPX F Adieresis -78 KPX F Agrave -78 KPX F Aring -78 KPX F Atilde -78 KPX F J -59 KPX F O -30 KPX F Odieresis -30 KPX F a -45 KPX F aacute -45 KPX F adieresis -45 KPX F ae -41 KPX F aring -45 KPX F comma -113 KPX F e -33 KPX F eacute -33 KPX F hyphen -20 KPX F i -19 KPX F j -19 KPX F o -30 KPX F oacute -30 KPX F odieresis -30 KPX F oe -33 KPX F oslash -30 KPX F period -113 KPX F r -44 KPX F u -42 KPX G A -14 KPX G AE -11 KPX G Aacute -14 KPX G Acircumflex -14 KPX G Adieresis -14 KPX G Agrave -14 KPX G Aring -14 KPX G Atilde -14 KPX G T -53 KPX G V -53 KPX G W -31 KPX G Y -72 KPX J A -39 KPX J AE -39 KPX J Adieresis -39 KPX J Aring -39 KPX K C -56 KPX K G -57 KPX K O -53 KPX K OE -49 KPX K Oacute -53 KPX K Odieresis -53 KPX K S -48 KPX K T 14 KPX K a -23 KPX K adieresis -23 KPX K ae -20 KPX K aring -23 KPX K e -46 KPX K hyphen -53 KPX K o -42 KPX K oacute -42 KPX K odieresis -42 KPX K u -32 KPX K udieresis -32 KPX K y -76 KPX L A 8 KPX L AE 11 KPX L Aacute 8 KPX L Adieresis 8 KPX L Aring 8 KPX L C -52 KPX L Ccedilla -51 KPX L G -53 KPX L O -51 KPX L Oacute -51 KPX L Ocircumflex -51 KPX L Odieresis -51 KPX L Ograve -51 KPX L Otilde -51 KPX L S -28 KPX L T -112 KPX L U -46 KPX L Udieresis -46 KPX L V -115 KPX L W -77 KPX L Y -128 KPX L hyphen -140 KPX L quotedblright -145 KPX L quoteright -153 KPX L u -17 KPX L udieresis -17 KPX L y -68 KPX N A -19 KPX N AE -16 KPX N Aacute -19 KPX N Adieresis -19 KPX N Aring -19 KPX N C -15 KPX N Ccedilla -14 KPX N G -14 KPX N O -11 KPX N Oacute -11 KPX N Odieresis -11 KPX N a -17 KPX N aacute -17 KPX N adieresis -17 KPX N ae -13 KPX N aring -17 KPX N comma -15 KPX N e -11 KPX N eacute -11 KPX N o -8 KPX N oacute -8 KPX N odieresis -8 KPX N oslash -4 KPX N period -15 KPX N u -8 KPX N udieresis -9 KPX O A -43 KPX O AE -47 KPX O Aacute -43 KPX O Adieresis -43 KPX O Aring -43 KPX O T -54 KPX O V -48 KPX O W -25 KPX O X -52 KPX O Y -71 KPX Oacute A -43 KPX Oacute T -54 KPX Oacute V -48 KPX Oacute W -25 KPX Oacute Y -71 KPX Ocircumflex T -54 KPX Ocircumflex V -48 KPX Ocircumflex Y -71 KPX Odieresis A -43 KPX Odieresis T -54 KPX Odieresis V -48 KPX Odieresis W -25 KPX Odieresis X -52 KPX Odieresis Y -71 KPX Ograve T -54 KPX Ograve V -48 KPX Ograve Y -71 KPX Oslash A -47 KPX Otilde T -54 KPX Otilde V -48 KPX Otilde Y -71 KPX P A -86 KPX P AE -93 KPX P Aacute -86 KPX P Adieresis -86 KPX P Aring -86 KPX P J -85 KPX P a -39 KPX P aacute -39 KPX P adieresis -39 KPX P ae -35 KPX P aring -39 KPX P comma -138 KPX P e -38 KPX P eacute -38 KPX P hyphen -45 KPX P o -34 KPX P oacute -34 KPX P odieresis -34 KPX P oe -38 KPX P oslash -35 KPX P period -138 KPX R C -21 KPX R Ccedilla -21 KPX R G -21 KPX R O -17 KPX R OE -14 KPX R Oacute -17 KPX R Odieresis -17 KPX R T -33 KPX R U -21 KPX R Udieresis -21 KPX R V -49 KPX R W -27 KPX R Y -54 KPX R a -21 KPX R aacute -21 KPX R adieresis -21 KPX R ae -17 KPX R aring -21 KPX R e -16 KPX R eacute -16 KPX R hyphen -4 KPX R o -13 KPX R oacute -13 KPX R odieresis -13 KPX R oe -16 KPX R u -13 KPX R uacute -14 KPX R udieresis -14 KPX R y -16 KPX S A -31 KPX S AE -31 KPX S Aacute -31 KPX S Adieresis -31 KPX S Aring -31 KPX S T -38 KPX S V -52 KPX S W -31 KPX S Y -58 KPX S t -11 KPX T A -104 KPX T AE -106 KPX T Aacute -104 KPX T Acircumflex -104 KPX T Adieresis -104 KPX T Agrave -104 KPX T Aring -104 KPX T Atilde -104 KPX T C -53 KPX T G -55 KPX T J -108 KPX T O -50 KPX T OE -44 KPX T Oacute -50 KPX T Ocircumflex -50 KPX T Odieresis -50 KPX T Ograve -50 KPX T Oslash -42 KPX T Otilde -50 KPX T S -32 KPX T V 2 KPX T W 7 KPX T Y 10 KPX T a -107 KPX T ae -104 KPX T c -96 KPX T colon -152 KPX T comma -105 KPX T e -102 KPX T g -94 KPX T guillemotleft -126 KPX T guilsinglleft -123 KPX T hyphen -82 KPX T i -12 KPX T j -12 KPX T o -99 KPX T oslash -94 KPX T period -105 KPX T r -98 KPX T s -98 KPX T semicolon -140 KPX T u -98 KPX T v -106 KPX T w -103 KPX T y -110 KPX U A -45 KPX U AE -48 KPX U Aacute -45 KPX U Acircumflex -45 KPX U Adieresis -45 KPX U Aring -45 KPX U Atilde -45 KPX U comma -35 KPX U m -17 KPX U n -16 KPX U p -8 KPX U period -32 KPX U r -16 KPX Uacute A -45 KPX Uacute comma -35 KPX Uacute m -17 KPX Uacute n -16 KPX Uacute p -8 KPX Uacute period -32 KPX Uacute r -16 KPX Ucircumflex A -45 KPX Udieresis A -44 KPX Udieresis b -8 KPX Udieresis comma -35 KPX Udieresis m -17 KPX Udieresis n -16 KPX Udieresis p -8 KPX Udieresis period -32 KPX Udieresis r -16 KPX Ugrave A -45 KPX V A -77 KPX V AE -84 KPX V Aacute -77 KPX V Acircumflex -77 KPX V Adieresis -77 KPX V Agrave -77 KPX V Aring -77 KPX V Atilde -77 KPX V C -50 KPX V G -50 KPX V O -46 KPX V Oacute -46 KPX V Ocircumflex -46 KPX V Odieresis -46 KPX V Ograve -46 KPX V Oslash -34 KPX V Otilde -46 KPX V S -44 KPX V T 7 KPX V a -71 KPX V ae -66 KPX V colon -76 KPX V comma -94 KPX V e -64 KPX V g -57 KPX V guillemotleft -88 KPX V guilsinglleft -84 KPX V hyphen -44 KPX V i -14 KPX V o -61 KPX V oslash -57 KPX V period -94 KPX V r -51 KPX V semicolon -75 KPX V u -52 KPX V y -28 KPX W A -56 KPX W AE -62 KPX W Aacute -56 KPX W Acircumflex -56 KPX W Adieresis -56 KPX W Agrave -56 KPX W Aring -56 KPX W Atilde -56 KPX W C -30 KPX W G -30 KPX W O -26 KPX W Oacute -26 KPX W Ocircumflex -26 KPX W Odieresis -26 KPX W Ograve -26 KPX W Oslash -14 KPX W Otilde -26 KPX W S -31 KPX W T 11 KPX W a -46 KPX W ae -42 KPX W colon -62 KPX W comma -62 KPX W e -39 KPX W g -32 KPX W guillemotleft -63 KPX W guilsinglleft -60 KPX W hyphen -19 KPX W i -10 KPX W o -36 KPX W oslash -32 KPX W period -62 KPX W r -36 KPX W semicolon -62 KPX W u -36 KPX W y -15 KPX X C -53 KPX X O -50 KPX X Odieresis -50 KPX X Q -51 KPX X a -27 KPX X e -51 KPX X hyphen -57 KPX X o -46 KPX X u -36 KPX X y -67 KPX Y A -102 KPX Y AE -108 KPX Y Aacute -102 KPX Y Acircumflex -102 KPX Y Adieresis -102 KPX Y Agrave -102 KPX Y Aring -102 KPX Y Atilde -102 KPX Y C -68 KPX Y G -69 KPX Y O -64 KPX Y Oacute -64 KPX Y Ocircumflex -64 KPX Y Odieresis -64 KPX Y Ograve -64 KPX Y Oslash -55 KPX Y Otilde -64 KPX Y S -49 KPX Y T 15 KPX Y a -100 KPX Y ae -95 KPX Y colon -97 KPX Y comma -117 KPX Y e -97 KPX Y g -89 KPX Y guillemotleft -128 KPX Y guilsinglleft -124 KPX Y hyphen -89 KPX Y i -6 KPX Y o -93 KPX Y oslash -89 KPX Y p -63 KPX Y period -117 KPX Y semicolon -97 KPX Y u -73 KPX Y v -48 KPX Z v -44 KPX Z y -44 KPX a j -10 KPX a quoteright -23 KPX a v -26 KPX a w -16 KPX a y -33 KPX aacute v -26 KPX aacute w -16 KPX aacute y -33 KPX adieresis v -26 KPX adieresis w -16 KPX adieresis y -33 KPX ae v -26 KPX ae w -15 KPX ae y -32 KPX agrave v -26 KPX agrave w -16 KPX agrave y -33 KPX aring v -26 KPX aring w -16 KPX aring y -33 KPX b v -21 KPX b w -10 KPX b y -28 KPX c h -7 KPX c k -1 KPX comma one -105 KPX comma quotedblright -47 KPX comma quoteright -55 KPX e quoteright -20 KPX e t -16 KPX e v -26 KPX e w -16 KPX e x -35 KPX e y -33 KPX eacute v -26 KPX eacute w -16 KPX eacute y -33 KPX ecircumflex v -26 KPX ecircumflex w -16 KPX ecircumflex y -33 KPX eight four -6 KPX eight one -55 KPX eight seven -43 KPX f a -20 KPX f aacute -20 KPX f adieresis -20 KPX f ae -15 KPX f aring -20 KPX f e -21 KPX f eacute -21 KPX f f 12 KPX f i -10 KPX f j -11 KPX f l -12 KPX f o -18 KPX f oacute -18 KPX f odieresis -18 KPX f oe -20 KPX f oslash -16 KPX f quoteright -8 KPX f s -8 KPX f t 16 KPX five four -7 KPX five one -83 KPX five seven -32 KPX four four -3 KPX four one -88 KPX four seven -65 KPX g a -17 KPX g adieresis -17 KPX g ae -13 KPX g aring -17 KPX g e -11 KPX g eacute -11 KPX g l -8 KPX g oacute -8 KPX g odieresis -8 KPX g r -9 KPX guillemotright A -58 KPX guillemotright AE -62 KPX guillemotright Aacute -58 KPX guillemotright Adieresis -58 KPX guillemotright Aring -58 KPX guillemotright T -132 KPX guillemotright V -96 KPX guillemotright W -68 KPX guillemotright Y -137 KPX guilsinglright A -52 KPX guilsinglright AE -56 KPX guilsinglright Aacute -52 KPX guilsinglright Adieresis -52 KPX guilsinglright Aring -52 KPX guilsinglright T -126 KPX guilsinglright V -90 KPX guilsinglright W -62 KPX guilsinglright Y -131 KPX h quoteright -19 KPX h y -31 KPX hyphen A -12 KPX hyphen AE -17 KPX hyphen Aacute -12 KPX hyphen Adieresis -12 KPX hyphen Aring -12 KPX hyphen T -86 KPX hyphen V -51 KPX hyphen W -24 KPX hyphen Y -97 KPX i T -16 KPX i j -10 KPX k a -14 KPX k aacute -14 KPX k adieresis -14 KPX k ae -12 KPX k aring -14 KPX k comma -13 KPX k e -33 KPX k eacute -33 KPX k g -26 KPX k hyphen -49 KPX k o -30 KPX k oacute -30 KPX k odieresis -30 KPX k period -13 KPX k s -14 KPX k u -22 KPX k udieresis -16 KPX l v -11 KPX l y -15 KPX m p -3 KPX m v -24 KPX m w -14 KPX m y -30 KPX n T -103 KPX n p -3 KPX n quoteright -19 KPX n v -24 KPX n w -14 KPX n y -31 KPX nine four -12 KPX nine one -55 KPX nine seven -50 KPX o T -106 KPX o quoteright -23 KPX o t -17 KPX o v -27 KPX o w -16 KPX o x -35 KPX o y -34 KPX oacute v -27 KPX oacute w -16 KPX oacute y -34 KPX ocircumflex t -17 KPX odieresis t -17 KPX odieresis v -27 KPX odieresis w -16 KPX odieresis x -35 KPX odieresis y -34 KPX ograve v -27 KPX ograve w -16 KPX ograve y -34 KPX one comma -82 KPX one eight -73 KPX one five -72 KPX one four -88 KPX one nine -71 KPX one one -125 KPX one period -82 KPX one seven -98 KPX one six -71 KPX one three -75 KPX one two -78 KPX one zero -71 KPX p t -10 KPX p y -28 KPX period one -106 KPX period quotedblright -48 KPX period quoteright -56 KPX q c -2 KPX q u -5 KPX quotedblbase A 21 KPX quotedblbase AE 21 KPX quotedblbase T -80 KPX quotedblbase V -74 KPX quotedblbase W -39 KPX quotedblbase Y -96 KPX quotedblleft A -58 KPX quotedblleft AE -70 KPX quotedblleft Aacute -58 KPX quotedblleft Adieresis -58 KPX quotedblleft Aring -58 KPX quotedblleft T 1 KPX quotedblleft V 10 KPX quotedblleft W 22 KPX quotedblleft Y -1 KPX quotedblright A -60 KPX quotedblright AE -72 KPX quotedblright Aacute -60 KPX quotedblright Adieresis -60 KPX quotedblright Aring -60 KPX quotedblright T 2 KPX quotedblright V 9 KPX quotedblright W 21 KPX quotedblright Y -2 KPX quoteleft A -74 KPX quoteleft AE -86 KPX quoteleft Aacute -74 KPX quoteleft Adieresis -74 KPX quoteleft Aring -74 KPX quoteleft T -14 KPX quoteleft V -5 KPX quoteleft W 6 KPX quoteleft Y -17 KPX quoteright A -76 KPX quoteright AE -88 KPX quoteright Aacute -76 KPX quoteright Adieresis -76 KPX quoteright Aring -76 KPX quoteright comma -68 KPX quoteright d -25 KPX quoteright o -31 KPX quoteright period -68 KPX quoteright r -24 KPX quoteright s -23 KPX quoteright t -14 KPX quoteright v -10 KPX quoteright w -5 KPX quoteright y -14 KPX r a -16 KPX r aacute -16 KPX r acircumflex -16 KPX r adieresis -16 KPX r ae -11 KPX r agrave -16 KPX r aring -16 KPX r c -11 KPX r ccedilla -11 KPX r colon -31 KPX r comma -77 KPX r d -8 KPX r e -17 KPX r eacute -17 KPX r ecircumflex -17 KPX r egrave -17 KPX r f 17 KPX r g -8 KPX r h -8 KPX r hyphen -54 KPX r i -6 KPX r j -6 KPX r k -2 KPX r l -7 KPX r m -9 KPX r n -8 KPX r o -14 KPX r oacute -14 KPX r ocircumflex -14 KPX r odieresis -14 KPX r oe -16 KPX r ograve -14 KPX r oslash -14 KPX r p 0 KPX r period -77 KPX r q -10 KPX r quoteright -6 KPX r r -8 KPX r s -4 KPX r semicolon -30 KPX r t 21 KPX r u -7 KPX r v 18 KPX r w 21 KPX r x 9 KPX r y 15 KPX r z 0 KPX s quoteright -24 KPX s t -15 KPX seven colon -84 KPX seven comma -123 KPX seven eight -34 KPX seven five -37 KPX seven four -95 KPX seven one -58 KPX seven period -123 KPX seven seven -11 KPX seven six -44 KPX seven three -29 KPX seven two -31 KPX six four -7 KPX six one -52 KPX six seven -40 KPX t S -17 KPX t a -10 KPX t aacute -10 KPX t adieresis -10 KPX t ae -7 KPX t aring -10 KPX t colon -37 KPX t e -22 KPX t eacute -22 KPX t h -14 KPX t o -19 KPX t oacute -19 KPX t odieresis -19 KPX t quoteright -7 KPX t semicolon -36 KPX three four -9 KPX three one -57 KPX three seven -45 KPX two four -43 KPX two one -45 KPX two seven -38 KPX u quoteright -14 KPX v a -30 KPX v aacute -30 KPX v acircumflex -30 KPX v adieresis -30 KPX v ae -25 KPX v agrave -30 KPX v aring -30 KPX v atilde -30 KPX v c -22 KPX v colon -32 KPX v comma -76 KPX v e -29 KPX v eacute -29 KPX v ecircumflex -29 KPX v egrave -29 KPX v g -20 KPX v hyphen -19 KPX v l -8 KPX v o -25 KPX v oacute -25 KPX v odieresis -25 KPX v ograve -25 KPX v oslash -25 KPX v period -76 KPX v s -17 KPX v semicolon -31 KPX w a -26 KPX w aacute -26 KPX w acircumflex -26 KPX w adieresis -26 KPX w ae -22 KPX w agrave -26 KPX w aring -26 KPX w atilde -26 KPX w c -14 KPX w colon -32 KPX w comma -57 KPX w e -20 KPX w eacute -20 KPX w ecircumflex -20 KPX w egrave -20 KPX w g -13 KPX w hyphen -8 KPX w l -8 KPX w o -17 KPX w oacute -17 KPX w odieresis -17 KPX w ograve -17 KPX w oslash -14 KPX w period -57 KPX w s -14 KPX w semicolon -31 KPX x a -30 KPX x c -30 KPX x e -36 KPX x eacute -36 KPX x o -33 KPX x q -28 KPX y a -36 KPX y aacute -36 KPX y acircumflex -36 KPX y adieresis -36 KPX y ae -31 KPX y agrave -36 KPX y aring -36 KPX y atilde -36 KPX y c -28 KPX y colon -40 KPX y comma -80 KPX y e -35 KPX y eacute -35 KPX y ecircumflex -35 KPX y egrave -35 KPX y g -26 KPX y hyphen -24 KPX y l -14 KPX y o -31 KPX y oacute -31 KPX y odieresis -31 KPX y ograve -31 KPX y oslash -30 KPX y period -80 KPX y s -23 KPX y semicolon -40 KPX zero four -11 KPX zero one -56 KPX zero seven -50 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n019023l.pfb0000644000077100007710000011265207260330350015422 0ustar fjffjf00000000000000n%!PS-AdobeFont-1.0: NimbusSanL-ReguItal 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Sans L Regular Italic) readonly def /FamilyName (Nimbus Sans L) readonly def /Weight (Regular) readonly def /ItalicAngle -12.0 def /isFixedPitch false def /UnderlinePosition -151 def /UnderlineThickness 50 def end readonly def /FontName /NimbusSanL-ReguItal def /PaintType 0 def /WMode 0 def /FontBBox {-178 -284 1108 953} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020908 def currentdict end currentfile eexec  `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>ni˅ԋZ'pA^ sINόdwuNPttxܜv.M<*\̒zUx?yu6yF .;Z"(Њ; S{* R-A\3-O84s[=YM|GxR)3gwO"}\䁞~8͘dW;cmA׫-׬LtH+8`|c&ٸRoC ]vtfcQJ}XȀH=)@Cμ_vMrI̎ucCt IՐNr0-aJNUn X8|\5cJ[I\@V ڰN&tPup|hز36 B?̓w zRCׅR@|ڙd|7a %.WmC X8y oCZC.Հ`^7U'CpG~h31&R|"UF0ӷ=ȬLv_Z^ke?*ʏI+xv@BnӚ=^Gk(hʻQ+naFפ9xCnncuPȅw~iph|֗qw*UW.Zx_:Ty؀YU?H9deCsX(!ue/7\?)sX1HAʈi`p[wt[󟊒 ?Θ|.z&2$SK.o"r):ѢׯOÓkGh*Z1X_n@6"P~ :^f"O$껲>xwmamA(nי:GkFyab^~$a5CG|ΩˮW66Z1kfӟ~$\5v|1+z#V`8BMxTph't6q6'q!3!}~\:%P lj Vv4H'OW*ڶ'ۀ~)_#V4{f wBC6ۙҜ7*z=*ʒ ٰKo^$l/Nq^;I;.ӑ!DNrW3Vo/e.<TC";d-vqO&>Ί |`*VK{ȃ)jkKmG]\H,T\3ke& %ƞ/|'=a@/aDe0u ؄6-x=isB!:"({Пt #$ƚ NԖvR!٨UeVjꄅf..F2hā 2Rt_Z}|S٦ ՖK8 7 m]?_~jcqy$wRkWJs/d"% V~oj70ihlY[3]0 GZƽj*F6D2GKMt4𷘱nV9f 1p'Eb0TO'A gpg qPIuz*uh4nأ܉EtDte27~%2 @i$LK- )5qr%5UePT:4Do`DY`&'vdIΊA5 wOa[9Sa*3Gww)L#oU!no& ߊ9ſ*Mxx)ͺ0_~ʆBy51\]N9rQ\_3J yfI*FY~26qQL$xV#h{&E呚;6ff41`35XIiczJd" |ЪKhV3NsWOScĥ]^+`lDCQcUA]lBe*HIsМ5y(F b^b`|:@"( ?&$. PQCِNj\Җ@)Yڤ ~4|B9M)]- $}a+⸎L${Bk"~PiHWY098p7@!hx/F4|(ݑ`ZLgdX-AM"# wtCUw ƋwBzlCܫ;+}#>Y9zǚ-J4_ σL֑m duĢ xVɞt2n~-?-FbW9doضw# BĞ=frzJBgt_JeFGx?Pt**Jk[ I>?"WvTt)]"S7%߉LJ׻tѹ#+#_P -XaZ QL ֎T]6!J!Ej5#cuðS%79-_Rlt=`SWJi6slkg+U3exK@"bj2I1qnel3ޖD 4׻tyq(%X'kj!r~ \|=kC0'}m69X֟?l9?9P 'ns3\GtA꾄N\*C4│p!HR|}ʤ ) ]r>]6 -$*phȗ\ظ\GڜOPW$64'yO7;+/< ;fr_$I*M1~%3їՏYGH-1>OTVFAY ,67Ԍ!)' ci-zGv#kW4BT8LK2IϰrfN44a ;33>n#Pp, `(`_|'14@Xj6SfCAϛ~"xc蜮 J{zRwՉQ3xm\G.<*sΪcXH@3xYA7U$ Cv$Π9߰Js3_EqfڽKX29|l(`JrƘ@Fa(+_0vYL"iˠM 5aKP[4Jg{ir'/>>6No4A{lun03JR>84;P1ØB N5[$U(n+u"gZ+ؒТwGݵuNԍîXƠI u>p2D@S{Bf8"g )Ѹz6 J<0k4׃oBx[`?=a|=2sH%P5Ta<OrL%T*"X}OTڎ0H h~y '4 7&76w)~n|=WIy!A(t$kfl_&Mr7wUf뀂v(ERTwz&RaNfX'T\QSpauOfBYML*0,N ]A<6$ǝ5%ppB6hO}l"@nMXHE%o< t7&p#7nzpGÅ/o\)w~JMVhp^_2-ldڲ*;~SBd! <`nɰo*s!::~xT%5VY/ fE*3~@oΒ'ӮX֨J{w3h@צ nyI1~Ox \ckIӉ>lfSzv@#txIl/(SYR%SlBDK`!RxA53jbGssW `eV{C t8@G=i)]jnhMb(f/4 u&,}AP SETM,tuUa okͷEbۃD]E)򵇇3Gϼ=~G. 4*­tG1dzOY [Ufi߯V&MˀH}dhpGϠBL%%G>"AlAiM 8Drfˣ:Z<17R¦yӸܲƴz|?s- v?F;-{[/o91K*0\egwKv[E`>l~35>((܎W;'"ٿuhlQg;v9.@kQy2,gZqib~lhȥ*rhxe ܈xdyW7Z$J.{3I>M Yӑw"cAZffq.|u5BׅXm -ؒx:am%+ps-zs 7~AH+7/gX4 (tNN{-O;/iFѕ=pg8sb aP٢_ؘ_5#:^v@X[9*Tg-7 YZ@Xv{v$#I [5mybtW­O7C 9 g_J=FkSS 9[CJ V؁At=Q]A8y#z K jt_]b*3Z>_f! v橭U!Jf766<89FE;G0H7 f&> :/ "a .{FzQHwlfŧb1K ;C=ҳ~A3WT= 6"GYeGsW?9޸P(|)C.!Jb 4UMU#$*yaOrgNJDZ"$XnB,FU" rʞoov]'se}*ӄ~s#g{͈^ y52pgE=|*|ZPbhY%GOˣ'M]+ rN͉\M nHm98ǖ@<|m bX',y^Gm ]$c4ܧz w>笲Mi !6->^(=MkԓI3D/b؟#ndY%1 !&iR2f?;v^:˫~ N <'^sqС/}dRpлFL6/ߧ_9tOW69m&ﴔd1/gƗ}L {f Zz^ٮiLm5KSZ{Yx}BJG 2yDFmU=f-8oBISDX(s<ţk౬N X֝hz l\Rhq\_ϫۖ!BQQ=^uṥR@Vs7+2^is.Wr;/ +1r\ mq-|2j%dR8hкSaje'L{ 1/r,gn y0/{bpOVЂ={3 D,`]A@WtHŮ= WJz2(8-^OÅ~&\Mdxäz~ΗzI~xkS)=JE?V;3!!r`%VqkJtlot4s ժ# 5#'hX0Xy_aG {QK8*U ^i+fFcMZe M?^%s3R7y(yvFn$]>̜ժvcTbb\sS Xo~C<J5qq|C3Y*芡nu ;rp`$NH*9wƏ5X%(l7,%gkCا_gk1fK bKWh%Iܐ*"񐋽w*+ zNTHB=vO нdYk6EoW\/v\N_AyG#`3>MWP3фdU%b&Ef`) :8eEmqpQ>F2V6(f,mr5L'5l<_9V&<|qR_(ڎKvfT$og]ɭ[F<;d+hm/mkk;' gUQwd{lNhO^uEr^fx >ڪ8XK&4+Z`4 0n P)Dq/e8ZX!rŊ8~;뇒Q'vVT%6;,TpJX|x۶pODj$6NpFaT9ݒpR\䷧ 8bט 7T-c\" (9x "X_*@J?(13KK_G82c ~&uodVK|L;(id:М~) uG$JmFb(Tc Ҭ-ulKܢD񴈝U"jU)G\H FsЏ6D G}=ЅqsRgtcL3:rB\E jpw 4xt?&i>pqcQxͫGR+-Վr4VDq] 3K+!a-9g*VVChڛ3Lc+_:zϊNAeM}]^Ierqӿ %m:匚zjV`a-Ӝv{sY½$tנ iNW}sXEZv(ʰ/M3W;C ΂:,ADQFEFuSh6mM\I huSi0]o k3_!,|a}dT?\x#qva 65lh#nyiUۙ<Yd{k?ŒqJe^ιOa~XYD0XF' ~5n)hD-bcZ+t]}h\vNF7{GRSk9/8vCP؏'RknnA|_W R!X^U{i&%hAZÆLG91reҳq7 /I{Hw)" 8sOhƔ:Ԣأ XYtC_2\geG ~竪ːM`NXai~l=O[kZ?5El޶fzJ^ZQIK /ݲn#C8A(v2 ,>V1_V2:܏^:s ‘yN C4ͶgƷ*@F<m'dtgBL낁L[=Cȃv$ۛY,+[a<=cCK{7k?xv!KUm4LKttzwd3:>2Ƴׅ9ޛƿl>a>Z"%HzTHK[UO;嘃;QNułi)e-v ÆbX/2c.qՋT_/_qk^+[B*_T{.dQW0dnat$IGw_{\e`5zaa}8(yH+R]e4.̋d8c."G$ݕLvѣG: P  AehXR.co$z3K7CsjmJ֛hi8cdRH鏢3aģi^f݇ؓS;6ƅSqq4РeF&֣S|~3#b-G@a5h]x.yiG|(l9Iy\ yw&-HV8\t\MIa bՄg{wh<۷?b#&;V#JX@ЀcWoA] Y-XnıZ2p3>|}Q:fE+#&ƒ ΖǠ{֭N*5~R|WʣF i p{h``#N#oʬBmkKItcH|(ܥ)u 89" Q D\$AV S2crWhM6g[! hQ+:̾MݡQ-~yy,ž9߱w ;~&Ձ<(!*|s(_5I @9;BN~#_n; _[Ujف><%qXJ|)Y/ŷ X4W[0hkt139B KF_ܔj;Jcfi 1?}x"D}9N=UrIJ/Ra_OJEBfA~ԴꞬ5XB|ΨvQq aC)`Qƿ."mь5#t`iP2't'a{wˬdG;(ˍDc;W h|٬$ec R+2[2ͺ-[X/0 BH~\ +åJVmezUXީH"x{Ƅ4hSZ Frp/phȂdg~d27vN_ESC',$''VJh1dⱉ0Y~=mC&T pǸOLb|آ#BOt,b?K8[Ҡ;Ql ̧$-~4_ =qX jZ1%ֱZ"g9Șy*Zv9mnN~drk-dNT.P}[«A>N^ 629!M㷘} BodN'˿iv``.&>.,M;ykƭ&_ԊLܙd戕he"$Ion^- -Ë3l =48U oF IRZ1wzltWMVDД\y( ߈(«iY1[8™!H cn' -RmPtHUb\eb}%97/YL4d" 7ӿk YU`ΒՇe{gmi6cV5itz :Be G80Ht>SvBȕf-g*1 lUwh&KR9wȑXiP`}U嗾a_-WծGvrYT"+Zl@9ɅԴ ^>T9L*%ZH|cmf\QehA@(sR z!vAUiMR"|\˄4۫]OȗRF%z"r1V!s:̓,Eޞv\/<>ք`a;DzJz޾\_J~TCl!Ŷ}yDވֹO4~PcIo 9^FC=ogcى V|i@G$|M:O/vh[_js#aTf"UԎ`dI$ Hl7oXXI9!W)J\/ï̺f9( xi|X8oǏe3q#Sk4]W= a KLsKnOn-?'y̮i4e1hRZhGcZ|+7å&T?'-ر3ʋ`.ȿ1U<{uB+eH?bİLM$[#:6.}uT# P(Nsm]`yVnjb[BlhT:`vG^(6e+^E 4$VلB-BA(ӏ뷝JkZ2|_3ŻsP>c7giCy@0ݞ3C=/)K,QVlyo,>b#[o}8ro*16=| ZA?f |̺lINk TS.Y$b [AsLEmk&X?R { yي\tebpK%C3ׇj!7**ŶJ}GpeCRUbfF u_8˯Ֆ2p>aHމGYuL3` 2~в"v+fѣ&0qD$EkxhsyKϹr vY^ɍq=pDq9mfY@a' ;vJrtuP{ŒiT|+fQ)^ߜ Nqh-{ºayL}=>SmCE蹀s" p2k"Pp?xe/!0jaC2[C:F=G@Bl{}칋WFT6(<`I)ĥB,(f2D6Ե^xY:EpLIpœKChk[ ]; ^exR}&W6>CšZlVhH5ֺ>0f>-[gʒ]zKѝqr,8NV6T5m{wVDDd|іY ؟fLjַN R2Nu w@wa|?U}-L온Pbԍ-V{ ; V8#2&%UBavp@9glu 4JhF#މf aGfg,JJ!m5s0uHWWxBrɒ[7lj]vw3 ݍ8= umԴpNRx몎rLObsOT_WSo򣴈@PQm9k[kKNXg 8.gA4@磵4Yp;/ZyEmu;(7OdPyЧiE6e\\-HvliG3;XJo>R!g:Nf <6&M6l j5HQ^0.. M3@z~%3pq5ycM.4(b<"˅N{fS!!e3J9*[JU,4Ư2f3R~'TpWjQ%7(dY9c"ORF+K溲]Tqkt4r0rLT|$ń҈Ne:`btm䵌G{5CeU&'%-&f^FGʰ%޷03#V\+E~dH!qP-P{KW*4VB S% kj V>w\ʽ>P Zbas~U%\> a&з{nN rO 0k1Ƌ[,Z,rf]mE3gɕ5m1g\ɯ%]o-в{@j ,=ڲY$[ti㥯UzQc6὞Uy'H te=p[4PG5G$;|YIUɄ˚*w̃JsxW0DLTM>@ 4 @9gݚV{#lQ2#x7-)82sݷN-jQf4HTeJf@CppO̅h4B|vaމA m܃aV墢<Ǯg󛰛sݥ?DWɬo;*49WvҬJ6H]o c"L<Գbkqo:x*3[AZ,$%KS['j]q@φ?ibѣ'(hq;) H²h 2m\q_3~6Yd4;Gݗtty>$̼>$ᮅYs5gvRjOzq=P`;g Dнu{23&ض0@f bT{tsOg,jl] @~a842Do U/E+$߰ (I ߱P+~=X ^\WU"~&(P{@0zs\e#dW=?bX?;}bxe?rm?*XH8 *]a!R#)*yƤ~W [*h&,ҖheV;Odbk*)@7{yG* 2e#cX E[Um\YΜV5Z} 3ZU9\Ld-Y*4~qv4UnUޫb-:`:k;?<7&4#@@鰾(VQ0a*(=OΊuR=_0K߾qYIHcn%M_{O:>[@јY&&&JpU W [ƀC^Ƨjy/ecDQ;%deq Ԏh^SI4șel]I%nӣzOhj p`O;, #1 ]U_W+M`4մĚ2<-)ڹWiZ8b gs}b5W|ߜ}f} (7[6x]_RjՇx ENV`1ܯ%ZiD~aFf0xn G C4i($.ل ۮu QSwQnTt2|QgŌ`P(7%O(Z< l -ymȶ[tͦ c rkA}3D, r ^OFT%+oЉ4AhFz"ÆD_P^/$b[b%[M(koBmׇEs2ފT]wT+?9r/sd}~j#YX{(ZqK8I&IlG =}Ǥп7!.l:Yя%)x%U1š#AER~?_q#)k7V9-T32A[,}7 ɻ6@ @|f]8 >7Dfpo)H_W%~̕,. fv٦DX5E[G@VƼg rb)w Y940V{RvjoXc,8#dՠ;k~pb3tNE(=8vZgLXq 'q.||s,z|:R7ÑH(xcYAY`wQ%u\NX21/ KM7,qo3!vᮥ' o"}[04$C<4+nI PbltLK Rn vt~kåHVt<_TP*gؼV)?I5NSJPz qku.w̱>"w/ڳӺ*<[h20TMP5qܖ%x 3rj^ykypyʘ h %ܬ.sxNJlr(RzT}=覡 | 3EWTz-[yIAѾY.!Nyr] &bS~tb) f ŤW{1pDTbW~rs[I1AJRCm=nHtY__fj ]o6~jJ(+V|tܸ8@2x/JƎGO111%}hVzbк7JJracnp_}s/@\p"Y-&YKB`RȞP44HJT fh v<l FqY*߯NdL 3j ʏFLPVs{3 Ji|<c &r nbOvrfС9YJTpHȳqZb}U*>FҴП|]1|Cf̩J.MV-ѱX\t /8bofKX0Vr|4꬙`sp&8JFnC%Cµ4AtkԚW2nUo?  Ao\[I8]ؔ͡GЩ^mH(LN"vO4GOdS tyv۲>˦eO8kh-G0IHaҔ*.y:.?+AmPfU50O\ZB+QzS8ISEߵ&.(S8Z1s/-!_=[4Q8 |DW,TM i x8u(\QR vSGѠ..2K.:a[QpWF^m(=`Bʓ &,vXxeklq+Q ,\S2 ,ʁH!_:__5!,^|Ґ[(LD)uHLt: l$WgֈdZJV&o˴f7nĻF 5 IGSvd:] ue0ف46/)]UZ,IWȯ\d3SyBPA't^JXʼn8]hxQ]T{U݅@Mjxq,k3IRFdV*'zT.^v /`!䛭o\3Q(4k%i*v] ,gqfXX9=xrqG6,q/$HJ0w_})Fp|E+MS&,vL3,1',L!mVm 6$yLc}Q '3:Cw 7; ҂H/.q8 }X=8 w/US`/k*,NmB}Z<¬|O64UD1~#%p~RnT8 kw0_L-c6;2nX(xEeג8UUBE@k٭nslHiQ-j;tI/ǙQ'J@AsE/ič6mt{CXLAFA;Erg['B荥8g ֳd Uh[ |Vct[sI "(oj-$f<RIEQf5ֆP{@\cd,G  bm/ 1\tggF/**"CJ!Q u2c ƕ$J`)paɚT o5yROF˩(H]پՈ1M!R';9r:!Qeªuh%1䥈m9WI׺(.f]̻,ۆDJ.^*TYB.DWik3Y ;8c_F;Xq[V?~}:ʾ?s s=P6@%sړB*(X݇5G.;0IYQ"@'[JC a$>bBw~v5TE) k(Ehy"{ԉ7Fyp Yw"ge6хK_e ;v_ lc4|pm;}^`3}d5a&[)5E 'i!.N,h@u|~,>FLp8`9vN =OH&g*H2ӌJKAPaz{D'&(Iǩ+U{6}*lFۛJ 򟱏} 3)/9s e]^䧽Vmv%_f7}D@v2c@WrJѬaQT2c4IGAԺjYcåyW e&+qE(mP%qtD,LlƱ;8丹_pQt8{pwY= DJI5mvG?ϰ7/?t&:{o״]:(LGYϩ].X+G y'0+h01-`ƥ˶Wk%J*v۽ë̀;Y- #_bqTZ1򺛢q?+BLRz|y 9hnŴrh;@(2)%ra@k*M U~ECeڎaB1q)]Yg4E񗈱HKV?=M@Uo)>x憀)xn4Y5Jz }ZU]qVw /Mp/()SF'L~rYOl?Y^t%ÌXBN#rU${_Mo$~Lڪ&{:X.Z:|@"!y ?FK%uB\%϶o &.}a:snl n> Mt˞F(NY)M:͂7@4Lpe1x1trQ3Ac_R!YC^%%gޚUr#TF%[pҨQ*D of wٙ,̄WǮAvq?0~K1۽c%+?θ3=HKݴP=m{4ӑv$~˝X HT>X!T=AGqP"mv=B-i؛3B 5hl,P|}e*vL amCKnl37o9󨕖f{B/Gfy 8lZN@ :½ȳܱ:bmm3V~ 3Ȓ"=TtgޡOG|!|ocغU.' rYZP]U0Om{ iٜq=36xX|L.*ljRXʎ/,I5}bV+2t|b tK|%? 5KYzhf e_T#NMäl`ayQ6x(7ePPlԽ'ed6VcV嗹?g<:<(Rm1ruw)Mg}gCG,80"ʐ.m4 VYQ#XMZ5j;iקX)Z}`=lP~8\ #5$ R;;lz}DW794.[ ]u>X_]C& MBQ5.yE%pő)WE0>`hV>(++=nfՀp~d?m(%slzX1i'A qW%&E gHMP%LY`P"e-?s>@qY 3l/squOr S22 ?bŽ7[#R;oCKpEٻ="XX/m(N`eK2 P&ҍ~b3 ӆ]Wz''_ 3$G~Lj b~ 甔  srB) )Ou g&U<nND@w@E^ҎRǟ6>Xjh||SMlުJT(@ms[&߹$'KH~+u}eqUOK SЄUzr6p {d7UuOM3&JB5CGK<UZ\ϊq5~f!M#4!-T;L{͋R "7UwMgTpҡ*($i@KR N jɸ G8xxHS4OG VycC>%BK.ۈ#=N8i5A\3ݎ@W|RRl, ξS@StbFpy9`ft56[h+&Ӈ7p>Z?6e%G> X~]uNp ȇC s((˵kLaĝcY8QtSa%u[ibR0mXh0&0ejUӓiw ՞Qj!dG.yeI?bf򯕶V~Q@)4yVZ~ׁ)(x3C2E%D*<4%pBHAD̎f$y =+pVRhwKxw݇/ ˁ{qV' 0EF7"h{V".! 2ȽZHG U?)4¾~4R;|mUrk=ۼe!AONTc-k01ǥ qNr~*@Iuc G w8h:. Ɨ]tRpR_%Hg4J-?bvin% o0j)FdL\m'9udHYmޠp1-ڞDPJw&L&z}3#] s&9&%Wv@-'t!v(WKUlP/Wn![ܠoafMso2.+eM5| kk]Cu @&{[XAd&ќ闎Qtuq: Z]V`D'raOԩk(d{dy*Ka $}YY]lo4wLB9BD29AUgnwu gH?4YYJ6y375C&Rf7u^컥+%f~*tMhSKV%ۍH,S{yѪߊ&r0MXJ2:ƍHB~<,{*wt:ŖՐW}c Fm/냅G'8`M+E{l%NPa7j} -[n96CyݱNE`j Bh7V<ЗU_+)װ}O{3NF/Ӫtw"|.}pi4J,{9\rbO7PR.:q_ !9tE=9XwZwRkss0g \̍yf㭐55/ιZ)KfTe"O)10)8SiC ]vGTz$Nmlϣ *P~pv'd q9J7~m?ЋU@mfW3D"Bu$[!X/T-5;(m/rѷ]+.x2PqlFlisY]QeDJ #HAuo k<ZO.Js=C2"d80&7up~V2FP1Cu-l-i1 XnvjYE@bP/h),8ô w =-yÅ foqfz2R[L4ʼnqMeb@ d=F vђCzRWݱQjfV. 3^¿~x^T̺ ]ЉΛFht-DWf}rJ_xMLdvذq4;\NƖǕahWF-]#oRIފ 7kb j!,87&\3N=zEI uodR7.,VpV]DĚNH]EN%iP"S.)QhWؼd9|q?=\j7C)k@+;m^O?B'3],uKO?pYf?ym3!Y7VtQ{M!8:n{\Ѱ,Vmۺz$sa-/{"xPG |܇GLI+o쉛hSYPI=*n3 Orp$p2;<,iv;ӂ6}9 ϝb[_ӭpm]PsʙY86&b !yPx)Ì%v#K iiu2zdvkZv i4nh1sDowvJN`rPvrȡVc]+h\VmMHr8Y{QԸOXw@Lz\eڲB(5)2G괻WOʢCAKXX YCp6'E-M!l}vER5Oʚ7F> Z+'i'k&/g t|x4{'0T/}~[UφѠL]2[ `xzίp`!<) uP~J&Cy\PO#ir6 \6J;bW=woía5`0go2,lꞸr*]gZWWsHl}VC]&U(@Ol(ϙjTn4mtSPnGE/N,Y 4q$w'h^Qk3#!g3vՉBəLRuw3Cs[ TO '@*/[OL$o::;}}UPH?Bn-; E1*u}q[C2@TSmp!vmxo*Rx긙L'9O|!j틝IV⨟j\U@X4KY+[S9guc BOb1'âggG u8# 9p{_M]B%#6 F)lEܡt 9ByFt>Y@[£`֛BZp2u,dhLu5ܟ{fx.5~fO5]п =+,2:&> V 9YE_\Xr$O~d4y @>^]Mt?/L/uszWHHϊ.7ݿ:o@YYL0n!M/k QLRͻ GBk!0AHr|C:LK805={7˙ hh! %,GEiL}-G)T;bj>@')_dmeOmΟѴ"@./>.{SLvs 2ܒ;N9hg+ڒsC$I Qp"%xtACT):msEv؋M"ߺqSJg_ܼ^rjg60D) I\H`k V7M;%p$q kMB,x`Ǝ30"ne9+q Cdg .@*R`R˾K5e֑E f.Eɷ ) h+XxX!+Paٙc:,k}"=m(6sU82 g1QbT&oK>q-|(bPd\\3n6U(p.޽Tj3E\'/ԾX;L\5Ç_TA~ܥzYPEAF}CE"u'8 ONX쨞3qꗂ3P p+ӷ`]"q\89m[]Q(=={l`=.[jbSve ":ɊfMJ{t=@%bSff1ر 4[͜`~>~.5):6%G:]lD\|vP0@TU +|zFDJLeUyJ#?'mtxguM E0R{Y4`Mp4 :ۏ6'oZSYs.ǤKRAJ4p)%i& yި 8UoHr_S3=)\V3 }*7f`[`& pY%JtA_LqX(|_0N16AH(}Px-6-nd#>I2 "$ }!,7O(fHdQ(c@-3"E_"MKdY,<OhYYRA8p.pVAzq5y0|,"]|ep*LѯlcG?pC5>lU޷r}9Tz3\-0[GF͌8n$4x*A.JoT]+AT!l'~TKr&rIsDDGg>`_j5zgUq"Q F%rx%ډLZycj9:!bxjn Ԃ`94tG5*g)3M6n$d[>=EΧFF =U2R{|WtzDRKfUl%I3K7[)Rҷ2I0i"*T-U3H9l`X}f :Zs a)NI;,p@ny]d8L/R80h'C5nAX4HwO܅XI e=Ќԥax;BڢsՒYfalyKXY0Ҙ-Ϙ_pr˅ֆly)2Z$VdŹ0E^ñ0Sm^#uhE\o\n]@iG:EћDT:<մYxBU[^| R?VoTǜVU±TWбW5I(1 V SE=h $0Xz(+`+fL[tipLf{j 3?Hzj xkpԆ'u0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/n019024l.afm0000644000077100007710000007623507260330351015426 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusSanL-BoldItal FullName Nimbus Sans L Bold Italic FamilyName Nimbus Sans L Weight Bold ItalicAngle -12.0 IsFixedPitch false UnderlinePosition -111 UnderlineThickness 69 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -177 -309 1107 953 CapHeight 729 XHeight 540 Descender -217 Ascender 729 StartCharMetrics 316 C 32 ; WX 278 ; N space ; B 245 0 245 0 ; C 33 ; WX 333 ; N exclam ; B 112 0 417 726 ; C 34 ; WX 474 ; N quotedbl ; B 177 470 579 729 ; C 35 ; WX 556 ; N numbersign ; B 33 -32 660 697 ; C 36 ; WX 556 ; N dollar ; B 59 -126 628 763 ; C 37 ; WX 889 ; N percent ; B 129 -20 903 709 ; C 38 ; WX 722 ; N ampersand ; B 89 -23 720 723 ; C 39 ; WX 278 ; N quoteright ; B 165 469 356 729 ; C 40 ; WX 333 ; N parenleft ; B 84 -200 458 729 ; C 41 ; WX 333 ; N parenright ; B -21 -200 356 729 ; C 42 ; WX 389 ; N asterisk ; B 145 407 478 729 ; C 43 ; WX 584 ; N plus ; B 87 -10 596 473 ; C 44 ; WX 278 ; N comma ; B 27 -174 245 146 ; C 45 ; WX 333 ; N hyphen ; B 70 207 371 342 ; C 46 ; WX 278 ; N period ; B 64 0 245 146 ; C 47 ; WX 278 ; N slash ; B -1 -14 427 714 ; C 48 ; WX 556 ; N zero ; B 81 -23 614 724 ; C 49 ; WX 556 ; N one ; B 172 0 529 709 ; C 50 ; WX 556 ; N two ; B 30 0 628 724 ; C 51 ; WX 556 ; N three ; B 67 -23 613 724 ; C 52 ; WX 556 ; N four ; B 57 0 599 709 ; C 53 ; WX 556 ; N five ; B 59 -23 641 709 ; C 54 ; WX 556 ; N six ; B 85 -23 625 724 ; C 55 ; WX 556 ; N seven ; B 131 0 679 709 ; C 56 ; WX 556 ; N eight ; B 60 -23 620 724 ; C 57 ; WX 556 ; N nine ; B 68 -23 611 724 ; C 58 ; WX 333 ; N colon ; B 113 0 374 520 ; C 59 ; WX 333 ; N semicolon ; B 76 -174 374 520 ; C 60 ; WX 584 ; N less ; B 77 -10 630 474 ; C 61 ; WX 584 ; N equal ; B 61 52 622 412 ; C 62 ; WX 584 ; N greater ; B 38 -10 591 474 ; C 63 ; WX 611 ; N question ; B 168 0 672 744 ; C 64 ; WX 975 ; N at ; B 73 -137 1032 745 ; C 65 ; WX 722 ; N A ; B 26 0 703 729 ; C 66 ; WX 722 ; N B ; B 82 0 762 729 ; C 67 ; WX 722 ; N C ; B 107 -23 793 741 ; C 68 ; WX 722 ; N D ; B 77 0 776 729 ; C 69 ; WX 667 ; N E ; B 79 0 762 729 ; C 70 ; WX 611 ; N F ; B 74 0 741 729 ; C 71 ; WX 778 ; N G ; B 107 -23 819 741 ; C 72 ; WX 722 ; N H ; B 68 0 812 729 ; C 73 ; WX 278 ; N I ; B 63 0 368 729 ; C 74 ; WX 556 ; N J ; B 59 -23 641 729 ; C 75 ; WX 722 ; N K ; B 74 0 843 729 ; C 76 ; WX 611 ; N L ; B 80 0 606 729 ; C 77 ; WX 833 ; N M ; B 66 0 931 729 ; C 78 ; WX 722 ; N N ; B 68 0 816 729 ; C 79 ; WX 778 ; N O ; B 106 -23 828 741 ; C 80 ; WX 667 ; N P ; B 76 0 747 729 ; C 81 ; WX 778 ; N Q ; B 109 -54 831 741 ; C 82 ; WX 722 ; N R ; B 80 0 785 729 ; C 83 ; WX 667 ; N S ; B 76 -23 725 741 ; C 84 ; WX 611 ; N T ; B 142 0 753 729 ; C 85 ; WX 722 ; N U ; B 119 -23 809 729 ; C 86 ; WX 667 ; N V ; B 179 0 802 729 ; C 87 ; WX 944 ; N W ; B 168 0 1087 729 ; C 88 ; WX 667 ; N X ; B 22 0 802 729 ; C 89 ; WX 667 ; N Y ; B 182 0 805 729 ; C 90 ; WX 611 ; N Z ; B 30 0 733 729 ; C 91 ; WX 333 ; N bracketleft ; B 23 -200 463 729 ; C 92 ; WX 278 ; N backslash ; B 138 -23 285 709 ; C 93 ; WX 333 ; N bracketright ; B -25 -200 415 729 ; C 94 ; WX 584 ; N asciicircum ; B 119 270 580 695 ; C 95 ; WX 556 ; N underscore ; B -65 -145 550 -76 ; C 96 ; WX 278 ; N quoteleft ; B 167 469 357 729 ; C 97 ; WX 556 ; N a ; B 50 -23 578 549 ; C 98 ; WX 611 ; N b ; B 59 -23 640 729 ; C 99 ; WX 556 ; N c ; B 77 -23 597 549 ; C 100 ; WX 611 ; N d ; B 79 -23 700 729 ; C 101 ; WX 556 ; N e ; B 64 -23 591 549 ; C 102 ; WX 333 ; N f ; B 90 0 464 729 ; C 103 ; WX 611 ; N g ; B 26 -218 656 549 ; C 104 ; WX 611 ; N h ; B 67 0 629 729 ; C 105 ; WX 278 ; N i ; B 67 0 362 729 ; C 106 ; WX 278 ; N j ; B -43 -218 365 729 ; C 107 ; WX 556 ; N k ; B 59 0 651 729 ; C 108 ; WX 278 ; N l ; B 67 0 362 729 ; C 109 ; WX 889 ; N m ; B 60 0 911 549 ; C 110 ; WX 611 ; N n ; B 63 0 629 549 ; C 111 ; WX 611 ; N o ; B 82 -23 634 549 ; C 112 ; WX 611 ; N p ; B 11 -218 637 549 ; C 113 ; WX 611 ; N q ; B 72 -218 659 549 ; C 114 ; WX 389 ; N r ; B 63 0 487 549 ; C 115 ; WX 556 ; N s ; B 60 -23 589 549 ; C 116 ; WX 333 ; N t ; B 101 -23 414 674 ; C 117 ; WX 611 ; N u ; B 88 -23 656 540 ; C 118 ; WX 556 ; N v ; B 129 0 651 540 ; C 119 ; WX 778 ; N w ; B 120 0 881 540 ; C 120 ; WX 556 ; N x ; B 16 0 648 540 ; C 121 ; WX 556 ; N y ; B 37 -219 653 540 ; C 122 ; WX 500 ; N z ; B 21 0 575 540 ; C 123 ; WX 389 ; N braceleft ; B 84 -200 472 729 ; C 124 ; WX 280 ; N bar ; B 57 -200 335 729 ; C 125 ; WX 389 ; N braceright ; B 29 -200 419 729 ; C 126 ; WX 584 ; N asciitilde ; B 97 142 581 314 ; C 161 ; WX 333 ; N exclamdown ; B 26 -186 331 540 ; C 162 ; WX 556 ; N cent ; B 79 -124 598 634 ; C 163 ; WX 556 ; N sterling ; B 49 -23 629 715 ; C 164 ; WX 167 ; N fraction ; B -177 -20 489 715 ; C 165 ; WX 556 ; N yen ; B 107 0 702 704 ; C 166 ; WX 556 ; N florin ; B -21 -220 690 744 ; C 167 ; WX 556 ; N section ; B 56 -201 596 723 ; C 168 ; WX 556 ; N currency ; B 66 100 644 604 ; C 169 ; WX 238 ; N quotesingle ; B 177 470 343 729 ; C 170 ; WX 500 ; N quotedblleft ; B 171 469 588 729 ; C 171 ; WX 556 ; N guillemotleft ; B 135 72 571 481 ; C 172 ; WX 333 ; N guilsinglleft ; B 128 72 351 481 ; C 173 ; WX 333 ; N guilsinglright ; B 96 72 319 481 ; C 174 ; WX 611 ; N fi ; B 85 0 703 729 ; C 175 ; WX 611 ; N fl ; B 88 0 701 729 ; C 177 ; WX 556 ; N endash ; B 35 207 624 311 ; C 178 ; WX 556 ; N dagger ; B 109 -194 626 709 ; C 179 ; WX 556 ; N daggerdbl ; B 35 -194 623 709 ; C 180 ; WX 278 ; N periodcentered ; B 143 182 270 282 ; C 182 ; WX 556 ; N paragraph ; B 121 -191 684 729 ; C 183 ; WX 350 ; N bullet ; B 111 175 367 425 ; C 184 ; WX 278 ; N quotesinglbase ; B 37 -135 228 125 ; C 185 ; WX 500 ; N quotedblbase ; B 37 -135 462 125 ; C 186 ; WX 500 ; N quotedblright ; B 173 469 595 729 ; C 187 ; WX 556 ; N guillemotright ; B 103 72 533 481 ; C 188 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ; C 189 ; WX 1000 ; N perthousand ; B 72 -21 1021 739 ; C 191 ; WX 611 ; N questiondown ; B 52 -204 556 540 ; C 193 ; WX 333 ; N grave ; B 175 607 339 757 ; C 194 ; WX 333 ; N acute ; B 247 607 475 757 ; C 195 ; WX 333 ; N circumflex ; B 135 610 453 757 ; C 196 ; WX 333 ; N tilde ; B 117 622 500 744 ; C 197 ; WX 333 ; N macron ; B 150 642 467 722 ; C 198 ; WX 333 ; N breve ; B 188 611 455 754 ; C 199 ; WX 333 ; N dotaccent ; B 241 621 377 741 ; C 200 ; WX 333 ; N dieresis ; B 147 621 469 741 ; C 202 ; WX 333 ; N ring ; B 214 593 398 773 ; C 203 ; WX 333 ; N cedilla ; B -13 -220 270 0 ; C 205 ; WX 333 ; N hungarumlaut ; B 82 610 498 757 ; C 206 ; WX 333 ; N ogonek ; B 23 -233 248 0 ; C 207 ; WX 333 ; N caron ; B 167 610 485 757 ; C 208 ; WX 1000 ; N emdash ; B 37 207 1070 311 ; C 225 ; WX 1000 ; N AE ; B 1 0 1104 729 ; C 227 ; WX 370 ; N ordfeminine ; B 96 262 451 729 ; C 232 ; WX 611 ; N Lslash ; B 54 0 624 729 ; C 233 ; WX 778 ; N Oslash ; B 34 -39 906 749 ; C 234 ; WX 1000 ; N OE ; B 90 -23 1107 741 ; C 235 ; WX 365 ; N ordmasculine ; B 92 262 471 729 ; C 241 ; WX 889 ; N ae ; B 54 -23 927 549 ; C 245 ; WX 278 ; N dotlessi ; B 67 0 322 540 ; C 248 ; WX 278 ; N lslash ; B 50 0 372 729 ; C 249 ; WX 611 ; N oslash ; B 12 -38 709 557 ; C 250 ; WX 944 ; N oe ; B 71 -23 986 549 ; C 251 ; WX 611 ; N germandbls ; B 67 -23 654 729 ; C -1 ; WX 722 ; N Udieresis ; B 119 -23 809 920 ; C -1 ; WX 722 ; N Uacute ; B 119 -23 809 936 ; C -1 ; WX 667 ; N Scedilla ; B 76 -220 725 741 ; C -1 ; WX 611 ; N Tcaron ; B 142 0 753 936 ; C -1 ; WX 667 ; N Scaron ; B 76 -23 725 936 ; C -1 ; WX 722 ; N Rcaron ; B 80 0 785 936 ; C -1 ; WX 722 ; N Racute ; B 80 0 785 936 ; C -1 ; WX 667 ; N Sacute ; B 76 -23 725 936 ; C -1 ; WX 778 ; N Otilde ; B 106 -23 828 923 ; C -1 ; WX 611 ; N ucircumflex ; B 88 -23 656 757 ; C -1 ; WX 778 ; N Ohungarumlaut ; B 106 -23 841 936 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 119 -23 809 936 ; C -1 ; WX 667 ; N Yacute ; B 182 0 805 936 ; C -1 ; WX 722 ; N Eth ; B 73 0 776 729 ; C -1 ; WX 722 ; N Dcroat ; B 73 0 776 729 ; C -1 ; WX 611 ; N Zacute ; B 30 0 733 936 ; C -1 ; WX 722 ; N Uring ; B 119 -23 809 953 ; C -1 ; WX 611 ; N gbreve ; B 26 -218 656 754 ; C -1 ; WX 556 ; N eogonek ; B 64 -233 591 549 ; C -1 ; WX 556 ; N edotaccent ; B 64 -23 591 741 ; C -1 ; WX 556 ; N ecaron ; B 64 -23 593 757 ; C -1 ; WX 722 ; N Ugrave ; B 119 -23 809 936 ; C -1 ; WX 667 ; N Thorn ; B 76 0 721 729 ; C -1 ; WX 556 ; N eacute ; B 64 -23 591 757 ; C -1 ; WX 556 ; N edieresis ; B 64 -23 591 741 ; C -1 ; WX 722 ; N dcaron ; B 79 -23 882 729 ; C -1 ; WX 556 ; N ccedilla ; B 77 -220 597 549 ; C -1 ; WX 556 ; N ccaron ; B 77 -23 607 757 ; C -1 ; WX 556 ; N cacute ; B 77 -23 597 757 ; C -1 ; WX 556 ; N aogonek ; B 50 -233 578 549 ; C -1 ; WX 556 ; N aring ; B 50 -23 578 773 ; C -1 ; WX 556 ; N atilde ; B 50 -23 612 744 ; C -1 ; WX 556 ; N abreve ; B 50 -23 578 754 ; C -1 ; WX 556 ; N egrave ; B 64 -23 591 757 ; C -1 ; WX 556 ; N agrave ; B 50 -23 578 757 ; C -1 ; WX 556 ; N aacute ; B 50 -23 587 757 ; C -1 ; WX 556 ; N adieresis ; B 50 -23 581 741 ; C -1 ; WX 722 ; N Uogonek ; B 119 -233 809 729 ; C -1 ; WX 611 ; N ugrave ; B 88 -23 656 757 ; C -1 ; WX 611 ; N uacute ; B 88 -23 656 757 ; C -1 ; WX 611 ; N udieresis ; B 88 -23 656 741 ; C -1 ; WX 404 ; N tcaron ; B 101 -23 578 829 ; C -1 ; WX 556 ; N scommaaccent ; B 60 -307 589 549 ; C -1 ; WX 611 ; N Zcaron ; B 30 0 733 936 ; C -1 ; WX 556 ; N ecircumflex ; B 64 -23 591 757 ; C -1 ; WX 722 ; N Ucircumflex ; B 119 -23 809 936 ; C -1 ; WX 556 ; N acircumflex ; B 50 -23 578 757 ; C -1 ; WX 611 ; N Zdotaccent ; B 30 0 733 918 ; C -1 ; WX 556 ; N scaron ; B 60 -23 597 757 ; C -1 ; WX 722 ; N Amacron ; B 26 0 706 901 ; C -1 ; WX 556 ; N sacute ; B 60 -23 589 757 ; C -1 ; WX 611 ; N Tcommaaccent ; B 142 -307 753 729 ; C -1 ; WX 667 ; N Ydieresis ; B 182 0 805 920 ; C -1 ; WX 611 ; N thorn ; B 11 -218 637 729 ; C -1 ; WX 667 ; N Emacron ; B 79 0 762 901 ; C -1 ; WX 778 ; N Ograve ; B 106 -23 828 936 ; C -1 ; WX 778 ; N Oacute ; B 106 -23 828 936 ; C -1 ; WX 778 ; N Odieresis ; B 106 -23 828 920 ; C -1 ; WX 722 ; N Ntilde ; B 68 0 816 923 ; C -1 ; WX 722 ; N Ncaron ; B 68 0 816 936 ; C -1 ; WX 722 ; N Nacute ; B 68 0 816 936 ; C -1 ; WX 611 ; N Lcaron ; B 80 0 607 729 ; C -1 ; WX 611 ; N Lacute ; B 80 0 606 936 ; C -1 ; WX 278 ; N Idotaccent ; B 63 0 388 918 ; C -1 ; WX 389 ; N racute ; B 63 0 500 757 ; C -1 ; WX 278 ; N Icircumflex ; B 63 0 467 936 ; C -1 ; WX 611 ; N ohungarumlaut ; B 82 -23 710 757 ; C -1 ; WX 611 ; N otilde ; B 82 -23 639 744 ; C -1 ; WX 556 ; N Euro ; B 21 -23 648 724 ; C -1 ; WX 611 ; N ocircumflex ; B 82 -23 634 757 ; C -1 ; WX 444 ; N onesuperior ; B 210 284 438 709 ; C -1 ; WX 444 ; N twosuperior ; B 124 284 499 718 ; C -1 ; WX 444 ; N threesuperior ; B 147 271 490 718 ; C -1 ; WX 278 ; N Igrave ; B 63 0 368 936 ; C -1 ; WX 278 ; N Iacute ; B 63 0 489 936 ; C -1 ; WX 278 ; N Imacron ; B 63 0 466 901 ; C -1 ; WX 278 ; N Iogonek ; B 7 -233 368 729 ; C -1 ; WX 278 ; N Idieresis ; B 63 0 483 920 ; C -1 ; WX 778 ; N Gbreve ; B 107 -23 819 934 ; C -1 ; WX 722 ; N Umacron ; B 119 -23 809 901 ; C -1 ; WX 722 ; N Kcommaaccent ; B 74 -307 843 729 ; C -1 ; WX 611 ; N ograve ; B 82 -23 634 757 ; C -1 ; WX 667 ; N Scommaaccent ; B 76 -307 725 741 ; C -1 ; WX 667 ; N Eogonek ; B 79 -233 762 729 ; C -1 ; WX 611 ; N oacute ; B 82 -23 634 757 ; C -1 ; WX 667 ; N Edotaccent ; B 79 0 762 918 ; C -1 ; WX 268 ; N iogonek ; B 0 -233 351 729 ; C -1 ; WX 611 ; N gcommaaccent ; B 26 -218 656 854 ; C -1 ; WX 611 ; N odieresis ; B 82 -23 634 741 ; C -1 ; WX 611 ; N ntilde ; B 63 0 646 744 ; C -1 ; WX 611 ; N ncaron ; B 63 0 629 757 ; C -1 ; WX 667 ; N Ecaron ; B 79 0 762 936 ; C -1 ; WX 667 ; N Ecircumflex ; B 79 0 762 936 ; C -1 ; WX 556 ; N scedilla ; B 60 -220 589 549 ; C -1 ; WX 389 ; N rcaron ; B 63 0 533 757 ; C -1 ; WX 667 ; N Egrave ; B 79 0 762 936 ; C -1 ; WX 667 ; N Eacute ; B 79 0 762 936 ; C -1 ; WX 778 ; N Gcommaaccent ; B 107 -307 819 741 ; C -1 ; WX 722 ; N Rcommaaccent ; B 80 -307 785 729 ; C -1 ; WX 667 ; N Edieresis ; B 79 0 762 920 ; C -1 ; WX 611 ; N nacute ; B 63 0 629 757 ; C -1 ; WX 611 ; N uogonek ; B 88 -233 656 540 ; C -1 ; WX 611 ; N umacron ; B 88 -23 656 722 ; C -1 ; WX 722 ; N Dcaron ; B 77 0 776 936 ; C -1 ; WX 384 ; N lcaron ; B 67 0 544 729 ; C -1 ; WX 722 ; N Ccaron ; B 107 -23 793 936 ; C -1 ; WX 722 ; N Cacute ; B 107 -23 793 936 ; C -1 ; WX 722 ; N Ccedilla ; B 107 -220 793 741 ; C -1 ; WX 606 ; N degree ; B 240 383 543 686 ; C -1 ; WX 722 ; N Aogonek ; B 26 -233 703 729 ; C -1 ; WX 584 ; N minus ; B 77 172 606 292 ; C -1 ; WX 584 ; N multiply ; B 102 18 582 444 ; C -1 ; WX 584 ; N divide ; B 77 0 606 462 ; C -1 ; WX 722 ; N Aring ; B 26 0 703 953 ; C -1 ; WX 1000 ; N trademark ; B 213 273 1087 729 ; C -1 ; WX 389 ; N rcommaaccent ; B 8 -307 487 549 ; C -1 ; WX 278 ; N lacute ; B 67 0 474 936 ; C -1 ; WX 611 ; N omacron ; B 82 -23 634 722 ; C -1 ; WX 722 ; N Atilde ; B 26 0 739 923 ; C -1 ; WX 278 ; N icircumflex ; B 67 0 426 757 ; C -1 ; WX 278 ; N igrave ; B 67 0 322 757 ; C -1 ; WX 611 ; N ncommaaccent ; B 63 -307 629 549 ; C -1 ; WX 278 ; N lcommaaccent ; B 11 -307 362 729 ; C -1 ; WX 584 ; N plusminus ; B 50 0 630 633 ; C -1 ; WX 1055 ; N onehalf ; B 210 -20 1050 715 ; C -1 ; WX 1055 ; N onequarter ; B 210 -20 1032 715 ; C -1 ; WX 1055 ; N threequarters ; B 147 -20 1032 718 ; C -1 ; WX 278 ; N iacute ; B 67 0 448 757 ; C -1 ; WX 722 ; N Abreve ; B 26 0 703 934 ; C -1 ; WX 556 ; N kcommaaccent ; B 59 -307 651 729 ; C -1 ; WX 778 ; N Omacron ; B 106 -23 828 901 ; C -1 ; WX 278 ; N imacron ; B 67 0 424 722 ; C -1 ; WX 556 ; N emacron ; B 64 -23 591 722 ; C -1 ; WX 556 ; N amacron ; B 50 -23 579 722 ; C -1 ; WX 333 ; N tcommaaccent ; B 62 -307 414 674 ; C -1 ; WX 556 ; N ydieresis ; B 37 -219 653 741 ; C -1 ; WX 500 ; N zdotaccent ; B 21 0 575 741 ; C -1 ; WX 500 ; N zcaron ; B 21 0 575 757 ; C -1 ; WX 500 ; N zacute ; B 21 0 575 757 ; C -1 ; WX 556 ; N yacute ; B 37 -219 653 757 ; C -1 ; WX 611 ; N uhungarumlaut ; B 88 -23 697 757 ; C -1 ; WX 611 ; N eth ; B 83 -23 633 744 ; C -1 ; WX 611 ; N uring ; B 88 -23 656 773 ; C -1 ; WX 778 ; N Ocircumflex ; B 106 -23 828 936 ; C -1 ; WX 333 ; N commaaccent ; B 43 -307 217 -60 ; C -1 ; WX 737 ; N copyright ; B 54 -22 837 743 ; C -1 ; WX 737 ; N registered ; B 55 -22 837 743 ; C -1 ; WX 722 ; N Acircumflex ; B 26 0 703 936 ; C -1 ; WX 278 ; N idieresis ; B 67 0 442 741 ; C -1 ; WX 489 ; N lozenge ; B 95 0 541 744 ; C -1 ; WX 729 ; N Delta ; B 8 0 721 729 ; C -1 ; WX 584 ; N notequal ; B 61 -74 622 544 ; C -1 ; WX 542 ; N radical ; B 102 -36 705 913 ; C -1 ; WX 722 ; N Agrave ; B 26 0 703 936 ; C -1 ; WX 722 ; N Aacute ; B 26 0 714 936 ; C -1 ; WX 584 ; N lessequal ; B 35 0 657 624 ; C -1 ; WX 584 ; N greaterequal ; B 44 0 627 624 ; C -1 ; WX 584 ; N logicalnot ; B 103 86 632 376 ; C -1 ; WX 711 ; N summation ; B -18 -97 760 760 ; C -1 ; WX 490 ; N partialdiff ; B 22 -15 458 750 ; C -1 ; WX 722 ; N Ncommaaccent ; B 68 -307 816 729 ; C -1 ; WX 611 ; N dcroat ; B 79 -23 746 729 ; C -1 ; WX 280 ; N brokenbar ; B 57 -200 335 729 ; C -1 ; WX 611 ; N Lcommaaccent ; B 80 -309 606 729 ; C -1 ; WX 722 ; N Adieresis ; B 26 0 708 920 ; C -1 ; WX 611 ; N mu ; B 11 -220 655 540 ; C -1 ; WX 278 ; N .notdef ; B 245 0 245 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -36 KPX A Ccedilla -36 KPX A G -38 KPX A O -37 KPX A Odieresis -37 KPX A Q -39 KPX A T -91 KPX A U -37 KPX A Uacute -37 KPX A Ucircumflex -37 KPX A Udieresis -37 KPX A Ugrave -37 KPX A V -74 KPX A W -57 KPX A Y -96 KPX A a -11 KPX A b -10 KPX A c -17 KPX A ccedilla -17 KPX A comma 9 KPX A d -17 KPX A e -10 KPX A g -20 KPX A guillemotleft -48 KPX A guilsinglleft -44 KPX A hyphen 2 KPX A o -19 KPX A period 13 KPX A q -13 KPX A quotedblright -71 KPX A quoteright -67 KPX A t -21 KPX A u -17 KPX A v -42 KPX A w -28 KPX A y -41 KPX Aacute C -37 KPX Aacute G -38 KPX Aacute O -38 KPX Aacute Q -40 KPX Aacute T -91 KPX Aacute U -38 KPX Aacute V -74 KPX Aacute W -57 KPX Aacute Y -96 KPX Aacute a -11 KPX Aacute b -10 KPX Aacute c -17 KPX Aacute comma 9 KPX Aacute d -17 KPX Aacute e -11 KPX Aacute g -20 KPX Aacute guillemotleft -48 KPX Aacute guilsinglleft -45 KPX Aacute hyphen 2 KPX Aacute o -20 KPX Aacute period 12 KPX Aacute q -14 KPX Aacute quoteright -67 KPX Aacute t -22 KPX Aacute u -18 KPX Aacute v -42 KPX Aacute w -29 KPX Aacute y -41 KPX Acircumflex C -36 KPX Acircumflex G -38 KPX Acircumflex O -37 KPX Acircumflex Q -39 KPX Acircumflex T -91 KPX Acircumflex U -37 KPX Acircumflex V -74 KPX Acircumflex W -57 KPX Acircumflex Y -96 KPX Acircumflex comma 9 KPX Acircumflex period 13 KPX Adieresis C -37 KPX Adieresis G -38 KPX Adieresis O -38 KPX Adieresis Q -39 KPX Adieresis T -91 KPX Adieresis U -38 KPX Adieresis V -74 KPX Adieresis W -57 KPX Adieresis Y -96 KPX Adieresis a -11 KPX Adieresis b -10 KPX Adieresis c -17 KPX Adieresis comma 9 KPX Adieresis d -17 KPX Adieresis g -20 KPX Adieresis guillemotleft -48 KPX Adieresis guilsinglleft -44 KPX Adieresis hyphen 2 KPX Adieresis o -20 KPX Adieresis period 12 KPX Adieresis q -13 KPX Adieresis quotedblright -71 KPX Adieresis quoteright -67 KPX Adieresis t -22 KPX Adieresis u -17 KPX Adieresis v -42 KPX Adieresis w -28 KPX Adieresis y -41 KPX Agrave C -36 KPX Agrave G -38 KPX Agrave O -37 KPX Agrave Q -39 KPX Agrave T -91 KPX Agrave U -37 KPX Agrave V -74 KPX Agrave W -57 KPX Agrave Y -96 KPX Agrave comma 9 KPX Agrave period 13 KPX Aring C -36 KPX Aring G -38 KPX Aring O -37 KPX Aring Q -39 KPX Aring T -91 KPX Aring U -37 KPX Aring V -74 KPX Aring W -57 KPX Aring Y -96 KPX Aring a -11 KPX Aring b -10 KPX Aring c -17 KPX Aring comma 9 KPX Aring d -17 KPX Aring e -10 KPX Aring g -20 KPX Aring guillemotleft -48 KPX Aring guilsinglleft -44 KPX Aring hyphen 2 KPX Aring o -19 KPX Aring period 13 KPX Aring q -13 KPX Aring quotedblright -71 KPX Aring quoteright -67 KPX Aring t -21 KPX Aring u -17 KPX Aring v -42 KPX Aring w -28 KPX Aring y -41 KPX Atilde C -38 KPX Atilde G -40 KPX Atilde O -39 KPX Atilde Q -41 KPX Atilde T -92 KPX Atilde U -39 KPX Atilde V -74 KPX Atilde W -57 KPX Atilde Y -96 KPX Atilde comma 9 KPX Atilde period 11 KPX B A -41 KPX B AE -30 KPX B Aacute -41 KPX B Acircumflex -41 KPX B Adieresis -41 KPX B Aring -41 KPX B Atilde -41 KPX B O -18 KPX B OE -9 KPX B Oacute -18 KPX B Ocircumflex -18 KPX B Odieresis -18 KPX B Ograve -18 KPX B Oslash -17 KPX B V -46 KPX B W -30 KPX B Y -63 KPX C A -34 KPX C AE -23 KPX C Aacute -34 KPX C Adieresis -34 KPX C Aring -34 KPX C H -1 KPX C K -4 KPX C O -12 KPX C Oacute -12 KPX C Odieresis -12 KPX Ccedilla A -34 KPX D A -40 KPX D Aacute -40 KPX D Acircumflex -40 KPX D Adieresis -40 KPX D Agrave -40 KPX D Aring -40 KPX D Atilde -40 KPX D J -4 KPX D T -24 KPX D V -37 KPX D W -20 KPX D X -40 KPX D Y -62 KPX F A -68 KPX F Aacute -68 KPX F Acircumflex -68 KPX F Adieresis -68 KPX F Agrave -68 KPX F Aring -68 KPX F Atilde -68 KPX F J -33 KPX F O -24 KPX F Odieresis -24 KPX F a -23 KPX F aacute -23 KPX F adieresis -23 KPX F ae -26 KPX F aring -23 KPX F comma -84 KPX F e -12 KPX F eacute -12 KPX F hyphen 4 KPX F i -15 KPX F j -17 KPX F o -21 KPX F oacute -21 KPX F odieresis -21 KPX F oe -16 KPX F oslash -24 KPX F period -82 KPX F r -35 KPX F u -32 KPX G A -17 KPX G AE -5 KPX G Aacute -17 KPX G Acircumflex -17 KPX G Adieresis -17 KPX G Agrave -17 KPX G Aring -17 KPX G Atilde -17 KPX G T -28 KPX G V -41 KPX G W -25 KPX G Y -65 KPX J A -38 KPX J AE -29 KPX J Adieresis -38 KPX J Aring -38 KPX K C -59 KPX K G -61 KPX K O -60 KPX K OE -51 KPX K Oacute -60 KPX K Odieresis -60 KPX K S -45 KPX K T 5 KPX K a -17 KPX K adieresis -17 KPX K ae -17 KPX K aring -17 KPX K e -38 KPX K hyphen -52 KPX K o -45 KPX K oacute -45 KPX K odieresis -45 KPX K u -35 KPX K udieresis -35 KPX K y -74 KPX L A 0 KPX L AE 12 KPX L Aacute 0 KPX L Adieresis 0 KPX L Aring 0 KPX L C -35 KPX L Ccedilla -36 KPX L G -40 KPX L O -39 KPX L Oacute -39 KPX L Ocircumflex -39 KPX L Odieresis -39 KPX L Ograve -39 KPX L Otilde -39 KPX L S -14 KPX L T -104 KPX L U -35 KPX L Udieresis -35 KPX L V -102 KPX L W -79 KPX L Y -121 KPX L hyphen -20 KPX L quotedblright -147 KPX L quoteright -143 KPX L u -17 KPX L udieresis -17 KPX L y -64 KPX N A -15 KPX N AE -2 KPX N Aacute -15 KPX N Adieresis -15 KPX N Aring -15 KPX N C -1 KPX N Ccedilla -1 KPX N G -2 KPX N O -2 KPX N Oacute -2 KPX N Odieresis -2 KPX N a 5 KPX N aacute 5 KPX N adieresis 5 KPX N ae 4 KPX N aring 5 KPX N comma 7 KPX N e 10 KPX N eacute 10 KPX N o 1 KPX N oacute 1 KPX N odieresis 1 KPX N oslash 2 KPX N period 8 KPX N u 4 KPX N udieresis 4 KPX O A -42 KPX O AE -33 KPX O Aacute -42 KPX O Adieresis -42 KPX O Aring -42 KPX O T -32 KPX O V -40 KPX O W -24 KPX O X -43 KPX O Y -65 KPX Oacute A -42 KPX Oacute T -32 KPX Oacute V -40 KPX Oacute W -24 KPX Oacute Y -65 KPX Ocircumflex T -32 KPX Ocircumflex V -40 KPX Ocircumflex Y -65 KPX Odieresis A -42 KPX Odieresis T -32 KPX Odieresis V -40 KPX Odieresis W -24 KPX Odieresis X -43 KPX Odieresis Y -65 KPX Ograve T -32 KPX Ograve V -40 KPX Ograve Y -65 KPX Oslash A -34 KPX Otilde T -32 KPX Otilde V -40 KPX Otilde Y -65 KPX P A -71 KPX P AE -62 KPX P Aacute -71 KPX P Adieresis -71 KPX P Aring -71 KPX P J -52 KPX P a -14 KPX P aacute -14 KPX P adieresis -14 KPX P ae -15 KPX P aring -14 KPX P comma -103 KPX P e -13 KPX P eacute -13 KPX P hyphen -7 KPX P o -22 KPX P oacute -22 KPX P odieresis -22 KPX P oe -17 KPX P oslash -26 KPX P period -101 KPX R C -12 KPX R Ccedilla -12 KPX R G -13 KPX R O -13 KPX R OE -3 KPX R Oacute -13 KPX R Odieresis -13 KPX R T -12 KPX R U -12 KPX R Udieresis -12 KPX R V -38 KPX R W -22 KPX R Y -50 KPX R a -4 KPX R aacute -4 KPX R adieresis -4 KPX R ae -5 KPX R aring -4 KPX R e 0 KPX R eacute 0 KPX R hyphen 10 KPX R o -9 KPX R oacute -9 KPX R odieresis -9 KPX R oe -4 KPX R u -6 KPX R uacute -6 KPX R udieresis -6 KPX R y -4 KPX S A -26 KPX S AE -14 KPX S Aacute -26 KPX S Adieresis -26 KPX S Aring -26 KPX S T -15 KPX S V -36 KPX S W -20 KPX S Y -54 KPX S t -4 KPX T A -93 KPX T AE -85 KPX T Aacute -93 KPX T Acircumflex -93 KPX T Adieresis -93 KPX T Agrave -93 KPX T Aring -93 KPX T Atilde -93 KPX T C -29 KPX T G -30 KPX T J -95 KPX T O -30 KPX T OE -20 KPX T Oacute -30 KPX T Ocircumflex -30 KPX T Odieresis -30 KPX T Ograve -30 KPX T Oslash -36 KPX T Otilde -30 KPX T S -7 KPX T V 9 KPX T W 15 KPX T Y 7 KPX T a -77 KPX T ae -78 KPX T c -79 KPX T colon -104 KPX T comma -75 KPX T e -72 KPX T g -79 KPX T guillemotleft -107 KPX T guilsinglleft -103 KPX T hyphen -53 KPX T i -9 KPX T j -11 KPX T o -81 KPX T oslash -80 KPX T period -73 KPX T r -76 KPX T s -81 KPX T semicolon -105 KPX T u -78 KPX T v -91 KPX T w -85 KPX T y -89 KPX U A -40 KPX U AE -30 KPX U Aacute -40 KPX U Acircumflex -40 KPX U Adieresis -40 KPX U Aring -40 KPX U Atilde -40 KPX U comma -17 KPX U m -3 KPX U n -5 KPX U p -3 KPX U period -12 KPX U r -5 KPX Uacute A -40 KPX Uacute comma -17 KPX Uacute m -3 KPX Uacute n -5 KPX Uacute p -3 KPX Uacute period -12 KPX Uacute r -5 KPX Ucircumflex A -40 KPX Udieresis A -40 KPX Udieresis b -4 KPX Udieresis comma -17 KPX Udieresis m -3 KPX Udieresis n -5 KPX Udieresis p -3 KPX Udieresis period -12 KPX Udieresis r -5 KPX Ugrave A -40 KPX V A -75 KPX V AE -65 KPX V Aacute -75 KPX V Acircumflex -75 KPX V Adieresis -75 KPX V Agrave -75 KPX V Aring -75 KPX V Atilde -75 KPX V C -43 KPX V G -44 KPX V O -44 KPX V Oacute -44 KPX V Ocircumflex -44 KPX V Odieresis -44 KPX V Ograve -44 KPX V Oslash -42 KPX V Otilde -44 KPX V S -31 KPX V T 12 KPX V a -51 KPX V ae -52 KPX V colon -74 KPX V comma -76 KPX V e -46 KPX V g -54 KPX V guillemotleft -81 KPX V guilsinglleft -77 KPX V hyphen -26 KPX V i -13 KPX V o -56 KPX V oslash -55 KPX V period -74 KPX V r -43 KPX V semicolon -77 KPX V u -42 KPX V y -19 KPX W A -59 KPX W AE -50 KPX W Aacute -59 KPX W Acircumflex -59 KPX W Adieresis -59 KPX W Agrave -59 KPX W Aring -59 KPX W Atilde -59 KPX W C -28 KPX W G -29 KPX W O -29 KPX W Oacute -29 KPX W Ocircumflex -29 KPX W Odieresis -29 KPX W Ograve -29 KPX W Oslash -27 KPX W Otilde -29 KPX W S -22 KPX W T 16 KPX W a -34 KPX W ae -34 KPX W colon -61 KPX W comma -53 KPX W e -28 KPX W g -36 KPX W guillemotleft -63 KPX W guilsinglleft -59 KPX W hyphen -9 KPX W i -9 KPX W o -38 KPX W oslash -37 KPX W period -51 KPX W r -33 KPX W semicolon -63 KPX W u -32 KPX W y -9 KPX X C -39 KPX X O -40 KPX X Odieresis -40 KPX X Q -43 KPX X a -17 KPX X e -33 KPX X hyphen -33 KPX X o -43 KPX X u -35 KPX X y -48 KPX Y A -91 KPX Y AE -81 KPX Y Aacute -91 KPX Y Acircumflex -91 KPX Y Adieresis -91 KPX Y Agrave -91 KPX Y Aring -91 KPX Y Atilde -91 KPX Y C -60 KPX Y G -61 KPX Y O -61 KPX Y Oacute -61 KPX Y Ocircumflex -61 KPX Y Odieresis -61 KPX Y Ograve -61 KPX Y Oslash -58 KPX Y Otilde -61 KPX Y S -39 KPX Y T 14 KPX Y a -71 KPX Y ae -71 KPX Y colon -90 KPX Y comma -85 KPX Y e -66 KPX Y g -73 KPX Y guillemotleft -105 KPX Y guilsinglleft -101 KPX Y hyphen -55 KPX Y i -11 KPX Y o -76 KPX Y oslash -74 KPX Y p -53 KPX Y period -84 KPX Y semicolon -93 KPX Y u -57 KPX Y v -36 KPX Z v -21 KPX Z y -19 KPX a j -7 KPX a quoteright -14 KPX a v -23 KPX a w -10 KPX a y -24 KPX aacute v -23 KPX aacute w -10 KPX aacute y -24 KPX adieresis v -23 KPX adieresis w -10 KPX adieresis y -24 KPX ae v -21 KPX ae w -7 KPX ae y -23 KPX agrave v -23 KPX agrave w -10 KPX agrave y -24 KPX aring v -23 KPX aring w -10 KPX aring y -24 KPX b v -23 KPX b w -9 KPX b y -25 KPX c h -9 KPX c k -5 KPX comma one -79 KPX comma quotedblright -39 KPX comma quoteright -35 KPX e quoteright -13 KPX e t -9 KPX e v -22 KPX e w -9 KPX e x -25 KPX e y -25 KPX eacute v -22 KPX eacute w -9 KPX eacute y -25 KPX ecircumflex v -22 KPX ecircumflex w -9 KPX ecircumflex y -25 KPX eight four 2 KPX eight one -32 KPX eight seven -15 KPX f a -6 KPX f aacute -6 KPX f adieresis -6 KPX f ae -6 KPX f aring -6 KPX f e -6 KPX f eacute -6 KPX f f 14 KPX f i -13 KPX f j -15 KPX f l -13 KPX f o -16 KPX f oacute -16 KPX f odieresis -16 KPX f oe -11 KPX f oslash -16 KPX f quoteright 0 KPX f s -10 KPX f t 14 KPX five four -3 KPX five one -37 KPX five seven -17 KPX four four 0 KPX four one -55 KPX four seven -33 KPX g a -3 KPX g adieresis -3 KPX g ae -4 KPX g aring -3 KPX g e 1 KPX g eacute 1 KPX g l -5 KPX g oacute -8 KPX g odieresis -8 KPX g r -3 KPX guillemotright A -56 KPX guillemotright AE -46 KPX guillemotright Aacute -56 KPX guillemotright Adieresis -56 KPX guillemotright Aring -56 KPX guillemotright T -115 KPX guillemotright V -84 KPX guillemotright W -65 KPX guillemotright Y -117 KPX guilsinglright A -52 KPX guilsinglright AE -42 KPX guilsinglright Aacute -52 KPX guilsinglright Adieresis -52 KPX guilsinglright Aring -52 KPX guilsinglright T -110 KPX guilsinglright V -79 KPX guilsinglright W -60 KPX guilsinglright Y -113 KPX h quoteright -15 KPX h y -25 KPX hyphen A -7 KPX hyphen AE 2 KPX hyphen Aacute -7 KPX hyphen Adieresis -7 KPX hyphen Aring -7 KPX hyphen T -64 KPX hyphen V -34 KPX hyphen W -15 KPX hyphen Y -71 KPX i T -12 KPX i j -7 KPX k a -13 KPX k aacute -13 KPX k adieresis -13 KPX k ae -15 KPX k aring -13 KPX k comma -3 KPX k e -19 KPX k eacute -19 KPX k g -26 KPX k hyphen -31 KPX k o -28 KPX k oacute -28 KPX k odieresis -28 KPX k period -3 KPX k s -23 KPX k u -8 KPX k udieresis -8 KPX l v -14 KPX l y -11 KPX m p -1 KPX m v -23 KPX m w -9 KPX m y -23 KPX n T -87 KPX n p -2 KPX n quoteright -15 KPX n v -24 KPX n w -11 KPX n y -25 KPX nine four -6 KPX nine one -30 KPX nine seven -23 KPX o T -90 KPX o quoteright -19 KPX o t -13 KPX o v -27 KPX o w -13 KPX o x -30 KPX o y -29 KPX oacute v -27 KPX oacute w -13 KPX oacute y -29 KPX ocircumflex t -13 KPX odieresis t -13 KPX odieresis v -27 KPX odieresis w -13 KPX odieresis x -30 KPX odieresis y -29 KPX ograve v -27 KPX ograve w -13 KPX ograve y -29 KPX one comma -51 KPX one eight -47 KPX one five -50 KPX one four -70 KPX one nine -47 KPX one one -92 KPX one period -49 KPX one seven -72 KPX one six -48 KPX one three -53 KPX one two -56 KPX one zero -44 KPX p t -10 KPX p y -25 KPX period one -80 KPX period quotedblright -39 KPX period quoteright -35 KPX q c -3 KPX q u -3 KPX quotedblbase A 7 KPX quotedblbase AE 19 KPX quotedblbase T -79 KPX quotedblbase V -77 KPX quotedblbase W -54 KPX quotedblbase Y -96 KPX quotedblleft A -72 KPX quotedblleft AE -64 KPX quotedblleft Aacute -72 KPX quotedblleft Adieresis -72 KPX quotedblleft Aring -72 KPX quotedblleft T -11 KPX quotedblleft V 0 KPX quotedblleft W 9 KPX quotedblleft Y -15 KPX quotedblright A -72 KPX quotedblright AE -64 KPX quotedblright Aacute -72 KPX quotedblright Adieresis -72 KPX quotedblright Aring -72 KPX quotedblright T -7 KPX quotedblright V 1 KPX quotedblright W 11 KPX quotedblright Y -14 KPX quoteleft A -76 KPX quoteleft AE -69 KPX quoteleft Aacute -76 KPX quoteleft Adieresis -76 KPX quoteleft Aring -76 KPX quoteleft T -15 KPX quoteleft V -4 KPX quoteleft W 5 KPX quoteleft Y -20 KPX quoteright A -80 KPX quoteright AE -72 KPX quoteright Aacute -80 KPX quoteright Adieresis -80 KPX quoteright Aring -80 KPX quoteright comma -53 KPX quoteright d -30 KPX quoteright o -34 KPX quoteright period -51 KPX quoteright r -20 KPX quoteright s -27 KPX quoteright t -11 KPX quoteright v -11 KPX quoteright w -4 KPX quoteright y -9 KPX r a -1 KPX r aacute -1 KPX r acircumflex -1 KPX r adieresis -1 KPX r ae -2 KPX r agrave -1 KPX r aring -1 KPX r c -6 KPX r ccedilla -6 KPX r colon -36 KPX r comma -64 KPX r d -5 KPX r e 2 KPX r eacute 2 KPX r ecircumflex 2 KPX r egrave 2 KPX r f 15 KPX r g -7 KPX r h -12 KPX r hyphen -40 KPX r i -12 KPX r j -13 KPX r k -8 KPX r l -12 KPX r m -8 KPX r n -10 KPX r o -7 KPX r oacute -7 KPX r ocircumflex -7 KPX r odieresis -7 KPX r oe -2 KPX r ograve -7 KPX r oslash -12 KPX r p -7 KPX r period -63 KPX r q -2 KPX r quoteright 4 KPX r r -10 KPX r s -4 KPX r semicolon -37 KPX r t 15 KPX r u -8 KPX r v 12 KPX r w 17 KPX r x 7 KPX r y 14 KPX r z 2 KPX s quoteright -12 KPX s t -9 KPX seven colon -71 KPX seven comma -95 KPX seven eight -10 KPX seven five -28 KPX seven four -70 KPX seven one -21 KPX seven period -94 KPX seven seven 2 KPX seven six -21 KPX seven three -7 KPX seven two -11 KPX six four -1 KPX six one -29 KPX six seven -13 KPX t S -9 KPX t a -3 KPX t aacute -3 KPX t adieresis -3 KPX t ae -5 KPX t aring -3 KPX t colon -41 KPX t e -5 KPX t eacute -5 KPX t h -9 KPX t o -15 KPX t oacute -15 KPX t odieresis -15 KPX t quoteright -3 KPX t semicolon -42 KPX three four -2 KPX three one -34 KPX three seven -19 KPX two four -16 KPX two one -24 KPX two seven -12 KPX u quoteright -8 KPX v a -21 KPX v aacute -21 KPX v acircumflex -21 KPX v adieresis -21 KPX v ae -21 KPX v agrave -21 KPX v aring -21 KPX v atilde -21 KPX v c -25 KPX v colon -41 KPX v comma -57 KPX v e -18 KPX v eacute -18 KPX v ecircumflex -18 KPX v egrave -18 KPX v g -26 KPX v hyphen -5 KPX v l -12 KPX v o -28 KPX v oacute -28 KPX v odieresis -28 KPX v ograve -28 KPX v oslash -28 KPX v period -55 KPX v s -25 KPX v semicolon -43 KPX w a -11 KPX w aacute -11 KPX w acircumflex -11 KPX w adieresis -11 KPX w ae -12 KPX w agrave -11 KPX w aring -11 KPX w atilde -11 KPX w c -12 KPX w colon -36 KPX w comma -38 KPX w e -5 KPX w eacute -5 KPX w ecircumflex -5 KPX w egrave -5 KPX w g -13 KPX w hyphen 7 KPX w l -8 KPX w o -15 KPX w oacute -15 KPX w odieresis -15 KPX w ograve -15 KPX w oslash -14 KPX w period -36 KPX w s -15 KPX w semicolon -38 KPX x a -22 KPX x c -27 KPX x e -20 KPX x eacute -20 KPX x o -30 KPX x q -23 KPX y a -20 KPX y aacute -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y ae -20 KPX y agrave -20 KPX y aring -20 KPX y atilde -20 KPX y c -26 KPX y colon -40 KPX y comma -58 KPX y e -19 KPX y eacute -19 KPX y ecircumflex -19 KPX y egrave -19 KPX y g -27 KPX y hyphen -4 KPX y l -11 KPX y o -28 KPX y oacute -28 KPX y odieresis -28 KPX y ograve -28 KPX y oslash -27 KPX y period -55 KPX y s -24 KPX y semicolon -43 KPX zero four -3 KPX zero one -29 KPX zero seven -21 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n019024l.pfb0000644000077100007710000011414507260330352015424 0ustar fjffjf00000000000000h%!PS-AdobeFont-1.0: NimbusSanL-BoldItal 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Sans L Bold Italic) readonly def /FamilyName (Nimbus Sans L) readonly def /Weight (Bold) readonly def /ItalicAngle -12.0 def /isFixedPitch false def /UnderlinePosition -111 def /UnderlineThickness 69 def end readonly def /FontName /NimbusSanL-BoldItal def /PaintType 0 def /WMode 0 def /FontBBox {-177 -309 1107 953} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020910 def currentdict end currentfile eexec Տ `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>o/ᄃ_w[B[{'tG2̕>YxOe;i毊TE{jvm/@ɇ a9:ruKٴ\fFJkD@%Q{𴪣 ˭:J4iNa$Snz3=D>upUڻ[y;T)S{@HeQ,TiV#kbšV?%Yזgnqj"cYs=iXnc sh?:HO1R>႓i3=6vV7٩Tp aDUn5%#2:30<袓5RZ( Tۜ,S5aƷ<6H-3i  hA=uf6H ؘxbL-6nHo VYviz>RkGK4@FNJKGsi0{\ T%eh 7t QcBiٜQ,QjNZ1:RddnBA 7J. ERVsoٵb%vR{}8ߧvNHP։ck` gmȭ +O'3eJx0dtEr7v@$aR!@O>\7@?;5\ϛ̜22EK)9nK!*61V*ir IVn78XYQ#"jvcAc¬A[˃=#YZ!N`4/;`Ph/^  !@'*STckӘ+g[{Vk@.)wlx:+#DYC7AF$;v(}WYvkt$"kbM_QnMOqy8KDŽ䬼:J7L8\=;AIuI$"nj9 3Pc۬qxAђ0دy=Qv׺Ͻ95z!65= .O% "7@`F} ]v-iyɿ1[s3Mx?s;.?>.#?ybѼލܕjKxWQ`xWh(\pWn#xY+pnG[1'}R{1C!Jn#a^JkcKu6/ܛb0-+B{nz{bRv{nJym j\'* čA?YjQӫ=#ˡ,'@hfqy$Pd'GdvfAWO]%|шL@7#xݫu}@0 E9v**#.]'9nx/|%g)΋d B~Ѝև SHTd~q/IM"SάaenhЃM7;?71Վڶ ]>2K L>l=Bt =#9lԜ,$F~~aMu'j*Pr|7tf˽a?#~靦J@ aph.C>(E:P-sR=bJ8="_O_> UZ OZgYĈnHCʼBEE9O_B SZkU"32~z6==| ]BO@tl4-1iZkܬ9sP<@txFIi5ҍuh;t3Zd F}U&{8:}^_CG.*AB$eʹɱAayT" W g,M~`Ȝ peM#Tpx[:zE tr-:֯0.K}4,?{D飋gc]G{ 3JCH?B^6D}JTxsJXVc ΀8 #7>X{p3|VYa qCV_/8WdJ0U1jdQC-ǗaUàAvI>riYyIjIؾޗ_ ڇ$ڏ2ahMw/{%uJg%.? ^_=N$aMY^jLks`6e#i~4.zF֑TxUoFhp(kpr1%DF6>g#T>7F'-](|n]>H  y[mj ,^Ҧ*AOZ9UjTkڥնU ^dYG9-tnY/\cp?s47si#חjWVo9uZS:m s_J]E/?rXNiϘ}N7E?p2} 7Ma{r91tQQ\ҏٝ%}иMZ-m?T^{Mp7#d8!Et1 [1Fa`T Z|lhB.WBy3,ZZYa/^w|8Nef|̭_͞5t>?B Z7MiĞI/{y' g$R!}}ƻyr2F?~o.YId~h7-"i}YmrM7wv-oE6g OXr7Ri_Y&vAl$A C@|1i;vD J+q[ {F0B4U N@bDAZXP+Vp$+r'3i4y.M' a`O~DRX  Fҷ>L%IK#s~L#JFA=LA7n &5Kt&63qC>ǧMe"_^'^^B҉v2) 0L+`Vɡ1\Zm o/o / ;$=)|'rk(pbS_k,C~μlh`ɱ(Kn@GNݲR*Dg& ~[rR`q ;OF|jfl&A3qE#䖬kIeF '"{wTͼ DYe&J:􇲡U;df%4b?ťs-92*%nMeNJ? ҄%|Gam]2@'X)crع WB).Ç?K7KA1O/ gyDE3#zS ^0$,IhdݣG68=#Tj$v㦍cP+Ue?)~'\VY0lg+ NaßKzԧO"ԥMџ|T\]nY}IzЈul.R 4C KZhq`D&XAC&+QuưVP|=ݗҍœI#W/XaWl޾6J1Pt .1P3iގT5`#U|uv;fp#-ڇ˪υA&l+oO4.{Ř5Ubܗ8ja2/O fV8Y61MްHO7B\ԂLF?,I4\ɢʢD?ny8czɻåעbYj*ijv]dW$p[u~-ߧ1Ph/&"џ Whl_%3Km"P^޸|#]c$5Evg66!f0G[>ĐEF׺όj^ #+V &Wd (/Gɉ+* 7ZsE+rdy?>()_=A6 1Ҙ䬘K7 ",@3FFH\X"i6ݺEڊ6i;2ÑvIv /ϔ.{)UNӿaIQǼDf]D2(~ y\7 !ȃ1pyKXAG"<57=@~C(M'WYv~28T!3eb q۫.qU-$MO;,bF6i [gOu柗w]X}܌W#h>$υ\L,J'C8,ZېZRnN(p)jl=S7 -q6S9^;XRrQAz}^1kX ԠRMַA852P87!xda jBRdaRf`P ,BmR"E 7E`Q.Giޭܨl?#?ݴmcCA5^-;;+erbeYaFCJ=1\ x5־Og9D^I z;dꂽDE)aoP(\դɲ1v.stŻ68:)\E#W2Ɍlo)cɲXLI҇' (X.{ w줃^Wc0Ik]|VCJ+tfde-1 w}cvuP. d0uQ,t)ZHN7; 68mHbYqsy_ q6bc2WA<96^~>Q>`]a3}\ Sl)'okj߾j+H"ճsgrea*QPVӚay't}]'VDeMy>t-F6Ύay#Nf㘄~Z49Ƅ "J'Lt{k>¡z$G)m[`dW뼄ܓy8Z;I+.j'*mtAv&Vd>ܑ6TesBͽ⼮kAI~ ~ia1i6r- ~X,r2_6-S5[ma`òD{a- /6"?{Y _A8 ?)V+ŠЖ.059[w1Jڳ>z}Ԕj,04(r,;9TV4$d.ϐ/ ش e-j^MJL*P^?P2MRsRk+iO-]]pel=SZ͞T {~k/ F$u$:;vWT𻗱yxvNƒD~^U:}ݕu5 FMy}CK BBsq!9BMYj4mCvɳj|JzB\T-H55>N\%Ab_Kπϫ{YتUJũ+x-Fv은M6kn& diWu8+( >RދvSce!f+F|@$tFHH ;AdPfsd; ,FU6OCe\5q빣ndDԖ3hVSp8HS™+6hXfE//z81%N%gK|BNLJ#U->Ru ϒꐑnP86 K_>k0׃ / 7E ;.fUyʙ!<0ٰUmwrX!C )oYhsiju'zAh @9ۑg.Eb&fERCXつExW5LyO ݤKl@VmD 2aC;vդYvDVth7\Terw %Br ɴt>6>(ȫ/WdmH {~/j>߼]/N_̭n;鰨a9w-7F9RMycCŸE^$)rI^ Ĩ?,1ڨWx_te-]RtQY}RY^3bM%qݜ qRAdaHQ  Ŀ}ea iyp$֘ivsPr-}w0( ʋSq =gpIM̿Ɏ憴>ؽB#$|AqV}Vdc0#LGDĊZx#Yq>34 5VDL#{=^,. no*g2Eӷe+*4"/+"x\u!ia'(_\[GnWyuEH6΁SN7p8F+ [AǤ" f fl<>")0& 9zùKi-mJ5z~[;81M7}q|4#e?&kb\rab Ce,* d, ֗|STBJQ Ve57?k%,6+5A"}M7a-Sla9t_経$W%|3f f${1_r].b R.|L^>͕^G-XmWms.͋?|(g*Udv':L#OV^?CZձL8('"Kצߔ#RȌNG(]FCA~0ƍ^2twd=UCEঀ{P=0.Clq~ah渄Ɗ0XɔĹm@CNLe:O&2. 7F4Ɯ  -J{|^}DAa4+O d|TJv`\MTsx3ph6W*^ #+<횆AMK$5ry踳PY|QFqOXg(*ՎUt660<@Wr|.V:rSR:xK^cmh,5qY7 IH8^CFRm lR-:3Pu`1#l_;/q+:ӓ0~@"G#<|+qcCӋK eO.3otoxS0{?l#Z+ԉ}7|kowhBe?k> >c 'D6 yM^n|O<^O] C`# @+7ogx2q UFpa\b86cYL۵N8Rf@v+<{Wt|[x#?ٔ(X?P@EuA/.Q<,dʹge>qWcL\'Kx&OY&h!7Id̀ٔIN[xݰDYME9suGGZy 4=|Kͽ"==%ؘ U\W@CJ~|krV43Uy"l-{Cz|ݦTwŝOF2V5S{'&!X4vr>Ɉ4a_Kf6f<'p*{CfLOh=37D8(:f \1"Oʈ l5fu-ɇ-[s )~T6xul%u"c$9 鬌^" S?XhJj|2܃%0Ǧ٩V.HSxSN·p6eIA;h^јG8۸LڬM{eoz|JM{[ы&R;Ŋxo6"Z2Vg"6Q*aN%C>.tk1d:m K0IZݕl{+QlhAñݶ`BtO  f/zM&.s(&Z0yf\Qp$/S2~ OBvI-~Q{J,=$MjQWGzri,c]9$oT#OlĹpEB<]# o愳taMt({<W)?ʫ"]U.MK71eb] #2} C+v#l6N{,/0 }~ILd/^Hl^jZ?5-H6z~'6"̚+]h_&apL x[Ɣ0Qq*k7]9sBYnD4lYl{5шE1 GS2[zeϾc 9Qgrʛ:c0Rmf5Gwݬ-!yWcO B,8[!f̂?$ybۏ$&;1XkELq5z1umg$"wZLaĢvVK4K _*H}fBΔCmfyu*utNf\5bts >v< QBI.(qJ)•3P1?[5%@ IFǺI(~NCkX6I pEvn\8hfJ{u8liY_J7+$J:,(6u{M9Mgeyx0f̨pE;/& & }WZ }pC>+e0I;ϭb p;"iЄCZ!Ǝ9XeX{4]@ǿsɓe.@Aoռo8sH}I#OzǬ+A-RZމKzp앻b`&e:nGGY™]޵9 ҃>nSS~AR jև0k֕7Thz,5kN DkU1;wЉ12Vs~K=D`w0Xy&1yqHNm䆟{$m&-43} xn.]60@oˊƵ%X1y[9? äU,~A'IV2joڲk=e^ +Pֈa_Of(ܭ E(}EyH˸-p;o_Ճ*L݅4=cᆚq`F: }019t1CqqUeOa}11&3ہt(FyM tYZOO\ruء[!%i5:i>᝔BqwAbP9s[J 1tF~juMWNW~fHcB"E()>NxfPȧu?`dz:fH$tDc1oq\1_.Z2730:}b)>93$߂uC~Nf9#hjه.MgD>B߄*`0=2gv^G {ȃ2SBWHn:âtO8zXe¢PʮJF[e`J˅|ε17):}x  :7RagDȜ);gY }Рikf 1MxP]u6&ffL wɂL/X2'dtvWxk!;Zg#\}盡 œ:Jl^kZRlQSr PK)?zTZbo|m}EF;;4\v3ʶd_@~b}Q*,LhΊ:U,QrȮ3ꗼ<2^2n' De%UbŰBTİ2,f&yֶ\a[4\IV 8]귶Vq׼E"^gViJ@L9#D+= SPF0^NaM{ӭ%nj*)YZlRYP&YkF1fz/T;(X~#/?&(e+^@ӆNt:jmPGd >HxAj!OFJY1rc2p*u9hZ@);?gnWzMj&8-K+|P,ZXJ==B:K$0ف7vYQ0Sw 1)'7|IR5yC--;R* 8 DT|IQ;GK#8*U\8{<0-ROA'1_.G{3w.n2Jw !>\_?`h:'k~TN#ݝ-clEaMZ0eYT}(s#UOT X޶i;s(eM-Piu؏1C|PV6{iE7xQdO0E?~ׅWٰ 0Sפf$55^`HFǻ0/;m/N$4H#K.>+;))~҈sܑ!]?ʍsge'H&ٜ!Pq+zUn=漁|g^t7š$%ͅم{LSaG&̃WOiDl!nPER\bY.}Sُ(K_~pMq᷐vɖo⪦*zO5di'DFՓom ՞M7vLNx#5ı`1D>*$4E'%y:Qo+";Sl§FJ;$J& Cx4eooxj=,@3fRui.$S6 ,C#vI?| $IF&,PKfN c6C'j)^|}~xk|4pnd$"X]aFJ[voiz4G^QSJ;֟*xs~XME^-'rzlEnkϜn|enxa,P˓m,7:~7J?(Iߛ (OGmxŽ`s1ˎٗlq[2eQ8"fز{=?z(uYR]5f:ZLWqB2k7WCqh|uNXH99kBY8dǬb(F79܍X&\H{B%fx Kz8-υʺҷJrDF^O$d z'$ n>T~AsF+8=5:>4LϻSed!bfћw0XqZ- "P}U6`Y>-O;e<~yBR܁KBOW&vjiAց?7gvmH:>9 m+CՂӌ`9_ʮ-CJfWE N;B #weI[W96< aHu 4i'jHĉetz/$xD#C:zv=-:qD>P^̟kMsQ^0ad'BZ hɘRA7Q%dtMdvtwtYQE\Y'GRЭT`e)ӕ= M%'m)a9T^x Ԙo&0Iܡ/ڙn@H#p*i){Zi}_ |" u4L+F*c1S##̽s"-eŒ ]~ŃSbEn[&:釬K2v(Z(4)cTɿxXRYEEaPLENy :;uuCvbHHL'uTKHt21 BeaDITN,Cȹ` ~έ0: 8mΉ1;KC2녡 3O3$}Bl H0={fWծ!%8_z VHG"UDsRAh؜"ܬ9sP<ݒ6)_5M7wZQ ?yJ;]Gt+̈!@Lcꠢ| &AJ ^Eh6)领!OTɂ2HS쿽N[KF=ӿ#Ş$;֘⵨S3<%,3]%so$M.Io*n0o kP~"ViMʰ5ѐmO^LNp)ֻ;: ֌2i:o7!&̒@,/8TaJ}G̭BgS$4FUBǏp#RWc\rTO X׷$NfA'U(1p寖,<׮&HFfȜ"P'sӭ7)vFiI1)v C[WN=??S@]2Rn6="~f4?a5ֲ'Ux@K:OY‘T W`H _`tEÞԒ ʎtCu WW+(I1Ȉ }K"Wj_MѰ]ƭ908̓c\0 6O ]p3>hl3XrDjOF&D*"D; D7/mU~ %Bܨeq12GPE|UHZhY&ŶWtgOLV<&鈼QC=n UܣZE(>5͐Ys)YAfl19ZƗ2sK={qSOېq-abR@3ܫ0'lytZAU/b3;o R_I;Xn)YG=qX jX:j41R53um=ߦz>AT̢R~j>@oS\scO ~q|KBØU6V y4Z]~JV<|fN-Y{懽0B\A\s2v7L ]GD fsv,Ԍ;x;z}L%ɎS&ĔOg)2;UjeBqm׺/<ŒbrKCMlWVNNqdAGO^G 6T Ɉ㽴RٸvP3i7?3t{VV; 2\nG62OJF Sp_h5ҜS;-˵3(Jr)~p\Hd}{eW-Y +O3 ~޷U>Ciidvbk!q" C(ȖĻAXBoK jH=_Xu51!dQtradani[@/Qb ԇXz"NCs!ɛOѭkųր^ܢo7ʶx=hfՀ$W1G6"[t'I(m!xG}3qpj{))熔>C]2t5S_^Dϲ& S2秄Z)79G $ʲqKJ8NG jxރik}%"?iZ4~^_2͵6InCC2JgV}-df2LŇW'cbXQQ*#BhG)Wh,J|M>V[𣠒~Ξ׷0,d쭌E;W&Az@ϊOPeI&lMLKiSaT;CYR~Ӌzc4>Z`yC-E(n%oa1*:|x|s^CTYNB,>k;yW~&.!Zg{A-9c(kiIC38 NT?>v6oNœ\\lHc\6cyG旘>OF>+ j緮v7mp⣛WdH ߗ<'b4V DIO,NK@5q/ HV>>=}A_A n%kX]٩iq 1BdJIqfa\1+px_aΙ+,B?aGXHiB)+?/Ջ Wg_c7i 64aVzGo28-1KuMg`[fD#jDG EhLcu7^w=?φw&J4 E9%^E'p^$.D[VuZ(Y%Hvx2#y3s V.xzqKီ Ky ّeC 8l{3{ԋ =&gh&5*X ~p-2rj F*tЛ7ܡU0EM\~+ļ̅ęiwLdass d$/;mml˗3@DOUD )}9^Fl9N(n^J|+p1/ش-w<;GoNv'vXj$EZ]0@%c-|Ih}secn\uzc?طof>q16!T"E| syj 昻}U5GNW*UJe w]Z"듃^lB?7mv pm cupg)θbO(gFXZ-#pO q!撃ݏ`;oS%Rgh] tIju3}# %<|&@a.FOSRnx.kD5 ƒ(r>cEY7؆D Sؖ}A: n.ZrmH/LIvUIxKY;BPڥ5v\['HTt?ǜ#Cw^Y/$!+2p,|-9)1 }oKl$8#" .(̶Y/2Vsڍ ;M7;%A% =X=tW* M5ο};ckA%_H3XZi\寲6TQ+H7Ue90m"UAM5i[ܐx K=3{DHA|`Zwhe~L#tZnDg~tK-{NJT= R V͙%ٞ!]:- ȡɓa>| !੆,sF nZ؝{T%Wt]-__ߦVw^};z?+Qx ز_8KI]g ]?MnBU=ׂ:|ά]&1ݝKU0WsK9ӻ 9)\;MGKi/kp |]5w' `,ɿ( kZ;;l^̈́osnT*ױ;|U?7~&Ì@tgxRVZ+e%ݔ^LcǜV+z9RRJGquF=km4Ei:97e.q 1$J#hq!5Xj9Pr9PE EcΥxlx ApRh9In~}oU+>sc0ۀ4{ճD931A(v\fhΦLb?ef\S]S"l#E'GL }gK| !"0׭.o"R,7ķ5#tAV :`D0 a1'#1L@r!#^]>/W ]&|}- wM\`?P9+H3-B~@ _[ cHMSWVFX-s&W-xYiwi9wD(ׂ甕S/V{z1  ȒgƉI x#qvV½*U{?lp8r.x=0s3Ƀ#sJS &ʥ9Rn-x"4g_boG wA<$wq0D>-2%+./Ta<l ۝ZU2[p 8dg1v5!C.X_Ϸ5p0B|>@6R'M=;T&+Ő3Eg-)/I!Dϐib.^ 9^)+ m^Էgzw9wmFShN\ fV*܉iaz:|xK'iE1&_%璥[. o;vlk}6ߍWoG/JfRNaͮp:3164$;8УZ UyE ֋SJ (Tk]yݮwxJFUsפ}(14K%'M89!է8ezg:*<0_*:?Zuȸ4%HBg[Tws=Z;Wb ѳ6Ի0)iRLfoѸ'8ab&FtyVg`Dj X܋Pw ܜ% !n>Q \F1Vsgaۅ6//e_>h`qCXɸfV5=YRPmծgE`H[$+ !i|>SWp?;c{ŖM2 SH{8jvHˎ`q-V"4ILT4CT /Pm/6. z8ɃJ_HiqvhR~JC֪rhe'Yr^ 3"QGWs˜Eb(V! ̛%5&_~Gh&`1&HU[VNSp=G:?we=ָ۸ukXgLk*#ea9šO#twwU{GM%3G#g~><}Q^:LWgGn$+~LW"a{O>; -KuJF%aE}Os2'FHrB~DPCo:dG6#nUXIt՞;}z:LmNXmk&aar< bU#dV3cM%M鱗Y (xH52f ]'{t_ݗ"Bz**rx%>>99k%RjS3+Ro (9Q"(ifSo#9 ߂˹w[oeYj|Wj;wP[W,DZŝ`rJnP3VjQ9HEto7gr{ѕiey[g_V_oG*-BPFf"3!%0wtEɞpXt"Fz= \ogbߕfEkWOŒmKy. {Rn5PL F\4ZYJ=n|Ќ- =c>4aĝNIZ6ZqcL2E+7L꣓]8r1GG{1/D[JN4w{`0LqFJWI΃xX~Q,H1q|Eä_~`xLHھ,|;ck,v*cvA#cKO:|eC{~@ʵN ̣ 5 [G]!wu$Hhz/l./k}F2P?ttw4U  lT4_|`V7Xt&EWEB{{PTJ.WM6)gX-nZD8˾&vSySgD>@̅P`w)rTe^ayܭ0bu v ヹ<3"|%ԣ-.8ieőH[*jJAcFÒڡc2u}ǛP8?Ωb9r+s:֡>+Ev<ȅ6h,uF ɇ>c2œvysMܣzKmap!2,S}`jyT,"0)9#S pFUf65VFVsO'À]x[B)tW "X+ϓ>~S1M!ye%Ѣ9 =o xu{{0'S\̌UUeRG ?Ķ z_F:$ B !,}FU.ɕUFv|]nw{X>HĒZ6T\SP䉒 MǛ7=7 /IJO`~ɧK]V,M2|"tl\nFw݇4BJJh-l 3m}]=pMNڬ5!RKn5Em7"N,a4!kƊ$D`aWpQV#dx-pOWZ=k Edc^<橚"v:4[bk:Қ3*sQE_gBce'Rʝ'6lFzϚvdیx Kf_G/M$P1[m tH ;X2s0 oyֹvӆx:٩4JfdANVoחEZ'r78jH YTzP)8XXJUVgEV4g hfԗ3=8U~{ ^'L_$OR TMr~9}=hxe%v5Ua5.QNa<,\Aczn,+z(тɶGa9r_[ltw{85FO?]$;쟝žy0i ؟79#bGYR US{ڶQN^ϢaYPJ.EJ78am%Bw ,hH:H3voB4Edpͭ5|j Xɋ&I%^F0BqҒZWޑ nFXiQh3+!wT]g |oy˰G:k@ ڮjqWzX18w)Op(x0ÉͷRˌ-;MU0EcfO(H3;]pC0aP~g@J Q!1=h ~\&YQۖ@ JҹuPd,]  A4D6~xS_+e&/YQv^J2 n6=0nkux ;X |) 0ʜr0cA uY# -9EPeF `,u#ͮi|~`lut]{> yun;V,2s/;G's-vo~ ">r0+w Ov8kjW߈"ǡPۧԡ WdnT CTtaA6+k 'щ W$)D'˻^6A sQI PMFx9Vt0NBU=t ;' Pe)T)qʂ=ˡ/Q c"k(7V/\6Uk9G3rR`("MC bW`E b+7 Q/.nM?2t ` &yzVwl΀Wn= x[ƖB #P$#iK뇫A%gK"Z{ePΑG1&D2O`eEG%s2CͤiVpKN6/\9ŽIhsW{ҕu8))?-ԴG[xd`B?80ӡZ_wxiOC<Mw~5} cw}J 24[p |Z"͋`Vt'SYXH"-CapfnjB N'aV&)6m7T-%C,V`!~?P&uYhaA{>ٝmB"V&F!1|zd6$za㭀7.d9vMxqO?z Z)ڲzrO5ȝAd{ǐSӽBFB{$KQcßʑ]5h8W~Kq2| jr!b1sϤ{3wފ'9Vܲr\]`7B{ WJ w`ҊEh=S6zx:z_)M1M&B-Y>ɫ}os&|@$`@sUKЋEgʩ.& "u  RR<+ɚ慟Jb]mb<qiP1NRU*m*; } ?RX8In!6zIٛaYr/e-ȇX9``9B7w5" m0#RYqH 7Qh\^O)Ż ?RoЏ*Y >T4lUK訬/ɛ|8;zITP*y{pjn qi-&^=E!뼏&>W@ <`pAC9 Tւ\1P;PٙlЕUdf PppE@cJ3ނ'Z A=Ww沟Qy~dbo%~ n.3;J9QU[+x;V1eߩ\f%5t&w8;xUK7Y] Wqtǐ:t0S8fm Qۧz-<4q'  g Ay'Ys̀lC.m}w ; t[U rLx`Շ <72,͟ʕt^AMM-"E\`qMn=;I=`ɐD(p'}.;VMfm7 NB /V';t`T_gCӑ%VH$Z!8"p ~-%- `tRʫoHK6?{V&UK3t"¾ ;q[qS9x4oKz+$#P+pYL0 ~Z|!:$6|ZE}P;l+g|f-3/TbJAfR?)~c0gTG5.jв+jCf,|f̒x/ C%FvߣJq$1w8,]PĖ3n<@*zII[Ѷwdrll.NoZG@ @)Z;]kZ $^m%jhO<͞Z1ÏY8N莶5i=FaJ2HRH@6M~*Wj,wI$NZMF<~EApJod0:!#NAPЁCp݂di' =C%G-C&lk~ _>O?R#:Nߚ3EQp> Ng$o8zHyuSE X7!9lv 2V63ލxvPywsɽ8l E|l&@\H_-Ռ27 cItɯσ&Ǟ: Ф ]F9b_/ݒmAPMX0󃻚5]S`!_?p04D80p~6•|TK* _A4M\t-bMPLIw_M Y$)KC asJi{$h))(x i;0)b~ mfJ[Ab}?.9QĊ|A]˾b 䲌Ej]mqrHø϶1^;X SNX51Ӗ(nz_e[!a>3:t^YUn=K@U[ocnc=ᑘӨg `'49ua5u_cpH>RY[,C RBꙊBcd:/볁Zc$e2l:itAPu}sr|('ا-YHo 1YóH"\ VdqoF֎29 k(T_^)?lthN+GdW T_Ė. tlcу@k5gtw{jf R6P2+fثN-N׳}s^IumczcvyËL!Q /4{$nIK:*%OUL3ͱWwnO/ l6;lfVTi}z>繲u@%Ǻh.c) d_IE\%,kbG.ğE&Ǔa0sz?dD@QӉWU VpHŸ ye2f0ߪ`rנ@gqKݬ_1 .ڠ$) 'h)$A|-,f+W!ʣxn<6R00000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/n021003l.afm0000644000077100007710000007630707260330352015415 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusRomNo9L-Regu FullName Nimbus Roman No9 L Regular FamilyName Nimbus Roman No9 L Weight Regular ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -100 UnderlineThickness 50 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -168 -281 1000 924 CapHeight 662 XHeight 450 Descender -217 Ascender 683 StartCharMetrics 316 C 32 ; WX 250 ; N space ; B 125 0 125 0 ; C 33 ; WX 333 ; N exclam ; B 130 -9 237 676 ; C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ; C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ; C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ; C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ; C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ; C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ; C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ; C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ; C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ; C 43 ; WX 564 ; N plus ; B 30 0 534 506 ; C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ; C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ; C 46 ; WX 250 ; N period ; B 70 -11 181 100 ; C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ; C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ; C 49 ; WX 500 ; N one ; B 111 0 394 676 ; C 50 ; WX 500 ; N two ; B 30 0 475 676 ; C 51 ; WX 500 ; N three ; B 43 -14 432 676 ; C 52 ; WX 500 ; N four ; B 12 0 472 676 ; C 53 ; WX 500 ; N five ; B 32 -14 438 688 ; C 54 ; WX 500 ; N six ; B 34 -14 468 684 ; C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ; C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ; C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ; C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ; C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ; C 60 ; WX 564 ; N less ; B 28 -10 536 516 ; C 61 ; WX 564 ; N equal ; B 30 120 534 386 ; C 62 ; WX 564 ; N greater ; B 28 -10 536 516 ; C 63 ; WX 444 ; N question ; B 68 -8 414 676 ; C 64 ; WX 921 ; N at ; B 116 -14 809 676 ; C 65 ; WX 722 ; N A ; B 15 0 706 674 ; C 66 ; WX 667 ; N B ; B 17 0 593 662 ; C 67 ; WX 667 ; N C ; B 28 -14 633 676 ; C 68 ; WX 722 ; N D ; B 16 0 685 662 ; C 69 ; WX 611 ; N E ; B 12 0 597 662 ; C 70 ; WX 556 ; N F ; B 12 0 546 662 ; C 71 ; WX 722 ; N G ; B 32 -14 709 676 ; C 72 ; WX 722 ; N H ; B 19 0 702 662 ; C 73 ; WX 333 ; N I ; B 18 0 315 662 ; C 74 ; WX 389 ; N J ; B 10 -14 370 662 ; C 75 ; WX 722 ; N K ; B 34 0 723 662 ; C 76 ; WX 611 ; N L ; B 12 0 598 662 ; C 77 ; WX 889 ; N M ; B 12 0 863 662 ; C 78 ; WX 722 ; N N ; B 12 -11 707 662 ; C 79 ; WX 722 ; N O ; B 34 -14 688 676 ; C 80 ; WX 556 ; N P ; B 16 0 542 662 ; C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ; C 82 ; WX 667 ; N R ; B 17 0 659 662 ; C 83 ; WX 556 ; N S ; B 42 -14 491 676 ; C 84 ; WX 611 ; N T ; B 17 0 593 662 ; C 85 ; WX 722 ; N U ; B 14 -14 705 662 ; C 86 ; WX 722 ; N V ; B 16 -11 697 662 ; C 87 ; WX 944 ; N W ; B 5 -11 932 662 ; C 88 ; WX 722 ; N X ; B 10 0 704 662 ; C 89 ; WX 722 ; N Y ; B 22 0 703 662 ; C 90 ; WX 611 ; N Z ; B 9 0 597 662 ; C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ; C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ; C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ; C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ; C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ; C 97 ; WX 444 ; N a ; B 37 -10 442 460 ; C 98 ; WX 500 ; N b ; B 3 -10 468 683 ; C 99 ; WX 444 ; N c ; B 25 -10 412 460 ; C 100 ; WX 500 ; N d ; B 27 -10 491 683 ; C 101 ; WX 444 ; N e ; B 25 -10 424 460 ; C 102 ; WX 333 ; N f ; B 20 0 383 683 ; C 103 ; WX 500 ; N g ; B 28 -218 470 460 ; C 104 ; WX 500 ; N h ; B 9 0 487 683 ; C 105 ; WX 278 ; N i ; B 16 0 253 683 ; C 106 ; WX 278 ; N j ; B -70 -218 194 683 ; C 107 ; WX 500 ; N k ; B 7 0 505 683 ; C 108 ; WX 278 ; N l ; B 19 0 257 683 ; C 109 ; WX 778 ; N m ; B 16 0 775 460 ; C 110 ; WX 500 ; N n ; B 16 0 485 460 ; C 111 ; WX 500 ; N o ; B 29 -10 470 460 ; C 112 ; WX 500 ; N p ; B 5 -217 470 460 ; C 113 ; WX 500 ; N q ; B 24 -217 488 461 ; C 114 ; WX 333 ; N r ; B 5 0 335 460 ; C 115 ; WX 389 ; N s ; B 51 -10 348 459 ; C 116 ; WX 278 ; N t ; B 13 -10 279 579 ; C 117 ; WX 500 ; N u ; B 9 -10 479 450 ; C 118 ; WX 500 ; N v ; B 19 -14 477 450 ; C 119 ; WX 722 ; N w ; B 21 -14 694 450 ; C 120 ; WX 500 ; N x ; B 17 0 479 450 ; C 121 ; WX 500 ; N y ; B 14 -218 475 450 ; C 122 ; WX 444 ; N z ; B 27 0 418 450 ; C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ; C 124 ; WX 200 ; N bar ; B 67 -14 133 676 ; C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ; C 126 ; WX 541 ; N asciitilde ; B 40 186 502 320 ; C 161 ; WX 333 ; N exclamdown ; B 97 -218 204 469 ; C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ; C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ; C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ; C 165 ; WX 500 ; N yen ; B -53 0 512 662 ; C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ; C 167 ; WX 500 ; N section ; B 70 -148 426 676 ; C 168 ; WX 500 ; N currency ; B -22 58 522 602 ; C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ; C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ; C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ; C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ; C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ; C 174 ; WX 556 ; N fi ; B 31 0 521 683 ; C 175 ; WX 556 ; N fl ; B 32 0 521 683 ; C 177 ; WX 500 ; N endash ; B 0 201 500 250 ; C 178 ; WX 500 ; N dagger ; B 59 -149 443 676 ; C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ; C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ; C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ; C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ; C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ; C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ; C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ; C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ; C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ; C 191 ; WX 444 ; N questiondown ; B 30 -218 376 468 ; C 193 ; WX 333 ; N grave ; B 19 507 242 678 ; C 194 ; WX 333 ; N acute ; B 93 507 317 678 ; C 195 ; WX 333 ; N circumflex ; B 11 507 322 674 ; C 196 ; WX 333 ; N tilde ; B 1 532 331 638 ; C 197 ; WX 333 ; N macron ; B 11 547 322 601 ; C 198 ; WX 333 ; N breve ; B 26 507 307 664 ; C 199 ; WX 333 ; N dotaccent ; B 118 523 217 622 ; C 200 ; WX 333 ; N dieresis ; B 18 523 316 622 ; C 202 ; WX 333 ; N ring ; B 67 512 266 711 ; C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ; C 205 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ; C 206 ; WX 333 ; N ogonek ; B 64 -165 249 0 ; C 207 ; WX 333 ; N caron ; B 11 507 322 674 ; C 208 ; WX 1000 ; N emdash ; B 0 201 1000 250 ; C 225 ; WX 889 ; N AE ; B 0 0 863 662 ; C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ; C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ; C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ; C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ; C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ; C 241 ; WX 667 ; N ae ; B 38 -10 632 460 ; C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ; C 248 ; WX 278 ; N lslash ; B 19 0 259 683 ; C 249 ; WX 500 ; N oslash ; B 29 -112 470 551 ; C 250 ; WX 722 ; N oe ; B 30 -10 690 460 ; C 251 ; WX 500 ; N germandbls ; B 12 -9 468 683 ; C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 834 ; C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ; C -1 ; WX 556 ; N Scedilla ; B 42 -215 491 676 ; C -1 ; WX 611 ; N Tcaron ; B 17 0 593 886 ; C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ; C -1 ; WX 667 ; N Rcaron ; B 17 0 659 886 ; C -1 ; WX 667 ; N Racute ; B 17 0 659 890 ; C -1 ; WX 556 ; N Sacute ; B 42 -14 491 890 ; C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ; C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ; C -1 ; WX 722 ; N Ohungarumlaut ; B 34 -14 688 890 ; C -1 ; WX 722 ; N Uhungarumlaut ; B 14 -14 705 890 ; C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ; C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ; C -1 ; WX 722 ; N Dcroat ; B 16 0 685 662 ; C -1 ; WX 611 ; N Zacute ; B 9 0 597 890 ; C -1 ; WX 722 ; N Uring ; B 14 -14 705 923 ; C -1 ; WX 500 ; N gbreve ; B 28 -218 470 664 ; C -1 ; WX 444 ; N eogonek ; B 25 -165 424 460 ; C -1 ; WX 444 ; N edotaccent ; B 25 -10 424 622 ; C -1 ; WX 444 ; N ecaron ; B 25 -10 424 674 ; C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ; C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ; C -1 ; WX 444 ; N eacute ; B 25 -10 424 678 ; C -1 ; WX 444 ; N edieresis ; B 25 -10 424 622 ; C -1 ; WX 600 ; N dcaron ; B 27 -10 599 683 ; C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ; C -1 ; WX 444 ; N ccaron ; B 25 -10 412 674 ; C -1 ; WX 444 ; N cacute ; B 25 -10 412 678 ; C -1 ; WX 444 ; N aogonek ; B 37 -165 444 460 ; C -1 ; WX 444 ; N aring ; B 37 -10 442 721 ; C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ; C -1 ; WX 444 ; N abreve ; B 37 -10 442 664 ; C -1 ; WX 444 ; N egrave ; B 25 -10 424 678 ; C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ; C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ; C -1 ; WX 444 ; N adieresis ; B 37 -10 442 622 ; C -1 ; WX 722 ; N Uogonek ; B 14 -165 705 662 ; C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ; C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ; C -1 ; WX 500 ; N udieresis ; B 9 -10 479 622 ; C -1 ; WX 278 ; N tcaron ; B 13 -10 300 676 ; C -1 ; WX 389 ; N scommaaccent ; B 51 -281 348 459 ; C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ; C -1 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ; C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ; C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ; C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 834 ; C -1 ; WX 389 ; N scaron ; B 39 -10 350 674 ; C -1 ; WX 722 ; N Amacron ; B 15 0 706 813 ; C -1 ; WX 389 ; N sacute ; B 51 -10 365 678 ; C -1 ; WX 611 ; N Tcommaaccent ; B 17 -281 593 662 ; C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 834 ; C -1 ; WX 500 ; N thorn ; B 5 -217 470 683 ; C -1 ; WX 611 ; N Emacron ; B 12 0 597 813 ; C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ; C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ; C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 834 ; C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ; C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 886 ; C -1 ; WX 722 ; N Nacute ; B 12 -11 707 890 ; C -1 ; WX 611 ; N Lcaron ; B 12 0 598 676 ; C -1 ; WX 611 ; N Lacute ; B 12 0 598 890 ; C -1 ; WX 333 ; N Idotaccent ; B 18 0 315 834 ; C -1 ; WX 333 ; N racute ; B 5 0 335 678 ; C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ; C -1 ; WX 500 ; N ohungarumlaut ; B 29 -10 470 678 ; C -1 ; WX 500 ; N otilde ; B 29 -10 470 638 ; C -1 ; WX 500 ; N Euro ; B -16 -14 477 674 ; C -1 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ; C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ; C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ; C -1 ; WX 300 ; N threesuperior ; B 14 262 291 676 ; C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ; C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ; C -1 ; WX 333 ; N Imacron ; B 11 0 322 813 ; C -1 ; WX 333 ; N Iogonek ; B 18 -165 397 662 ; C -1 ; WX 333 ; N Idieresis ; B 18 0 316 834 ; C -1 ; WX 722 ; N Gbreve ; B 32 -14 709 876 ; C -1 ; WX 722 ; N Umacron ; B 14 -14 705 813 ; C -1 ; WX 722 ; N Kcommaaccent ; B 34 -281 723 662 ; C -1 ; WX 500 ; N ograve ; B 29 -10 470 678 ; C -1 ; WX 556 ; N Scommaaccent ; B 42 -281 491 676 ; C -1 ; WX 611 ; N Eogonek ; B 12 -165 611 662 ; C -1 ; WX 500 ; N oacute ; B 29 -10 470 678 ; C -1 ; WX 611 ; N Edotaccent ; B 12 0 597 834 ; C -1 ; WX 278 ; N iogonek ; B 16 -165 278 683 ; C -1 ; WX 500 ; N gcommaaccent ; B 28 -218 470 736 ; C -1 ; WX 500 ; N odieresis ; B 29 -10 470 622 ; C -1 ; WX 500 ; N ntilde ; B 16 0 485 638 ; C -1 ; WX 500 ; N ncaron ; B 16 0 485 674 ; C -1 ; WX 611 ; N Ecaron ; B 12 0 597 886 ; C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ; C -1 ; WX 389 ; N scedilla ; B 51 -215 348 459 ; C -1 ; WX 333 ; N rcaron ; B 5 0 335 674 ; C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ; C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ; C -1 ; WX 722 ; N Gcommaaccent ; B 32 -281 709 676 ; C -1 ; WX 667 ; N Rcommaaccent ; B 17 -281 659 662 ; C -1 ; WX 611 ; N Edieresis ; B 12 0 597 834 ; C -1 ; WX 500 ; N nacute ; B 16 0 485 678 ; C -1 ; WX 500 ; N uogonek ; B 9 -165 500 450 ; C -1 ; WX 500 ; N umacron ; B 9 -10 479 601 ; C -1 ; WX 722 ; N Dcaron ; B 16 0 685 886 ; C -1 ; WX 348 ; N lcaron ; B 19 0 348 683 ; C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 886 ; C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ; C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ; C -1 ; WX 400 ; N degree ; B 57 390 343 676 ; C -1 ; WX 722 ; N Aogonek ; B 15 -165 786 674 ; C -1 ; WX 564 ; N minus ; B 30 220 534 286 ; C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ; C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ; C -1 ; WX 722 ; N Aring ; B 15 0 706 915 ; C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ; C -1 ; WX 333 ; N rcommaaccent ; B 5 -281 335 460 ; C -1 ; WX 278 ; N lacute ; B 19 0 290 890 ; C -1 ; WX 500 ; N omacron ; B 29 -10 470 601 ; C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ; C -1 ; WX 278 ; N icircumflex ; B -16 0 295 674 ; C -1 ; WX 278 ; N igrave ; B -8 0 253 678 ; C -1 ; WX 500 ; N ncommaaccent ; B 16 -281 485 460 ; C -1 ; WX 278 ; N lcommaaccent ; B 19 -281 257 683 ; C -1 ; WX 564 ; N plusminus ; B 30 0 534 568 ; C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ; C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ; C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ; C -1 ; WX 278 ; N iacute ; B 16 0 290 678 ; C -1 ; WX 722 ; N Abreve ; B 15 0 706 876 ; C -1 ; WX 500 ; N kcommaaccent ; B 7 -281 505 683 ; C -1 ; WX 722 ; N Omacron ; B 34 -14 688 813 ; C -1 ; WX 278 ; N imacron ; B -16 0 292 601 ; C -1 ; WX 444 ; N emacron ; B 25 -10 424 601 ; C -1 ; WX 444 ; N amacron ; B 37 -10 442 601 ; C -1 ; WX 278 ; N tcommaaccent ; B 13 -281 279 579 ; C -1 ; WX 500 ; N ydieresis ; B 14 -218 475 622 ; C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 622 ; C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ; C -1 ; WX 444 ; N zacute ; B 27 0 418 678 ; C -1 ; WX 500 ; N yacute ; B 14 -218 475 678 ; C -1 ; WX 500 ; N uhungarumlaut ; B 9 -10 479 678 ; C -1 ; WX 500 ; N eth ; B 29 -10 471 686 ; C -1 ; WX 500 ; N uring ; B 9 -10 479 711 ; C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ; C -1 ; WX 333 ; N commaaccent ; B 97 -281 236 -38 ; C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ; C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ; C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ; C -1 ; WX 278 ; N idieresis ; B 11 0 269 622 ; C -1 ; WX 494 ; N lozenge ; B 18 0 466 740 ; C -1 ; WX 612 ; N Delta ; B 6 0 608 688 ; C -1 ; WX 564 ; N notequal ; B 30 -3 534 509 ; C -1 ; WX 549 ; N radical ; B -2 -65 526 924 ; C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ; C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ; C -1 ; WX 564 ; N lessequal ; B 28 0 536 628 ; C -1 ; WX 564 ; N greaterequal ; B 28 0 536 628 ; C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ; C -1 ; WX 713 ; N summation ; B 14 -123 695 752 ; C -1 ; WX 494 ; N partialdiff ; B 26 -10 462 753 ; C -1 ; WX 722 ; N Ncommaaccent ; B 12 -281 707 662 ; C -1 ; WX 500 ; N dcroat ; B 27 -10 500 683 ; C -1 ; WX 200 ; N brokenbar ; B 67 -14 133 676 ; C -1 ; WX 611 ; N Lcommaaccent ; B 12 -281 598 662 ; C -1 ; WX 722 ; N Adieresis ; B 15 0 706 834 ; C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ; C -1 ; WX 250 ; N .notdef ; B 125 0 125 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -51 KPX A Ccedilla -57 KPX A G -57 KPX A O -60 KPX A Odieresis -60 KPX A Q -60 KPX A T -54 KPX A U -62 KPX A Uacute -62 KPX A Ucircumflex -62 KPX A Udieresis -62 KPX A Ugrave -62 KPX A V -131 KPX A W -113 KPX A Y -81 KPX A a -6 KPX A b -20 KPX A c -29 KPX A ccedilla -29 KPX A comma -3 KPX A d -28 KPX A e -27 KPX A g -20 KPX A guillemotleft -64 KPX A guilsinglleft -74 KPX A hyphen -23 KPX A o -40 KPX A period -10 KPX A q -21 KPX A quotedblright -91 KPX A quoteright -116 KPX A t -20 KPX A u -28 KPX A v -81 KPX A w -73 KPX A y -83 KPX Aacute C -51 KPX Aacute G -57 KPX Aacute O -60 KPX Aacute Q -60 KPX Aacute T -54 KPX Aacute U -62 KPX Aacute V -131 KPX Aacute W -113 KPX Aacute Y -81 KPX Aacute a -6 KPX Aacute b -20 KPX Aacute c -29 KPX Aacute comma -3 KPX Aacute d -28 KPX Aacute e -27 KPX Aacute g -20 KPX Aacute guillemotleft -64 KPX Aacute guilsinglleft -74 KPX Aacute hyphen -23 KPX Aacute o -40 KPX Aacute period -10 KPX Aacute q -21 KPX Aacute quoteright -116 KPX Aacute t -20 KPX Aacute u -28 KPX Aacute v -81 KPX Aacute w -73 KPX Aacute y -83 KPX Acircumflex C -51 KPX Acircumflex G -57 KPX Acircumflex O -60 KPX Acircumflex Q -60 KPX Acircumflex T -54 KPX Acircumflex U -62 KPX Acircumflex V -131 KPX Acircumflex W -113 KPX Acircumflex Y -81 KPX Acircumflex comma -3 KPX Acircumflex period -10 KPX Adieresis C -51 KPX Adieresis G -57 KPX Adieresis O -60 KPX Adieresis Q -60 KPX Adieresis T -54 KPX Adieresis U -62 KPX Adieresis V -131 KPX Adieresis W -113 KPX Adieresis Y -81 KPX Adieresis a -6 KPX Adieresis b -20 KPX Adieresis c -29 KPX Adieresis comma -3 KPX Adieresis d -28 KPX Adieresis g -20 KPX Adieresis guillemotleft -64 KPX Adieresis guilsinglleft -74 KPX Adieresis hyphen -23 KPX Adieresis o -40 KPX Adieresis period -10 KPX Adieresis q -21 KPX Adieresis quotedblright -91 KPX Adieresis quoteright -116 KPX Adieresis t -20 KPX Adieresis u -28 KPX Adieresis v -81 KPX Adieresis w -73 KPX Adieresis y -83 KPX Agrave C -51 KPX Agrave G -57 KPX Agrave O -60 KPX Agrave Q -60 KPX Agrave T -54 KPX Agrave U -62 KPX Agrave V -131 KPX Agrave W -113 KPX Agrave Y -81 KPX Agrave comma -3 KPX Agrave period -10 KPX Aring C -51 KPX Aring G -57 KPX Aring O -60 KPX Aring Q -60 KPX Aring T -54 KPX Aring U -62 KPX Aring V -131 KPX Aring W -113 KPX Aring Y -81 KPX Aring a -6 KPX Aring b -20 KPX Aring c -29 KPX Aring comma -3 KPX Aring d -28 KPX Aring e -27 KPX Aring g -20 KPX Aring guillemotleft -64 KPX Aring guilsinglleft -74 KPX Aring hyphen -23 KPX Aring o -40 KPX Aring period -10 KPX Aring q -21 KPX Aring quotedblright -91 KPX Aring quoteright -116 KPX Aring t -20 KPX Aring u -28 KPX Aring v -81 KPX Aring w -73 KPX Aring y -83 KPX Atilde C -51 KPX Atilde G -57 KPX Atilde O -60 KPX Atilde Q -60 KPX Atilde T -54 KPX Atilde U -62 KPX Atilde V -131 KPX Atilde W -113 KPX Atilde Y -81 KPX Atilde comma -3 KPX Atilde period -10 KPX B A -51 KPX B AE -44 KPX B Aacute -51 KPX B Acircumflex -51 KPX B Adieresis -51 KPX B Aring -51 KPX B Atilde -51 KPX B O -24 KPX B OE -18 KPX B Oacute -24 KPX B Ocircumflex -24 KPX B Odieresis -24 KPX B Ograve -24 KPX B Oslash -23 KPX B V -65 KPX B W -59 KPX B Y -68 KPX C A -23 KPX C AE -15 KPX C Aacute -23 KPX C Adieresis -23 KPX C Aring -23 KPX C H -2 KPX C K -10 KPX C O -12 KPX C Oacute -12 KPX C Odieresis -12 KPX Ccedilla A -27 KPX D A -67 KPX D Aacute -67 KPX D Acircumflex -67 KPX D Adieresis -67 KPX D Agrave -67 KPX D Aring -67 KPX D Atilde -67 KPX D J -41 KPX D T -10 KPX D V -71 KPX D W -57 KPX D X -64 KPX D Y -74 KPX F A -71 KPX F Aacute -71 KPX F Acircumflex -71 KPX F Adieresis -71 KPX F Agrave -71 KPX F Aring -71 KPX F Atilde -71 KPX F J -13 KPX F O -10 KPX F Odieresis -10 KPX F a -34 KPX F aacute -34 KPX F adieresis -10 KPX F ae -36 KPX F aring -34 KPX F comma -51 KPX F e -19 KPX F eacute -19 KPX F hyphen 3 KPX F i -13 KPX F j -20 KPX F o -21 KPX F oacute -21 KPX F odieresis -21 KPX F oe -21 KPX F oslash -21 KPX F period -58 KPX F r -10 KPX F u -11 KPX G A -26 KPX G AE -19 KPX G Aacute -26 KPX G Acircumflex -26 KPX G Adieresis -26 KPX G Agrave -26 KPX G Aring -26 KPX G Atilde -26 KPX G T -21 KPX G V -23 KPX G W -18 KPX G Y -26 KPX J A -53 KPX J AE -46 KPX J Adieresis -53 KPX J Aring -53 KPX K C -43 KPX K G -49 KPX K O -51 KPX K OE -44 KPX K Oacute -51 KPX K Odieresis -51 KPX K S 1 KPX K T 0 KPX K a 2 KPX K adieresis 2 KPX K ae 0 KPX K aring 2 KPX K e -19 KPX K hyphen -63 KPX K o -31 KPX K oacute -31 KPX K odieresis -31 KPX K u -19 KPX K udieresis -19 KPX K y -86 KPX L A 0 KPX L AE 6 KPX L Aacute 0 KPX L Adieresis 0 KPX L Aring 0 KPX L C 2 KPX L Ccedilla 0 KPX L G 0 KPX L O -3 KPX L Oacute -3 KPX L Ocircumflex -3 KPX L Odieresis -3 KPX L Ograve -3 KPX L Otilde -3 KPX L S 5 KPX L T -73 KPX L U -26 KPX L Udieresis -26 KPX L V -115 KPX L W -89 KPX L Y -100 KPX L hyphen 25 KPX L quotedblright -100 KPX L quoteright -125 KPX L u -10 KPX L udieresis -10 KPX L y -56 KPX N A -28 KPX N AE -21 KPX N Aacute -28 KPX N Adieresis -28 KPX N Aring -28 KPX N C -16 KPX N Ccedilla -16 KPX N G -19 KPX N O -20 KPX N Oacute -20 KPX N Odieresis -20 KPX N a -27 KPX N aacute -27 KPX N adieresis -27 KPX N ae -27 KPX N aring -27 KPX N comma -14 KPX N e -17 KPX N eacute -17 KPX N o -21 KPX N oacute -21 KPX N odieresis -21 KPX N oslash -20 KPX N period -21 KPX N u -25 KPX N udieresis -25 KPX O A -58 KPX O AE -50 KPX O Aacute -58 KPX O Adieresis -58 KPX O Aring -58 KPX O T -9 KPX O V -69 KPX O W -54 KPX O X -55 KPX O Y -72 KPX Oacute A -58 KPX Oacute T -9 KPX Oacute V -69 KPX Oacute W -54 KPX Oacute Y -72 KPX Ocircumflex T -9 KPX Ocircumflex V -69 KPX Ocircumflex Y -72 KPX Odieresis A -58 KPX Odieresis T -9 KPX Odieresis V -69 KPX Odieresis W -54 KPX Odieresis X -55 KPX Odieresis Y -72 KPX Ograve T -9 KPX Ograve V -69 KPX Ograve Y -72 KPX Oslash A -58 KPX Otilde T -9 KPX Otilde V -69 KPX Otilde Y -72 KPX P A -90 KPX P AE -91 KPX P Aacute -90 KPX P Adieresis -90 KPX P Aring -90 KPX P J -52 KPX P a -17 KPX P aacute -17 KPX P adieresis -17 KPX P ae -18 KPX P aring -17 KPX P comma -94 KPX P e -23 KPX P eacute -23 KPX P hyphen -37 KPX P o -25 KPX P oacute -25 KPX P odieresis -25 KPX P oe -25 KPX P oslash -25 KPX P period -101 KPX R C -41 KPX R Ccedilla -41 KPX R G -44 KPX R O -45 KPX R OE -39 KPX R Oacute -45 KPX R Odieresis -45 KPX R T -34 KPX R U -56 KPX R Udieresis -55 KPX R V -73 KPX R W -67 KPX R Y -76 KPX R a -2 KPX R aacute -2 KPX R adieresis -2 KPX R ae -5 KPX R aring -2 KPX R e -23 KPX R eacute -23 KPX R hyphen -52 KPX R o -36 KPX R oacute -36 KPX R odieresis -36 KPX R oe -31 KPX R u -24 KPX R uacute -24 KPX R udieresis -24 KPX R y -37 KPX S A -37 KPX S AE -30 KPX S Aacute -37 KPX S Adieresis -37 KPX S Aring -37 KPX S T -19 KPX S V -27 KPX S W -21 KPX S Y -30 KPX S t -20 KPX T A -53 KPX T AE -45 KPX T Aacute -53 KPX T Acircumflex -53 KPX T Adieresis -53 KPX T Agrave -53 KPX T Aring -53 KPX T Atilde -53 KPX T C -8 KPX T G -11 KPX T J -18 KPX T O -10 KPX T OE -4 KPX T Oacute -10 KPX T Ocircumflex -10 KPX T Odieresis -10 KPX T Ograve -10 KPX T Oslash -10 KPX T Otilde -10 KPX T S -10 KPX T V 14 KPX T W 20 KPX T Y 11 KPX T a -77 KPX T ae -80 KPX T c -87 KPX T colon -87 KPX T comma -74 KPX T e -86 KPX T g -91 KPX T guillemotleft -114 KPX T guilsinglleft -125 KPX T hyphen -73 KPX T i -18 KPX T j -25 KPX T o -90 KPX T oslash -89 KPX T period -82 KPX T r -50 KPX T s -73 KPX T semicolon -87 KPX T u -93 KPX T v -105 KPX T w -106 KPX T y -102 KPX U A -65 KPX U AE -58 KPX U Aacute -65 KPX U Acircumflex -65 KPX U Adieresis -65 KPX U Aring -65 KPX U Atilde -65 KPX U comma -31 KPX U m -33 KPX U n -31 KPX U p -28 KPX U period -37 KPX U r -27 KPX Uacute A -65 KPX Uacute comma -31 KPX Uacute m -33 KPX Uacute n -31 KPX Uacute p -28 KPX Uacute period -37 KPX Uacute r -27 KPX Ucircumflex A -65 KPX Udieresis A -65 KPX Udieresis b 21 KPX Udieresis comma -31 KPX Udieresis m -33 KPX Udieresis n -31 KPX Udieresis p -28 KPX Udieresis period -37 KPX Udieresis r -27 KPX Ugrave A -65 KPX V A -124 KPX V AE -104 KPX V Aacute -124 KPX V Acircumflex -124 KPX V Adieresis -124 KPX V Agrave -124 KPX V Aring -124 KPX V Atilde -124 KPX V C -63 KPX V G -66 KPX V O -67 KPX V Oacute -67 KPX V Ocircumflex -67 KPX V Odieresis -67 KPX V Ograve -67 KPX V Oslash -65 KPX V Otilde -67 KPX V S -47 KPX V T 10 KPX V a -88 KPX V ae -89 KPX V colon -90 KPX V comma -105 KPX V e -85 KPX V g -101 KPX V guillemotleft -109 KPX V guilsinglleft -119 KPX V hyphen -69 KPX V i -20 KPX V o -89 KPX V oslash -88 KPX V period -112 KPX V r -56 KPX V semicolon -89 KPX V u -51 KPX V y -54 KPX W A -113 KPX W AE -98 KPX W Aacute -113 KPX W Acircumflex -113 KPX W Adieresis -113 KPX W Agrave -113 KPX W Aring -113 KPX W Atilde -113 KPX W C -53 KPX W G -56 KPX W O -56 KPX W Oacute -56 KPX W Ocircumflex -56 KPX W Odieresis -56 KPX W Ograve -56 KPX W Oslash -55 KPX W Otilde -56 KPX W S -41 KPX W T 17 KPX W a -80 KPX W ae -81 KPX W colon -81 KPX W comma -89 KPX W e -72 KPX W g -91 KPX W guillemotleft -97 KPX W guilsinglleft -107 KPX W hyphen -56 KPX W i -13 KPX W o -76 KPX W oslash -75 KPX W period -96 KPX W r -47 KPX W semicolon -81 KPX W u -43 KPX W y -45 KPX X C -52 KPX X O -61 KPX X Odieresis -61 KPX X Q -61 KPX X a -7 KPX X e -28 KPX X hyphen -54 KPX X o -41 KPX X u -29 KPX X y -96 KPX Y A -74 KPX Y AE -67 KPX Y Aacute -74 KPX Y Acircumflex -74 KPX Y Adieresis -74 KPX Y Agrave -74 KPX Y Aring -74 KPX Y Atilde -74 KPX Y C -68 KPX Y G -71 KPX Y O -69 KPX Y Oacute -69 KPX Y Ocircumflex -69 KPX Y Odieresis -69 KPX Y Ograve -69 KPX Y Oslash -69 KPX Y Otilde -69 KPX Y S -44 KPX Y T 13 KPX Y a -99 KPX Y ae -102 KPX Y colon -109 KPX Y comma -96 KPX Y e -103 KPX Y g -113 KPX Y guillemotleft -135 KPX Y guilsinglleft -145 KPX Y hyphen -98 KPX Y i -17 KPX Y o -107 KPX Y oslash -106 KPX Y p -88 KPX Y period -103 KPX Y semicolon -108 KPX Y u -78 KPX Y v -86 KPX Z v -48 KPX Z y -50 KPX a j -26 KPX a quoteright -40 KPX a v -30 KPX a w -31 KPX a y -32 KPX aacute v -30 KPX aacute w -31 KPX aacute y -32 KPX adieresis v -30 KPX adieresis w -31 KPX adieresis y -32 KPX ae v -27 KPX ae w -28 KPX ae y -30 KPX agrave v -30 KPX agrave w -31 KPX agrave y -32 KPX aring v -30 KPX aring w -31 KPX aring y -32 KPX b v -29 KPX b w -30 KPX b y -32 KPX c h -15 KPX c k -19 KPX comma one -52 KPX comma quotedblright -29 KPX comma quoteright -53 KPX e quoteright -30 KPX e t -10 KPX e v -27 KPX e w -28 KPX e x -35 KPX e y -30 KPX eacute v -27 KPX eacute w -28 KPX eacute y -30 KPX ecircumflex v -27 KPX ecircumflex w -28 KPX ecircumflex y -30 KPX eight four 0 KPX eight one -64 KPX eight seven -15 KPX f a -25 KPX f aacute -25 KPX f adieresis 12 KPX f ae -25 KPX f aring -6 KPX f e -34 KPX f eacute -34 KPX f f 6 KPX f i 15 KPX f j 8 KPX f l 44 KPX f o -38 KPX f oacute -38 KPX f odieresis -1 KPX f oe -36 KPX f oslash -37 KPX f quoteright 17 KPX f s -21 KPX f t 10 KPX five four -8 KPX five one -70 KPX five seven -36 KPX four four 14 KPX four one -75 KPX four seven -42 KPX g a -17 KPX g adieresis -17 KPX g ae -18 KPX g aring -17 KPX g e -25 KPX g eacute -25 KPX g l -7 KPX g oacute -26 KPX g odieresis -26 KPX g r 11 KPX guillemotright A -62 KPX guillemotright AE -61 KPX guillemotright Aacute -62 KPX guillemotright Adieresis -62 KPX guillemotright Aring -62 KPX guillemotright T -114 KPX guillemotright V -117 KPX guillemotright W -95 KPX guillemotright Y -138 KPX guilsinglright A -72 KPX guilsinglright AE -71 KPX guilsinglright Aacute -72 KPX guilsinglright Adieresis -72 KPX guilsinglright Aring -72 KPX guilsinglright T -124 KPX guilsinglright V -128 KPX guilsinglright W -105 KPX guilsinglright Y -149 KPX h quoteright -38 KPX h y -30 KPX hyphen A -26 KPX hyphen AE -25 KPX hyphen Aacute -26 KPX hyphen Adieresis -26 KPX hyphen Aring -26 KPX hyphen T -77 KPX hyphen V -82 KPX hyphen W -59 KPX hyphen Y -108 KPX i T -28 KPX i j -36 KPX k a 1 KPX k aacute 1 KPX k adieresis 1 KPX k ae -1 KPX k aring 1 KPX k comma 4 KPX k e -19 KPX k eacute -19 KPX k g -12 KPX k hyphen -65 KPX k o -32 KPX k oacute -32 KPX k odieresis -32 KPX k period -2 KPX k s 5 KPX k u 14 KPX k udieresis 14 KPX l v -28 KPX l y -25 KPX m p -9 KPX m v -30 KPX m w -31 KPX m y -31 KPX n T -55 KPX n p -13 KPX n quoteright -39 KPX n v -30 KPX n w -31 KPX n y -31 KPX nine four -7 KPX nine one -63 KPX nine seven -6 KPX o T -91 KPX o quoteright -34 KPX o t -9 KPX o v -36 KPX o w -36 KPX o x -36 KPX o y -41 KPX oacute v -36 KPX oacute w -36 KPX oacute y -41 KPX ocircumflex t -9 KPX odieresis t -9 KPX odieresis v -36 KPX odieresis w -36 KPX odieresis x -36 KPX odieresis y -41 KPX ograve v -36 KPX ograve w -36 KPX ograve y -41 KPX one comma -48 KPX one eight -68 KPX one five -37 KPX one four -72 KPX one nine -61 KPX one one -78 KPX one period -55 KPX one seven -78 KPX one six -66 KPX one three -41 KPX one two -34 KPX one zero -54 KPX p t -6 KPX p y -28 KPX period one -61 KPX period quotedblright -33 KPX period quoteright -58 KPX q c -7 KPX q u -12 KPX quotedblbase A 12 KPX quotedblbase AE 19 KPX quotedblbase T -60 KPX quotedblbase V -104 KPX quotedblbase W -76 KPX quotedblbase Y -87 KPX quotedblleft A -86 KPX quotedblleft AE -91 KPX quotedblleft Aacute -86 KPX quotedblleft Adieresis -86 KPX quotedblleft Aring -86 KPX quotedblleft T 14 KPX quotedblleft V 1 KPX quotedblleft W 7 KPX quotedblleft Y -1 KPX quotedblright A -94 KPX quotedblright AE -99 KPX quotedblright Aacute -94 KPX quotedblright Adieresis -94 KPX quotedblright Aring -94 KPX quotedblright T 11 KPX quotedblright V 0 KPX quotedblright W 6 KPX quotedblright Y -2 KPX quoteleft A -110 KPX quoteleft AE -115 KPX quoteleft Aacute -110 KPX quoteleft Adieresis -110 KPX quoteleft Aring -110 KPX quoteleft T -9 KPX quoteleft V -23 KPX quoteleft W -17 KPX quoteleft Y -26 KPX quoteright A -130 KPX quoteright AE -135 KPX quoteright Aacute -130 KPX quoteright Adieresis -130 KPX quoteright Aring -130 KPX quoteright comma -71 KPX quoteright d -56 KPX quoteright o -54 KPX quoteright period -78 KPX quoteright r -44 KPX quoteright s -47 KPX quoteright t -43 KPX quoteright v -47 KPX quoteright w -47 KPX quoteright y -45 KPX r a -1 KPX r aacute -1 KPX r acircumflex -1 KPX r adieresis -1 KPX r ae -3 KPX r agrave -1 KPX r aring -1 KPX r c -8 KPX r ccedilla -8 KPX r colon -7 KPX r comma -41 KPX r d -10 KPX r e -6 KPX r eacute -6 KPX r ecircumflex -6 KPX r egrave -6 KPX r f 19 KPX r g -15 KPX r h -6 KPX r hyphen -46 KPX r i 20 KPX r j 14 KPX r k -10 KPX r l -18 KPX r m 20 KPX r n 22 KPX r o -8 KPX r oacute -8 KPX r ocircumflex -8 KPX r odieresis -8 KPX r oe -7 KPX r ograve -8 KPX r oslash -7 KPX r p 25 KPX r period -48 KPX r q -10 KPX r quoteright -19 KPX r r 26 KPX r s 0 KPX r semicolon -7 KPX r t 23 KPX r u 19 KPX r v 20 KPX r w 19 KPX r x 17 KPX r y 22 KPX r z 2 KPX s quoteright -38 KPX s t -15 KPX seven colon -68 KPX seven comma -72 KPX seven eight -40 KPX seven five -59 KPX seven four -63 KPX seven one -56 KPX seven period -79 KPX seven seven -20 KPX seven six -46 KPX seven three -35 KPX seven two -31 KPX six four 12 KPX six one -74 KPX six seven -29 KPX t S 2 KPX t a 10 KPX t aacute 10 KPX t adieresis 10 KPX t ae 9 KPX t aring 10 KPX t colon -8 KPX t e 0 KPX t eacute 0 KPX t h 10 KPX t o -8 KPX t oacute -8 KPX t odieresis -8 KPX t quoteright -29 KPX t semicolon -8 KPX three four -6 KPX three one -75 KPX three seven -28 KPX two four 0 KPX two one -60 KPX two seven -16 KPX u quoteright -36 KPX v a -24 KPX v aacute -24 KPX v acircumflex -24 KPX v adieresis -24 KPX v ae -24 KPX v agrave -24 KPX v aring -24 KPX v atilde -24 KPX v c -37 KPX v colon -20 KPX v comma -69 KPX v e -36 KPX v eacute -36 KPX v ecircumflex -36 KPX v egrave -36 KPX v g -41 KPX v hyphen -28 KPX v l -31 KPX v o -38 KPX v oacute -38 KPX v odieresis -38 KPX v ograve -38 KPX v oslash -38 KPX v period -76 KPX v s -21 KPX v semicolon -20 KPX w a -27 KPX w aacute -27 KPX w acircumflex -27 KPX w adieresis -27 KPX w ae -27 KPX w agrave -27 KPX w aring -27 KPX w atilde -27 KPX w c -33 KPX w colon -23 KPX w comma -64 KPX w e -31 KPX w eacute -31 KPX w ecircumflex -31 KPX w egrave -31 KPX w g -43 KPX w hyphen -24 KPX w l -33 KPX w o -35 KPX w oacute -35 KPX w odieresis -35 KPX w ograve -35 KPX w oslash -34 KPX w period -71 KPX w s -23 KPX w semicolon -23 KPX x a -11 KPX x c -34 KPX x e -32 KPX x eacute -32 KPX x o -45 KPX x q -26 KPX y a -32 KPX y aacute -32 KPX y acircumflex -32 KPX y adieresis -32 KPX y ae -31 KPX y agrave -32 KPX y aring -32 KPX y atilde -32 KPX y c -37 KPX y colon -23 KPX y comma -66 KPX y e -35 KPX y eacute -35 KPX y ecircumflex -35 KPX y egrave -35 KPX y g -48 KPX y hyphen -27 KPX y l -32 KPX y o -39 KPX y oacute -39 KPX y odieresis -39 KPX y ograve -39 KPX y oslash -38 KPX y period -73 KPX y s -26 KPX y semicolon -23 KPX zero four 12 KPX zero one -55 KPX zero seven -5 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n021003l.pfb0000644000077100007710000013171207260330352015411 0ustar fjffjf00000000000000m%!PS-AdobeFont-1.0: NimbusRomNo9L-Regu 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Roman No9 L Regular) readonly def /FamilyName (Nimbus Roman No9 L) readonly def /Weight (Regular) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /NimbusRomNo9L-Regu def /PaintType 0 def /WMode 0 def /FontBBox {-168 -281 1000 924} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020931 def currentdict end currentfile eexec 5 `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>mܘ4<Л1"%}ƛg)n+f]riZO uDnH1I QD23naVhR=DRG1a]L$6콗T|DŶ'{9?; 44Y;UF78ʄ5tQqw,FΆEy|"ǎx7mp(poj1'cKKߑhgB5lŶݷ@]/'E;h2 )Lwbq UC*=Iam C 7 7 Aq^[iZUVv#@{@AARqS\M HSm-?_xn+*H0V׊.\ q8|թȧ!(ѝ:MJIpc&$a3'ZQ;Pw~5> <>3MRAȔd$J_GkDAbDm J|Jl8E0ڮ)ӗ8KZƍb4#szVQlaB*y%ЬaGke]uwQ߿;~tl3BR^ [x%( gWH|ia&0i+bqx;~E^LLb?l7@REz  DNH=͹,i1Zo2^meߜ٣.=:;϶]FЊ`gVa;=^v 9H6 S@$>d CRV3ɛuy}T~$ #% a}9Nx|C{ePN(/F !]&$ bq+Y^n1#% N |,(X9 |lg] RѨǸ)&tQ%Z~ꪃiU Ss0~3)VxA7͜iD 4!YO^%4߬}KU@3GLut3k̜vPzq}_|pRXIt{?@(WO:İ1GC UmhmQ<[H0 )EsMrpgςG+5XBkK^ٝ䄭HD W}!kf>Ax檔;{s.'ǏW׺-`Yq)2B-s{evwS՞k?Bꬴoov8j 77&sK[M2{qO3ߥ>V OGr;]8Q ɴ &;i>2TCنT պؙL65)쥝W92ب7H'kՇ/xE$^&4U)PamxEpc9ݻEɜe6l(:klL\+j(}+*lD2~{;AiKp ch-gpq}eR8`I՚#,;L=ȝxSV?io퉽P| }>BBĭ˰0jK,`xgYt̠3(`Mo,+ؒn)^B 8\DS{"ՉvX>8V,+Sz[V=6SR4j7š?1@ʕ?Mo#6×rNgScć{f! '͙}t?:VߩvhlUd?亞5O>=7tMxT uJZ0 g"vIB峋ਲ਼䤠ʼzmk:Ks;Mh`t!n>6&6V@=v8e,&,pk兖tɷ &F__ 1Vkh*R)zsKɍjM<>Mry! _ks}R ]ܧ"&6c_HgGiQes$NA`ꚦ6Z+z.ԁt}rwv9$l(<(k;JH*Xpntfpb, !;{m(يgi/[?D$稝- :z^CjP/)2rۏ=81!H+w'JQ,AtZ<ܸ ][˅q7A0空B^m0 d.WOi1%sAC!w۔&?ȱ[tA6˭#untYkt'ptg.p 8gzܬB!i .{ ɸ$zz>= bnna}gV~qX*RǍr >6%k}̠.$53.S@d|3F%)$&W)%t򼔖5ZҭK 2 CB ${~rkvc&zP:s:z+!#fdxҵOU>$Im?U{{'s%|۹ሎǡ,0DHFF2zֈ+r9Pu &Hk(_}6 $5˕lGIә@W9Im<+e?Fj:HGdjB{Ưa7x#vH$re|Pncpe u|Cl3­} 6wpEU^B~ߦ& $╗I,!i0*J UH.P^ #=t0RE6BXWXlPLfoQʺotu:j1ԤTJ=c7YJϜY =AG÷\d xc.)cx֟SG{z>ы/F'œ'>GD#"rש1#j"¨/U' 9\B]Z>Y>zC:S;Pث`t:0굺×Xzm.cJ4vgQa9*-~$8K+du#//DYWb$D,htEnT}ݵ~qꛖ1"9(pk-ո,n6KvrS]^tԈa N?V~Ct)tA wW|gKENdK\[yzJ,n =NĞn i9铀nMHI9y9~.4'/˝{8/J_+ {Iy9EDp9cFhi IkC?FD䳝%'tcda;I;t_3kKVaVkO &Q,vW$dР3eHf"_^h=|)6)2;.$Hkwat bZ0_ƚ˝/Z:*qKO1rU֓TMD*NVh! +_+?фȮCr#c3URuէ7ւ/R O(a5~=%aZj*('AznL).ϗcm n6ZW0qp,͊|g 䟮EQn5=C2!謤op +L}ˍr-9P) \acK?|ߟ1ʀN0zu'i?  $Ǖk|:TKA;J-ڀ6ZthCr7gyF]MK7"6up̷M: 2) X;`4Y a&g^.8?b\W/!2Wj&o9MFhٰefT8p =+iwN}ɶ"JٜkR kY__Dž֣ -arhX7! L4юe㣿77u|-E!j5bT\r^<8ϲ ;ıi#=Q!Kӱ/tJs<嚘NȘk RRRD}RYXqӁXrɖ&*+W;2Mk"AOa1ҥ @Pf )@PXV3w?P:eg e_rEQtr>g!-\*ݵx/EJԳf+SH4Ps,6MR,|8Y~x݇I2ܿr<):\1z<м.Z 'mR󘃮&a)c)lx_gB _$ʤҾј)%OuZCi c3c@ٳ!ۚTW<CtϷqKF~a J'sKZ.F߇HE`Zc,}-ⓏP}$ %wBwbH,t;$&bJ092w7A[k^7kDG7uyG֫Ѡ1<;5o+Yw.(-& 9Z#+դ8<S=דGw@G&b-tBIʴ#Ro )TAQ"YU*1)B-HL oȖj)^inlŸݭTAZȳjPudQzwsV ,ZKz6CK$-e7e1DMtF4w:"@ϦCK$/&]mJ?Cr.}LM*7Tį+὜`\v|7Ӥ^6OycLu"GNt_pB`,+OW)SJaJnyt߯OE,1)ϭ7 7 sAd9x,13RTQ ޥnPIcctuY?ErױT҅=.UtT}W8pD:24:w\Dh"N5'dŔ~?hXFwZ#9h{RJ9h)[\~s*-/S䡈Tɫ*J$'j,+i*xuYLqLGԢ!u񠣏4_~n} :,̢d?}n7'G b٢c,wǒXG3H D=! {|U+\D-BGQQ[gPL]ƏM!Cj@$Cv }rw7[S0x*c^LFo+wH r`]Ʈ:ױzUM"6fAmc/mgx\2S]ƌ'T%9JF'C x_G!kDVP!WxiLL}/_yBebq@7/0L_Ź!_%%#(o=Oz <̭rtpDYX)ϬPS,$l"6av$#xMysLŋY`M<i;_?keaY/E ֑9᭠7u.ZRz\X@ HP!4V&Euo.,gu7܆Co$Nc֦(ƒ>-m^&,PLN[AHFޓ3v#G/7ܚ9H@`8Xq~'G6b`EwS_gR+|;<Y,H$$P P6ۇpM/tow]X}܌ zf+r+7HʱǐM',Wl~%N툅Res-=PI1r?=Hc)0*_V)X9-!YkՖC*1~6D'HFw3tNQbϲ|۲C \bl-;a~ aΟ{dr;<8 Qo#©˩t=~CZS|6uaY+t%]oebDKN $T專Cߗ5wrmL*dks ; ([`-f??Xq1ȹxL+;:?×"tT ^ h*~=SVaߚz]k=(8y[N PM-/Yd슲R)X.|jkL)Wϔ;o' cMilth.AbwdN(8$B4ưVP|=C zjP MP<2:/X{MLWeĭË+xLq+7@*hw ̀[%BNzwCio5 b"ZS+<@u+Y_T:È!QF΃.2ͷÓm0~!' 2Z[b\lNl~*q_8a\Y{&hmVY"#8s{UV a#jd;`ϴxۡ$JT8EH"O4li-ђ.H4HyH; O8f[3LCهNF0Z_N![67EV5yD&6:cjُF*x&/J >ca=r%޿ )t Sϔp|7rD hpq;9q؊^+Όv:'e^iw3,ik0%7o.1ZW x@<`ݶ#`L\w8Q4߹y%zNM'L(`cd; gآ Z]FM%]ڝ8i=FG1&8pY?D-3^waB2,4;VjkSO\ڟvL]B#/!4Z3/L_"nRDewhΆ؎w#T5!,g=W 0t@h){<"KCa~ *8qkFY捣a#n˻m[~a)gӼ%!YU.[dũm3ͼi7I>UZ#ˣ: P5QТqE'UUKL/XxjӚzG|ߜ-RzB[v~bvu|K1*j]*n+U׳%H6v{_CĤb,B{d9("- o{.Mc8Ka{HYw2I%,Mտk=eܶN}x>{^笭nB,FU!q%(i{AHL6" nD&pd tYVNb6+ivIÆRi؊4 eNL]Tv޹c=3iuz~ @찕Y!癫u'1Q C|ai X=œ9W5_PPU@U jGܔކҒ! $ۍ$eK b&2&8җ{s!?GZ_DTH -˞P0逜CL\9̪ヒq.FĭgE1MqA\p1vιM N#e4Z?[62n< /Tc EҾz7I*ːsvIqJ~@g0\ D;氓Ռmp[t]jЫo}Qaͤv b.^āT[ލ;Qu L6 o;0Π{bX+*!IHY=9vij}ڄgR1]:4/kbŐQKq:Y.qH;>e8[.p>w# 47o5u1 atWcﵓޭJ{ AJ-=C#x@L^OG VT׼b$A1̔hN)\[ 닾9mOLU "折@ !(Iaf5|J翻4OqآS-*^tW6\K2!#cF'w8P3Ӈ$ێ2@v ,7+?% 9#hwbk:P5mx3]kJ(v@ ">/*/aR86sjRSnHޞU. iŊ6Qaª럠v#~ sLRXr|n!DA]`$\#fI_W]@M/ ϥD( w(R2l@ Η8Jj2*S!Eť̗F JgXVV̟fWZ]?R2u'evkQ 57d o CDDFEnE[, @P:Os+ nn̮wMKQ_uFHqM j~@k>C9% $]Bϛ[ղ29jEl LHOsCr X,&̙0I>fm䄄ګ6aq!Q#h +t]Gl+LCDF?n}7<8j iNO+toxݓMl\9아pc+Qш\ixj.|O-wkk]ǽ{!dZ ӳc}c. +@k%3=0b?Ƥ֭ u[9YW=:#9;p 6ZY']ϛªp[u +0Hi<ѮTθ-: MB\H3!>$[8ۚK2ޅzeBCN t T.N4S8=nza_KK"BU~YԐ}c1f谨9 *?n<}Vp+uc/W%s%߇0&'$m鞚Qu2/la,b{^+F(A,)h<Ϙ4l@}@ݖz m ~ߦC4#{0L+As,bjJnYMUYM5Oo@ݝ<'s$~ EgΜڢ F[O0kf5^aSI0𧮃|H#$cSyc "٫θ+';{h @肬_g$G75&; YQA[9ALQ#Kwm8`ܜ'6 [cMŅgسbON|F|j _40jقaR<;3d6_-~'o!FB; ;;iѤՅ2V0l4m $݇'3'2LޗaM+5WTyE[uyz޷eq ָ⎋&M;d_W-zkAu!'3g fJnb~ӭz{oIOjiUv MWބ2<+|nAbOk}$f8JLg庥i&-U7Y=X&shozX'2( '/璄Z~\!ׅVN۾csj|8 5"(#٩ j QB9]4O Xj6놈NC 9]x_B7)VWq3m\=?y(kzx4YGO2k29MX^N?? ) @^n)aq(3L1ሹxAJʆZJ~C&"\r"sG )IVkZ-*UHѷ{N垃yA3TߵQO3З GlC-.$rs"3>ɏ)g6ӄUAB)z?7ScGҍws ӱF!@nt[+JP\' 8/od;bG]GL 5%z!Lj@& +?gcaf n|lL* ^#({DMx';z[7ں:^Wc&gU|X4\^~qݶV#yKÏ3J|4]Igdg\!"/ۢgR!so!YGAis_8T޺U"70m@*}x\W$ 0 !+P%9Iyd+CcLBk-j^ w{$T D}M=U7X Ÿ#@UO˽N.8ǡםT}vt0.#ѮMԕIO ύt'iok%hI.3aS@WX|ƺ; Ի@ FVebAGP_3jKhCӊW%L2q!0SY(K_U/Kks`6 tשY6{CbFo2FtXN} OłБt 1I,Ǣ|bKP]gӪ^qš𭶌|i0i Kt,Vhy%+ϫe'Wc1[Ag0,֙a %H%674bхM/Y( )(p@ˑ~VnAr}4."Ttf"Ѹ̱.+@[lm)""mX/jvLϩiV\PS9b}D_[ÃMiŷ OWɮ#E޼}3Tj*>|Bt5׼ȫ=(zw(ED]j8q*[>qFӹmg,yV8uSUf)0Bԟ\*rbJ+g[.$Ɩ z3F[g4/S[Z}vi5|˳ۍו])d:wʲ(W@kE57[{|78m89֋; W3}Ejad@RfR<Þi(7A#po Tp°΍d3ulYǐo='E6eM%uz'_E;iT-KE0_gfB Ls㣚I/?J&:zW!zZm~ -*~آ\b{g_>x'fjUIF`!JČX m}qk <Ȓ*V぀ME'%YUTGq=ШeKw¦[ut\F`QIS\^L%!Dt3OsgO56>*K3$mcr9FQKu*(ᛖܙa*֚jF@3sf Ds8dqwf5Az6.*H``^9Χ؃!-jc(R | ˙qǹ3QVvHH~c[@#"\{_Qm~l~6k+yFP! +CeD/0Zr4 TmN4=djN1ĎR>\j(QiT{3-t*d UHCf˝dC4w L\n֠ *^6YAX~S0¾5VҗO N5'%[V*oO~="Fkʚ5y*!! m*Z(=`سaM@I̹vGJ0X#xb؆PӋ.77o>@`ЕrXibA5_,RPy}v K4^Qu QTlke0uХa,a^)Jo=뽋*/H~z rJw>RQ<ܕ{XPۑEq^ҫhc+RO=uƭW&KN BD )iMZӌ #E8]cWꥀd#gk'Hvst_LY#3 g067 $іev:(Gu99*)0êub]Y"MU{܈v2?v! ,~PlQ98:2);fg}_s&fnQpbCQl3/i 3CDa;=Xk"πyui#RjDhUoX~JsSX<6R ˜0.(n1p`O[TN4M/\]I*87z&3] 0`x\U`/ij0H Tw>ayME_,Bn] Y0 h+_pA=0MS5~WNɤdϴBqZ,eW8 Dl?s5ǹQ䷾_jN G̉GAK(p3 eT/0W>a=]ϏH;yu ρ搂q /5l9: YC_Q3"*= a>;NFzZ-1daPc~JD_e XԵ75:oZwzyd2+H.6P oL["'_Yig1g{~x[Xń;IX7O.:~*vP]M yj> ӑp~S)"( K8J6>e{Ml Z"l ]ná 2oV(Զk4rS=3Ԑ2WB\zn[Upi .^Bq6=I¨[i1O‘)I;5:]fY'{(RMfn>KpP=TZj L/5s?$"BO>k؃hp\a7H3EʆRWW%%ߊʦɌm#oۍ*7jPMcbɤ%ێȔ@d!sxo9j[ !+1 `` J0|Z~=5.%gig*gz3_W)8Ɨbf3 '[tZn='4Gs6C\b@ߚ?%]'n^Gx9dsT6}ORLv3}ۚ'tml nBl룔*$"y'MVq>M| w0cuX%9ph8j,R9ĆtO+x+QnIC͟J *ILQ6M-n[7[~ Ū64сC9r` 'ϸG1 _\\O?a>hwϝ#D^b=nk엍%|jSd<ߐx$5 n_{qt(jY/> NGJ6v0G 3X#d^K8dXY8ȸ$Iv΁@bb1&D6D]Y1o!ue)4 [_%RcIN % ']8KhEGJ_uڅo:߈,ÃYc0|q&p2vBe_Fԕ*O֊ /9f4=dXtUlcG[Fv]c85M-ģy`Uj HQZB9Wy2-g%SS~C߄WrYge/@EWۉP܃` K HAN@BߵT:N*@Ѵ 4h(NsQاvMD6%¹8:~"Gcffoo#|;u@b*"8W ג ‹ [BxtcSY۾s^;[seo+U5цW5p#ߟ[~4P-)=˸30StxSmB. u4I.9E ia3c¨{X/@Ո5mG }bpodnezmG^Mfz$iQ#HmV]8@Mfj .ըl0QNyVh2+8?.hG[ClGzÞ9IdR8c=T 9[xer̖t9x܃‚*p, |7XڊCxm}3|e!NA_g?C[]n=`4rzQIT#zX6LcF`qya4$^ͷjK(A܍{>R{iW-*|UMcʀIO `U8|SMXn~ɦWj,2e<vj ޯuqe Uo`)'7|Li *>1H}T&m)(a\p<=8ҠoLvJ1Y2o?45 VLn az/%xItU%`_;@6 l&ۺް@O4ޘ8נb QBLг,Ibjo}zz|=vj#@rq!_o+q4D?b/RQz">? oBDsT/&B^^'n`H?b.߾Nر{zk2P& ȫt f]zii}StaIɆVHJR-fՅ15^j &.ʔa&OQZD6<7ܘ?36P o~㛑\:+\wMJ+j:@bk%BSu]ɜ8 II9;nkW"mL L\=>{2(HjYyVBVఈ{u"/Yn|\]_j%&aolܘQH64Ӳ_F_.8l((Im22cFV0z~ݳUn?\1FJj~XF:d 7$VL\M~#0d>)r6IAKk}8湊Z,ھp^Q_H| &DyQY>JMr7>>W$D9Nٮ6V=]I$$$B}Ĥ1ܾ(E|$^:z ϖu}[׈zhk'Fx>ùdhŨʃl{&c[mW5&0WU;`{? V(#W+1`W7d4^϶:[eQBq;GFR5?Ӓ85Dȧ;C" R0x"0u)i+ix\`fvDN]EWс2[$ 48(3QOmn_Lhmd Kb^9hK([t*W$37}p˱A$7>,"WnX3^XGòMIϊISNș9R&02ݢ*(ϒwT́xԩo03Ht;P)$*tz>x 4~O[AEDz0SIz3㪅U͛\\Ԣ7[`0:(JC7v`a +ΐ*4W~ucV&;8HHJjGT*ipBWldlrEʃMO;}[A] *c`a~m?@.iY~WP07mF6V2" yd1NT7s3ssvzJ15;L52Tz!oi CzOSZgJ\GtuCĊ;${,?cAh]-r8|ae:̒j˷xvAxvx,RQH>;sK¹KQ7Y^jNQIT1& BbQ[߳`cm+W+V~$oe…lB$S_ulqɵw_~!8 "@,5I~VSvrB_xAA@B+&۫nc↠ScYU$GEy7@ ݐөA(5bJO zYh6(L VäEn~plM9OKo^{x(0=>5Sd7wR j Da1Kи^YeηOG#݈B3SH'ҭ3Rq~&tG$4nHFm`b03S 2Z%X/0"jzdɿ0~rX}=\nf@ǖ<05Ugaf|( PjF,-P[7b=݅\jEmoH)'0N:-22PصWYg_G;υ L74MQ:[c w 9A X6JdB ~1~'0KM%pN?iIER0#&-(v` $) m=wKg>ŖlSZ; 'bձ =!ɓY/((Kؑkk_l { (^3:!7swa>oK-j@\AٽkEy3SkGLI(6Msi-h9@e΂i{+{fu&Ti{ФTN{7t⋫Y],ftJ[m vx\_6fƎX5з^-=JS J~fʶʒ"81/t:/J_$?;"9<12 h+h*) ;"\$%߁BvY-~uG[mwʜgu3gu@v{4;0.E-V#dpyگ>f-[+he[<+ r~ϝ_ȇ _SՈK9,WT}<)zRIk*8h$ (H EƗwwrV)GrK$lba()ܫujW%Wy?k#V8n%5Y ,0dCt. )ǯm[;/Wb[M{-w%g(sBK N#SET^2DE0 % 5mH5|5lWq,[ YU7R0M"=/+cYMފm-ߐMj[˖cxѐ=\P uiʁ4-z(i$Hș02M X.[†WgzA؋˫ qf^r+vDE6osKZCpnuTFM☤L5%.NoO\m'l9DU}g@gtyjl Zhp=+cX o3浉 uɃ<%gAfA"#oK;2`ezX_˛&tw8#gf<,*[{vfX\ۢԦ~lHGER -Y'ݰ'xL6*- 40Q+~J^8'wռBwOʎ_KGR_S7nmJpI@qz9_@)2ϋ N#15l ¢VpV]_ ;瘞S,( uPvfR|8z[PiDD>5PUɣ/OϺW#:wuQLFlJ>9ǣБM;\urO,]{1-o=p1uŋJsFTdz^pF bv.Tpe9 3fnrl9n-WJo^Iczc JP3ׂ5p !dszlMXˢe8Z5%cRr$`hsЮH hFGڝ| ,OF6N+#V=VCEF@OƏf3)Uj p@nVINF2Mp !Y6ɇ |}6SF61'dU}KV15-6d4n F;ZJ!yƜEÿc~$|ׂKfv7J̝"M+'xz4QLa%X3an?C1g1؍?s /:)wMK` q #۟Z9t]hkȋv8/ASb5%@8,'EX8%=p0/O$-(\mM_"} SObYr@:f Pէv^dt@еJ%hXxCU@H6(4tެJ:5HT _\1d[:r:w+ҍ{u"Ko!Çt}h,Κ`V'c2R0R2"Нn0@x$hh"o䭗qhxQŢ=A#'+iSVX[+hn"/rÇ.Ta{Ri1LT{ %;Jqi<" o\KuAd24mVd+d8#CЉ\FaWAe!/ [ź`QUɷlo\aF|)Φ^J 9%jYp7XZd)i;pZF{ަ !ak= J`֢ "m.'Ŧ2&P.rۈY@^wdUE'EԋMyl+ri `K D(y@O?EXc͸w[Lo,޼NYT}O&sTر9n#uJyEXxTNt!~A2{[[x,|&^ݍVZdnw8S ,h:ag``cvRtj =h["H`|&,) fPKZ{(w()FFIubPE JC,Oo4#'菼&To>`Ppy LB{'bcR e< PJI d`|K})7"9ޤ%ksw#jl0}-'fPí֤nFufm0JJR_ ${!)bc*l]z"h :nL"qS,P$yqsrڎ>kY봜MW,oCe!zLҿ }bcy m",n5C6w#>a[Pfv["9z@[PGB8\թ9t>u_zş2>kM,![o@]PQ.ϰ8"84 p ]gib("[jmcRЍSmvθ}idsK²"1^}zc,[o17,R/e, $aDє./!bPgS hKco-u4tKkXvriCqKmLJf(mb~2l/(R$w& {.MM͐U Wa6t7;F KM@bs6˵"PZ B_L%vQS޿]qFu&hڈ!4H%#Bs֩jwP J!0`Z'#6sH@sn i7 M9ǰBk9a&vA,9d,sO*XjZX 0[;۸4m6D\giݦu /E%|0n~:~e2(>ʃtlѵ[눜;0 )JR" uƩTb\ऱn(I}$ XO&:~HM?':ӧՁ| 5I 5Y-AK;/="t.sY*BǎezvZヸ\!*e 4e uLiUǒ8iΛhȢd8ޯE¢|sL-9NkIᕚVeG XaC9=q2ޒpSo Dh:K.O9J5]vK5,&/ e$PŻJI֒ˠKhaN{L>2[mDvYss}+ogQA!:LCw , *L5p,4}.wPc*sbztI/)aAotX,U~еJ?VѾfw'C`" Hk,e5ӕO0xia)R"EW\?~.!pOsJ`oC̶rkNiI eJ1;<072j a6a7\&J7iPG*~p: Iv*Ft'[.4f1(Z{ {@;QUQZ-&NK3|w򳝀h%D=Ռz"7j~ ^ϥJr]z!i^ׇd1Qr*A2"t"2; Z[Kd0}m_[ (/r|r%߸; 4$H5ب v{78Kjm{5f*xhFzPQ8hD1%@Ö5T8;)GbAr\ D5/3ykquuVMtK:&_}QVaBSdS9*~78Uؚנ ԢK"[S8 GD˪hCA]waN(L@ kdp Ž ywwT v.1ڢ-2u\(%MЅlBn@69*q@t\X a%62WQ|fJҳ@9G%fK1~bK5|KLu@R\ǶLT$c@oٶ. <\G ZtR_mE=`lo=Vm+oɗ'TIC ڵsOE̥RBSJv ڜFm5xmcu )Qp!m ^W,g $.%e;*N {N!b 8ڴ|NmȚ > )JUNsI왌# ۦ*Gj#7GuqC` Te(s0SliT]./L͔ &'%aI#mCC. 8Ôf\4'4dy?)Jt-$)h)ѿRT[ TAo^?!!^枻x:;K39^G'kw#@LDMԤb^ zTJƷ1#kR1Ho规sv}#e%]10%SQ׳MwB+LL E (Ή5w@oj1l6R4У`DPԒ& pxho3 'B9=0(L@*hW1r\kM%&oBʟ Y -Pt< V"m2󕙶iyo ),'D.KO*9]/*:";LU|ntG4:p}_tEEZ3 .!?KurY*v0RsTJ^3f uig8EF× zr]pilHýNЗ<-ul4K(akIyر(_oy]рVFo 4of>e>KsIsH: aGQy3Hp5XlE C\N|Gpώ熈N0h\TublG,L2]u+m~ u$w 1F&VfW~ ǭ'>|'d+IȺ:ރ\w_o8_2N.u> :yF_/l){;v7a\uto`OTJg&3)]`v}\GN|毎\0lj^ 4^_ 8s%6'Vљ͜~2Ylqr0^"`"N(Qmsդ֒KUAlq>:y,0d=%8쒭q̙Ʋz= %L>=.}fM`ҟ.Nxn ֶE˶ls8xb5m+xm<,.!W^Ukي䌘MLGL|}&Szk7Qݏ':PeandsǭH]U'?ҧFO'<@ȠQ[F:눱f/mApr9'NFRMhZ*^qU3_feM:Ƅ{Fw^ Fś[ISCQKr\]~9wl%LG 2QwBw^8T8LU9pNė ̩*);w씄v2:JwXC#%0 0w/Z1(Rw }JMkvSzjh&μç#/(c\NL5 +ᕑ2i͠;s!ΙZ|oݘ%ߜ<<-y4PjOU7d^OSpR rAamGr#{_[pn'1Ws#Ժ9aG!'ҫ r즚=?~j$MTHTՕB]EҖRt?sfOaB~“L_oͦ}'?؎I!o=-1.`E63?~0mݶ0mz+n Òؼ1\6ޣ7V ?՘'$Kڛ4 M0 VG6%w64:Z^Sq5#K_uݥczb{x#лo_@@gkj{\f8!m0Locs<`F^<܆?a{D_L0&|7'&vR)4 q@ lvT"5@5BCB40%Px4)xji(,yql tijxVo| gX٥O17uL_"n\=61=F>b,'m/Gᩀg:+(uU+>qvO!ق>zlsoN Б&Wm%)t5ptw-Hz\Z*Ʌ5th37!; $1^Ћŋ|c?@ 3!֭w=c{'P]KuA ^E4\.m33z7mq"2-Gake&^=4$9,kq$π"H LY,̲+RZ~2N^Mbwǂ@֣ -y -U_5d]jNŋBS{l=-[PYu1hvaL ) 1tr1Ĩӹ E=&P4nQ~hpntxw#[QmzCijw鋾7\hk&*/AKi iSZ~ ȧ@,rs+jYs];n' kFrvw(N9;vI`mln}aVYJMD)_G !c-p1X3ZPi>4K] 8Fb|8R-dS?΃_&0CFkCRDVIǀyl&ᶥ0B{N3 aq ;37533,W]T9,o!EM/}8HZKsq?L1k"9) z4K(_%Vį?$$bB`wyEA0&G_ĩJl HF3ݘˠ(ljVxs.+jF*/\dpMX{:֯k`ܖ'ѯ$mSqSnTs %K2u`, ]y]c dUp13q|ޒn4\<ŅS ッJ|{7Ak`E3=2p\5Luv|OR@z"=qUMG.ih\xu@TDJyNuSOUzw:WhΑ˸+Nvle+E|vMRaK@D >JjN槆z feSX6fTE5`nUJ:W uDụC2w@=S2ǗǨUnmFˁ NZ/nJ9< W&aPVtN^ºgl}flɁ1IÅL@2L\CFML;-vELAHMPK1u.L/xIπO.ϒMa D8z$(w25y  %#g&EY`q/jMw$=k˔#jB`wYl(VUxkpZ/5V1g`(WZ94{PϖZ!FZhsiYب <xYaBnAVn[ 80[D{_l u&ݏש*oEg_ lQwϟep4kd$b5DNQbғ}~^!$;Zm~T#\$6VbD|&m { ROE#QʧJ╍䗨?^D+o?ǡꛤAl ;=0_ ܊i[kymˀW7;M2 )4?A$ Rrd=ֶ{FsO[*!@nņN*eU/B"3bq+?`t 5Yh,tjz֖A*Zo&;Hz Sua-_OfU'#J)/%Bx)-H+F3(nrNԓv;74*`]=a7+֩en"3ڦ_ pkFpngC(\giوEW4g_~kCqw4V3OW1I"ˑvXCU`(z_f!A s4  K„7s˵,tw<4J۲o {0*ڲ#V/(ঞ=( `s[z  lfg޳q}̻:NIo9rxfwO<ϻ t4yڑI>¼iC >ͩ %L^kJ AH!Xc"f7r[+ӴBVz:GDk߉&{|v]0] ehEGPekP,W1~ pi6[cwTR,~X?xLf`]ӓLi];Jao޷{cbkGnSZW3aqė?dTYy^EUL,^F3'U7>W9-*MfQy6lUT(m\,--؎2EL}5Y8O)["tE7#}+%/Zz.?yBm$Jin`hf$:Y< kx\M y~r0gZb %f%;kցƹ GTN}fRz낇O lӼ2_񑆺͟Q)@dSX%Pd@eYہ~9+2ցwA-"͡nLZ Œh큡AIfW#^g0w4=l]I"m^8&1y)"nsmu4/2a %rOlܱG@ao <]0dQо(zOhY yx]?C~~N=9ď/wcg" IWgÒęAevsj18-셒kvpUXgt˗dW;3%_QqC6CW11 4/hVv;r ,IKSg K!ۢJV;q#رzlּ7ة'N5^΍ůc97SW.:daSs_)}`YY[쥅ί>jf7Ҏy08)!HT$ȐP}do4bO:)uB3.uvbf3$K5T/#щRnmbwƒ7V?--4ODN^et0.׺tm݉OFDT)G;,G`j:z:eȝ`͵a+1S:HˎlINaL0TV*̡Cmށ-LOVIGLw?qv'g;kSg $iy·: )HիVJH 3$)f(BWH0b,ҬW.*:QAG璻  a= @V8`}tjV>%s׽Z:AܝoEz75Z!WAZ˸f*M!g"rjGX5K m^" ~Yauʔ[Yl@5Pjث<&/+$òm %~KU C>w(GǹlZ`xBdn&fٺ-2qgVxc?Xi1mG'k^wehUÊҖ'sT'vZ=. Po:fmkQʫJx,lKl?{jm3 7 y<7&fBz}8mDkX_2.7ŲSY[(IBjL$Y~J*B٘ 2?_fC0_ܤ!Ic=Ǜp CmN@aOkE:I`c]|D7fb@ $M=kcY듒@xĵ;QqaP~ewj/W~lBjZН8JgzC(C*^{8oڛOjYt&7/"/s7qu4 (7R[9|Q !WYz(:Mhb"Ѽ v(ڕ<jzb[̼Y&uF;=yηb@P%Io|n_.OyR!ңw*ݭʨIasԃSUXxW(^f+S[WxzlhUrt\0πsݚ@0b߫ǩm8s٦,YS9O?XK9lbd[S?XmE{V7syW1\fQPFge%U@z[OSAIzkDi}Ev{4RvynJmU?/-Rmr;'+k.hHNگ e`Ek*0m}Վ*|O]yZ%F-!N 죥$D{I`w ͛l+Ho;J!U}A0BPpȉTuTT[0fT؛_A⹨[/f&'[ rxD[=dc"b~}X =v*.Cv/^|EZ d=ZY쒫gآ[KN:W ߳8Wy8D`4;4(g;mo*ȶy({Pl͟ /196/6hh\Z)<'u6"AQ@b&9͟Sެ,d:ѨkΒ<P Z=mzhn$)0X]Ljqa6$X'[9xxʰߟDZ|Y[4}Ct10LNgl/^r\c֗?7 AjnE~-Zu5BD Y9 28{&x1AoƝu2b3v?q ~6ϤNj0&O/qZ fH ]56BlPidD*{TI3"czej6fJ=C) h,|5*HL|V?DY#eQ0\B'^WI疓s5SJr#e=8 on:kp>*l .C:9"KwEԈW}Wq#4 Cv(7p]h| 4Bمg EQr.lu*1ozD?r۳(wqP z x!3Crct[-k"(ei$T} GZ‡PK ,& Si_i8˺S/<lܣ.E.,LF74$<`IA;0iڏ bB@[pj@2>K[p ̴LEK="𸉄0V5Yd[ǭ]nWB^hiΘDvz!B1gߚ߮y G:,XqG>+f}xA[2Q.;}oq2 SⳀmsQ¿w yՌ+&4LjI#wVT+2aK #]Đ'+C~cLyOe` |.)b+Tdt{͐ZQжTj&e< <$o4;笅^~+.q'#O,VZ?pUW ;5 }`7άM>dT n !1uˤ.{bBY-XfS9xQ_zk˥CFȄ1Cʵ: +bL%m90MBaIc|g}G:?י}`j. ٧fZ8/I R)̍dlv$c4Pc* PfQn[ =_'۔G@R.N"}r ܚwVl8h[ĐO&ڒJ@Z*A`]vGqߎ"o,`*G`L՜k}4xLPNB3i(r,z>v[7 q" ARI̊R-o.E;jwZ%P8Tju?;7L76E΅D  fr{2Sq؏Mj/oQ{ f](?YKiLDZL ^ؤG⨔r7iIgQ6ӭUlQie[a lvEΊcpӸ\A[F(7~ݭշ+%/ |mXƭDK+5*X ~!?GM:h 2 x^]*7zKʛTzxc[)Yml-"z7j\QbPE%mRtNdo7hys~9J44FCOѧψ.#?-֧t#&Twi#mь5#!عhL:R%,:::BkXᬝ O%_E ӥ!MdELD͗`6r[ͻ}D+p˒hC'!>a>r̥e.vZ/y eiJ]ntY>lx*}G!+yboN ?ŵ)Ϭ7Hʠ͖(:pK[T{htN꟠2 hL00: A7~q΄2P]ݓ[wb4cn`Ҁ]"w0dgzf[g=E/Mg#V?}di$CB^jrҟ_6;2nnԏ  v,M8co휰|/P¤܂:ʹ< ,m U4)0QhcuS]S|3UZpB T.r; s-a[\8Ar][ٰjo}!>`ǝ j#}-x`CSO^@nVy0\m#Ԭ$?lL-!4R˥:Ȳ]4,` >,Th>)JӤ%TN'R@7'UV闩E&  (۔ː Kz&IoheíJ|) zdRx*B@'_[@CJ[[R@8C]D%w,2{/d-يÇ`:ï>cqDXRk/T4YO phr!HDsgR&4N6!sl1+{ȮjQ]Ȼ9p'n4H#ݡ$Jo,@";|\5!\b'teh4 FJVc]/#BVAMC0#yYy;.`zKv/U .F۹qqx*n\&){DGMn?G7A^yw o,¢MW[B4< s'Ps&hHCuĪǓ)炇 y80/ [wL1pxӬqN#Vӏ ya@кPexDZkxFDr혼 R(̘ZqzR& e^@Y2$ڱ-ܢ=r h<¡CZGeX < dtiV<&gba`=D\ato\WW'fVeyX,17: %c(4`heOLEyɵ.k#{6=lX)]&ҡKr3BBӸFQ&Ԇ[* GqNryDyJ̯B8ж^tbt!@0³ٜca 6uǝzhy."Іpa0wCZ6-|t"4l^ R//=8Ť!\ WbNJ{sX|*тg~SGǚ2ة- /|eF3őT~`gji+Gcf]>i;dez=b-2KdS24j,9%7T;S[HP[Ë#*6 trZYC}$mNױ"3{O7NW;[s Y+2s5]l3wI.MCIsLR&IL/j861F7JCWo)]spȧ<= 4> ś O(ٺFA:6unFqH3:t=&۝JL]LGd|`uʲ#Hș4=a{6:0^_CaᲩR; sAz_b|PA T* p(G[o۹ 6ƽ?ϯ^VGA/" - [5iN|u>玠DGn~zE{G=fkuaGt/rnIZ+atsHsm?ߝz93km/98x 3LEDY/A6 h`ܓEN{ř,%(ŋ8N)o# /׊5:=*(@0w1Z#I)"ݥ{652eOTϠM?Nu\LlU/@yQHPmQxt&fS1K&?tO -@$l K 5ok҅sLjNlim,ކGCCDpʬ)1Y. W<̋txNArbGzm2'cA(}݁#-{9!zV= bj ;@+7 $>Fh1\>͵ԍy8bW_o\*ycrޭ|\$j#M liWcemtBIR+K-|Ti0`Ifo1z'<+}1!$!,%N&d6VM)z#*6`='zCeݕѧd+* n)7j[n_t0@f~K)f/ _E8$R=}~ruC=]$AR)j[Az'1lq\ûa \GM4H֡!H1DZ~4,dce=SGTU9WꞕE},¶gJd)_4#=Thp`\Lm׼OMh;<XCV)jF"R8e]/9:P<&],`[݊#N;!lJׅi$H +#d,a3a'WiuDM 5\'"l eCM>oxlb4ہzK6/UoIZDPh˃mXB6.ZjU({^Z5Cs]ooQ*lp]YQI׻I q9֧@;s<͘l0GUyK;eJrёell= Z ,?9ҒKJ;KIvZ9>QőM%>nb{}Q0QE&AM1\9yEc&,pdzHehl4Y1ʚ̙ofk8Р_t&Vւ.+rct5lwq<_OD푞U%~Lq^;I;uGD^PǍe4e5=QN2!NcAsٲ0ubgX?YNȕ|5au3̅so+)Qۅ򖋄\%|[f}Ӯl z>*Xr-H2:NӷxL{3t`8ɷ5/ 27q,WV7͢'kh:}Xq6{[82URSdJt0Uyh%cRV$ۇ>!ĿSnȋ[sSű㐘fIo2_}UNNE;D- ?J@vWAQ'x)E]y\޳1',xVC-^3o2pX1O' uSkW$&=6/cƣT4;컒N\rF4C\\I0aWp?&*ZD-ibJБ7X Ү1:daj]?N2n=z#l5X*}N&E= ㎷h?c&#W#95GF7?)xsleѱre];(@Gb&x>]ԥug*09j䥫! xVkX3b<֥//ݛyVD84q>%&S.,:TC;'2s)ҕ 뢬?ѓ@D[i' Ecbf%~Sv4>^}L`t?=ƈ'n (8jҪM@h/$j^LKGXexõ)Ifx"q[`˚j?eR#D4k֭v+Jz.͏\Y:hv.ԁEb6.S$&t(-f2R3 d7]dzؙe[Foԣ=qKOKcW#6/`F-:9C+c˚IŰ lǀd+`2{2ed1Elc)GN.e]MTʹnD,~-֗3!x,05f幺`?vZg N%MF~u8\zŒ9T``8i qDR٦cYSD"es0w YU}[h8T́$'f0e+lYK&O?nlE q-G2weBNDT4w&{kE$Xخ8#|'DfWxL/L~B!MBU\)T2C2c5I,q|j20bVlZ-IB>H$ H3W&TW W>:6!0ǟp@ & =a83RjHd{9xK5o  0L^*Y& "-`xr*,IDZ)wr!Bڎ$IC%%w\a!%Y"~)/R Q(UHÍ(N}m/5' \SFoK,739)63~ ZT)ȫ&[-cx>O6ʭmd$ IOE%IK@OƩ EPr^Uš_˱r[xeCQ m Z9+w**!^qʯZLƳ9YR/s5im _K~3=EeMTȣ|>皷|>:2L s8tJ {܈)2ŔVYI`'ڳU!NI.6]'Gl"<5rC>0<M8UqpBmޫ\n1R氻wzьɂ1h~ qSLbjlހmL|v9v&D$(/<]G7yp <#(sO",n#m'œ+zŇcxV}zK#%ގ(7Aڮt Xr1p'҆;dx^VN0[ 8Ujfwi>-IcEt'@<CMsqRe'0̖gY 6tHёѥu>ɆI)Y-Hu-(s<[*9GsbOR|~r;vSq7/ްz,stOnӮTzPNg5޸`bjцsi%)%wЇ},bgMMn}ON˳_@J9sQӅhpJמ:ePoMM21fiPņ_#ٓ~+Os1;oq8 xsܚWDk#:ܱ=;zAٿs0q=Hg XWMk2E*]z=]ďgr΃\HTBr9"㜡-z꡸O}: 3gԫ~JHC\8;܊WO~/rg.bKb)wM!'{D? Njd,C ypsvH-cAc& ^1[r}*8f|ge-6Tu1vJQRwlSY֖^cLqJHTW&zmHh! ̖}ZWt }/fcS1ny 7nSkH/ l8hZ'}_~ g _.GK<-'%HA )9eh`hı]e LTKjobAV3W1/a+ncm,A?Ef-}(YdIkfA '9_~[H 2ϔ|,g޿0aonL, 5n3;}UNђ3k=\1TtKncA&^_w1[vhdrN!Te簫y]P8;=c`Ţ?&N+}yyLO9up3w3"SY}"f5W'fȞ凌yZ(EiL8V'[} Qv+~KvRlMz3]o!L9BW8~\ 塪TDxt=dȽ|4HOi9"KB,?ꬼV$Kl%+9N͒27b媐\VP:=Z*eձR>CJg[= \U7[,7a:9,Vl/.ljolH08b/:*C@QF SO}F[8?.2k\L#Ѫ2y?4_ QJUNB0d{x۴Ԓ6TOBE4l#4Tv5~pQpuX()7K.dRp{@0ڕNIt + {`oÐ389EQX$U5N:8ొK]5Mќ;IUYjəȽ EA/9ag!séHh#,)9'n">\u06(ΟQO2{ax \e1`K!s ̩`):;vq ?ApURKs lF8,ik?42Ri9?*b !ft~7L1WsoWcI0??j[(aa:r:/ս-g5XTwU讒{-~Y' *aAk31`ѝo2a_*`#0ǞKMw uᠳsA}4_7; .,W\i" ]#q~^Eu_x@ͬ3 |-t iĬSxC}ѤmEbJŵq|(iEe"G c4`B{-I;ߩ+,,uJw|+ۮtS]I Bvǿˎ{#X/#Ԥ_TGJ߄W˥l1mqʳO:5t>&z׷U,49gARˢfJ;"id8nZʒe\ƧQX ]@&^." F,J.$!9H#7Ɔgݥu^n_&;@{{#^-v Pg9RiMkDRn$`dK<`О_w] r61c8Lln6ĨlX/bGb$Zofql":b(]?Q>WtwNT@MQDҼq` zz_銜?c /mt2OсoCV}ҒH% HMڰ*uv4;$-83o[_q]\|XFQRf-L*i/~}#ՊM\K^M'0[?x9nsȯ 4,Ai@R<2f/hN8Vb x az"OuCP^E X<PE˙ޛ4 d*bT2vYsX0(^hIavu]10_\ $3~[f*l'ËCTNtj S)l"o5Hc[$=K{ɾ.zc>HꦁxϠ:55 c}E!^^OQe!׼bҾJdqeF2Q#$x- l1StVr"h5[J<ئgzܣIali0V񛬤ciάNJwfNS*ݬHrVf-`)-\ 0>[{$D8:4 ~R!dL$ w,OrsOz92\C/ n:>y0/5WPb{:n-ۼ1zṪQ Vp ݞ6 ^6 ۔sp]!YDzw}\ ȏw},W=MLx ɑڧ+6h 49/QDIJr9굱Lj2Ff vNGA)x=nNØA&Ԃ4{9`܈jƩIf]&UpshUXwDwqˍrk2[r'=Od]\ie*`> "d¶hn-Z[F}KCs6LN,1JskgU[SxzK E~Xl-3$UwDQϛ_nSS=Pԃ{'K1}ƪđe\pl.[|@5pAmФ-| 6s4+h_} ]%f+'+޼2aM0կDl5"p;q/ur~[k$rֶ֣ZJX3*f5 Ӣ]؊Rgpj!pD&8~2&x߱l,8G$_މ tGk^WJ_ u,҉ko<|^=N_~6q;r>ū{9qYˆ뮼iPMPqv9NZTo}k5"sp{<;e.7k;C ~ъZ>H)a(i~S9ǁG+i#'|Bj[^M3*kհ" cm3P&Yƾi[>NҺ|sY@(\21tErY+M$ ˽oh”˭_,@8dLMKq\a]QsNK`f))EKS:E {id$AI2Mv 3YרZ=ǘ'k&.V?hV".L VAA&<7K$5 2% VBKˊpyPCXӴ( "8,Lem.0N?IP88ӹ1az֦H#KJma~wvP {ZZWx쬚SS,޳D6MawC) <&r}ATy\qe1k:(VsEjm}9PmɧÚeu"$r⋲()FvI`JN7߳Ym0X˜K̀K>f[ .,cpxO-3KeB<,Qze]}jGeSY)8S5QygN}~ 8XoY8WpϹ{NlU>Xrg X 8XZ>相0"o) ?s&ڐgN{ӝ&Q>ϓDHiQfd6>Ry/m`;yf!~ }`]i88ϒ?8Iᕞܧ L:5#ȔUǩOƪEpZ[XS{+QquV@&d]]dN[l cȃD/Ï3ڐӃV``֩e-\ i=s:i()+@kxx#N\l8cLM#sX 𬲟H$|T'WQn,6[7k /IVWw=Ht'&GaNJK⅂%&mrkeP,>'} 5.sda;>^d"OM4·%3nUޯ6uY7\T݈!'=Ið2&" ) 5838G3Y6$y^ëI lh nNo Sz?7C4V5HãySx<0}LgIxgk T*vN7 /˯jw?4$/!]:=y{L2}PMG/FLƷp 0W>C:LGuA<֌= w.К*O,Lt] h)u"3`MjY0H Ռ<6faOLM(([=gПP^- {>^7Wǚҥ+E\HؿXx)/RR 1;*!%)bnB7Q0)Ie&GI~ͺ>L= _8@oa ywzdbh.I_ߛ?}"83ƭ /ƳstBsBK}`}db®A;6ƅSe_9J=j%mދ >4| ',6A :av;!}2 aIg7WWO_|+Ι^\\_7E(2pn֍!{3r#d PNgA`xi $e߸S'pɻҽ:}<d:,ȳVgë֌9qT}kuk"RyOsZ^]U/*BoΟfI | @LrF[ίVݙ3QR8VUDrda?k^y$d0Ҳ@2kԠNę6™ŏ lN 8ׄgϗ&%͑SKFOؐ\,O#:.ʍg 8c>з!|5ēc؀x%43X\Z%ct% olW6H}t6';uSWŵ 7'rAֲ,d [ۙ7l^mBj_7as|De eS1.rؤ v5#q&Xh1's=ry7 Ǐ"vSY&{=QjEpcl'X]}њ(÷hNw ]m-f)n[Tk YSoVD'q]9NV{_Nش6h jzXWU ?|Ќ V"JluU\{`3;lR/ӊW ت^\í峡#CB ÕK𳷪eds1w.xa=]C2S# i0-LICʼtY+;2Y1^Wtō{ >{P KIwJӀ?p?]&8Z"0g6Gn*fbϓ--%>e]돻`r(p\Qk&6jdwDӎK dחSb7ӼZ ARd'1>bMODPѩ؆q@Rf6"k_*\b^)o 곓 |FF@\:1#.>RAJ \YkG.u^-R@*0 wތAdcVT%W5"eI)N7# 9;\~4z1.̬ y'ڢ &˱l>WuЄq%#"~-Q4*F:Me-fn<, un<޴!Q-ps$ 8ZA7bX;{@Sa)hFa^ ňxʳTtB.0<)0w H\gAq9!H)*T+Chi,e] XY"Rÿ  }Ar5vnBTQGLRfٳU&YMV$\~]Ј^4MXxV[\), ~ͣ:f?0;=-nFU;i!Ǟ|3!B[N G/Pt^FĖ 8/M+qq&8p{UoolkD&D-wH'z5cBHt&r5=&]o[RpZt6PO2qg+M.VHn-ؼr+B ;dtJ48tć f%ӆ,|qW&ux1^$%v!`6 Ӊ+QNKrv\zN'f(Oͧay58F d]qJ(U(ϊDH̘NJބ~ca(x)x8J4lt94g6v ?eloU5;JIR \l;%H~oղҋ)5%}!D#tD/%&':MJT|,~A,İ0L.`7Q͉)Y >CʗT?E b17Ȧ<wwZ<2aXC]1̇wt23&ٝ^ǐ) " t&k7ޢ<ԇ;1Ѷ@bqU*G@Ch,pZF3_O-M]esrV굛vEbU<%NNa+ )CHXK=Yε.&|><Z#axO3)ygG4p٧|/X¥%@]nv i]` Ә"g-L0.W6S۪„>9>%)F+"F}ʄ[Iu1wM_Ys z&T<&AXc+&Z 8yRQxA<b։r(uO_:bf)al̪QW?')^I ƥׯi `<{aͮ;Џ1otϹq l+{WyDHN>N4Rhqepm.V i=r!Re}lA>@🹹Tq*C wQPh\|̕c%ߌx1Cw`>kD{7nJYu9DU@RFx_)KYǏo#"%}*_}aSBM=(sRy)9;^ FQGMΝSjj yRd,wsKHJb}JEHG}=c {;9 Պ8y=ƅJP'y=&~v*Qn< `y%{Rp}LƄƜw+lQ#b0F&(?&=E LM Q~Xb u2p$s3* P Z ȿy *O6tmل(Y{Ӷ鷔Xj vv$)?36vDk: PsVHiԳC̱!DYg+kkCeu/ x*{PI^m*a$I3XS^p=ALl0Whd(q#%˓CrK "TRyNP8G.`E{BCp|'6gʘA}ΦCGLzϏbҙ;4J~抚ŵ r6l B5bCBo::`= _"}7UPCA;3V:5 oe" MȝLEr,9NW;,($)pxQ.ĺ4hM;03UVNά#uϨN[|.J#Խt^$mWj2&x@O7Tu%Ѻo["ہC?M(Od}B iꨝ>#(=H^B1g3^Jri].}iۍ#f5R[=:nN8n \S% Qa}q-<gBO4a2P=RXE8P{z+WS`CIZrS_>"6U`6٠ b)89۵* ގ(FB۝Q~EK|JRN[9(] )长:" ZahcX%l7Y. OsƊdQ>VI߀˵:α*!kԶh &T B/O)8H^;پn|ܯ#FIkoX;h!y$qN^'Xhnf`W!uiyZuC[Nz::9҇΂ÓQE= &'Y¤@'Zes0XmI|`Ub0 WM)TYS &qƯ#:]^ZZwk9*wqsΫ"bD'gZE.fzFbi_=;AEQ&oH 7V|J2~ЀM#$:ٝECj"th8wTA-r8.ʏ/ {0GqɊ;ĤO^]CXm,k&L+uƄܳg-5PV>i\lA?N&,U4w-v$3&hZ2-{Ll9k?w@+E!Mf. 1)2x.jyhgr Emchp~NTTЬ^%zH7x;f`CuClt'qg(/CPq= 4#1S1<`5Wna!(zIg]?lJB>J`1T6^o!{Nx;i׳G yuu'A$Zlsr@$ ^“7XD,n6ΤʹTwRCtvMm@Rsu8 <:٢, oVk{ƔU01U4ъ}&;>.i%mk eyjM goqpvҾMo$ =k<>p + 1%">JV.,R,WAR/^6q/@ aVަqqOs /z-s:z1>I,O:OW1g?xr HN(ОR++4]^mUj3JԂ +]M'XX+oRD6.@zuC>J3oԱάf;5Xʭ)~)ǩ&9uK DŽz km#/79!uAʢ9˛` uj#w.vƷL`|r *@ ڎ=y&V C]']?A|vW~F~# uyu2](q"]O. [φɻe9q~Z|i'vG3C;̠wR&TeZ<(l8!ˠLؠ~%} 2A$q QLh"50W.L*3Kʕ;6w>PV=㎵4ȚC gyg}Adhll7^O]`~|ǎ-}6ᵫdV5ZE%QYpGڃɀK1q˓gB=i7'dH=KY"Mjqhr̿3.I?gU8ު$\e3IbrHxH҄4T)JY'LS܍jSmvs~cmYwosm+ (7V?- SN[gC>S%9ɚcRP"?Bw51~'k sOD86%iC:3s$¾`@kܙ ?d3B [}JrSs Kc$~4jݝZr1@'nşu9[s*jic.ʢ'3s8zns?Iy 99;j~B0|N֛ 4bE26 lvV ADI.PȮm۠X! l4ͬO|}<Sw[rՖ4{,_$S~:6*Fߚioͣc& RK`zG.Y9̈ϔ:dbR/`וPvb! ]=Eq`o:} |QMד &&fBI$ TnHѱNyJC|%B57/ F3\S9x0\7I SK/F[=1%ZX?N{g<NuHzK ~OdY e<%Mۙ(׵% H@ CڷtN<-j@S?ɮ~-C~VKޞ}\t\@V8ʼnWE*խBh01&,5#L͹ Z'OQGj 2  B9X< SRU%BẄ́]'Z! p4+C,D&ǶxvWf?> "梹=Йz"!䂚d`Y6;ҙ7|6[Rsz3Ƅ3#T? L+w<ܱr(ͦurXz֗h"p9}sŐt9a_T!m_7J%aqbj9 gKt^2rJfyfa.:bU' 2lLm"SqEXr@胷Wo{P`=6;MӍ-y*T?Bg"hZO$dcޜK>mYU8[#c˙O}@1\*#2U(YvrUww9d&c1Gɂ0%$ KP($=.=KĖ\T>Ptp/yJy2Ѽ2@^' -Ugsl:<'O᧝L0rmJepuA͉øw/nP ~ob1T :9ֆ4W'3Y#.F?^w%WviRJ$m' xeD8N"U$OX`e HXaYL[ËBh8nqtE_/ Q$x_`H |IԵxFP'T|5$¸+ tyi ˙vC@ΕyRkm',㖛}5fx3!, u$\hr?EE"6蘄3>:|-~.=)d-kĤcNTs0u:vGh(֢*AS%d oll[f[5J'܎-[3quϛ&M؎a]roKn?p'dfT7fSSHX r \_GdoV 3O&ѥ2;"\瑛탮MzWl" Ylá%ڋ`J%)\!}/Tb-F> Z@8~eO/[QCmW,RS,$ZXʙ %@h:HAajQ5G^c,,~댈QR+;`5L")l6UͶ_C~"eHj>cޟͅ y .iseKWg#е׆՛0FI+]ۘ7(d<%Rv>-v._WI\nлI'@)ݤκ\\k0ֽMFW=}<:"^iæg7~} ǣuOőˀLNÓ,ܥy^OKkͳgP+)JۅZsvbā<_ZM>=̌ dz68<L2+o.mZ.CE>e e0Ca##oD oE()&]؝KEEk|Jy"Ì0d0b5@y/Ŏ+tG4K9`<4M՚5;`NzKjQ%r95c?^F[ww*URyz|ء9.c/^ bc&Mz|]| GHu1WX@]cHf9uf2œS{iQieTw-DV6Ua-5-(~p-]w JӼϾZPumݵ 0Uܵ]N &(l/⵾\67p 5 kJP-xC3G$-j:̞}Bp>evAaRASszgϒPI `` ?f/x2~{6!1odm4"bvBcQثäךD(#NdhIAf^|DN.,_G8kf5 j Ӑ㮟?V5%Oʔ`RA!(LXM3lX/[0pVu?=x m{d tEkAQ/@t&pC5"/ޏ7<;p.<3Os|'M2y<'i}'M\/aZS^ JJZIǕ g@dVx%j1˫3]-7Mq ?e-; ct B80T/ۇnz[f2Z)vI_#g/dQT\RޅBmoBթy\ל مy0Xc1YgE-`Urce5Tt^ !<$DՁJ^%Ng>#[ {& !,@[^oI K*-fè;UN<7J*V<ʒmxqI ףiE*BXL8´ hT=YhŦ, Ҋ8bTiՓpy#K NJkzag׆5޹K~dݑm=Ry)[$|؅4@fELƟB|*I_uEt7r%Htؒw@{-Y~XtQ$ݴ;8 `.<&be'#?~xC:s}e0(MHlI<6EoPߺ[5ƙQX \Q}޳+;я7 ~[$/PۤOEt/=42}h2?p2!3yV"m쨲? q.8$%>.-b7KҰEHh]foUX]>y*n A{8;KPA)ǩFACR*C~j`K}E\Rr)1kd7eyx&CUY\"abyM9# f  ->1Ij9minC6ĉ"AbQ3ssy(@MȣA2~vF/ AZKAA+j} n= @/8>"X9aO7w[N0i*Bĕ A \Ƹlf-i1go3<`&7ͭ J=(w~xf9C?I";|潓Ciǝ+$m~|긁F35qBd(hI6kv uV4nMzaCNs3QlF+ |ɜcž5ZQ:v,CWچKLA"5k` <%wYvFwv[q!">G?J`uct Mx Q.᭗V5AGz\抭%JO,xz%uv'&$ ġtc irD+OUF1ԾDZClf[9$ *n[~R#ΡEa2u Vf31b7?_7ojFeA6іUsmԯ()}/oG[4DTRmbrCRsYe.PoV LB_РA68Y|Dl /ި9n $q"hzc xDN?BX#>2{ @o4}U~vǷ'p9ZFLi@~(A(jkwsgSI#l[_u#<U> ?J=2bq^MlZ~~ -#ƷSal?*y*%ėƇ0eg҅w+p;Hv w2l,S`Zf*"嵋ABq1gF_\#O#y=*:{9b6?N%#sr7p ojf3 <=&gJF=P%L7wc9%ȳ1p^(3<GZ$iz֤6'(B<824փI14@9+_ lFn,TlLvQ1lGy#JPh%Zs?T;cdS戙T2HQ%r_e0Gq{ ږi˿E3KV@ג=c9 HlFJ֗@OɷvCQV4IU&STp ,!<|-J9オ"Z$gSNk0sF1˟?P.} .t_'oDWA'2R52ķm(?ęcV0D`RxNYۦOё\!<=SInܰ LJRAC!3[AUb \#ݸe.:8G8w mlPk,PsL}wux9Z3d[\AFOSPǘkKf@E7~EQL߼q?htu ܋ b\GHvk R,[X:L>A\0zᨊJv6ta|I+QS'U!B]aÀS3) 4t)E"ZQ Z;$`(zUfzuPjFXF\󻱽dw..vKWEAXz2N{2VE%UT\&D7+HMfh5)UéY7yB)۵\$+ZaL;3PМL bZQ|13Z?IZ*3RJ(ฒ.4_Z閧9s3#DƊjz<>%G=`,~3I4S 0k86~WQu KK3^SZ5)_3+]0]rV va:=vy1\r6s9 jjQ0d+[/kB6N&VwUN.kiu^ޱKB2ʒnqf)O%.J+fjL¼K B6c;] eڣX,[ĩƸv8 u6,qbRCI2A} QJ R+Nnn+v[qw,{%HﬔI(2Gek ).匃֥SDQ8AcX'J,@PdLlNE%T3;?f(ef|Y14ԆIp ȚIdpnrm]NŏRU5Uǜw  na`sdx]' ԡ;M@̆,E03KZLAP.cXB85vTFQa&՞P|~SU"͛x\Eteno_V]Av{075F 闠Mz>DeTE)le2U $=^6jR=C =p6k^{sّ@ݥ׎w8ՑVϿJ >`+U!\diNBPPVc,,Oznlyz BY?5Mxs̢:)M\n}4V7j09|Pa༄ZżGj" d(!~kU>u-+aX|VF7+^._k: RcOAˎv3_apf=mKsMVHvz\!EGͣQKIU%`?[]:{_g?58BE?:д%}mۋRQC?&yߎ#6M?Ǘ''4:SŽ ޢvQZہ*⻚K'؅Τć5pLIPD:6&|ͦ?J3QX.b&YBpʖ4Q.Ȧ9nBFK5T #e'v'QISYVUً1ou!MBw,v'-:Ea0%#eB\v 1 D!9?fl|A1 fWFtqʖHSdRMa9) c팪”l8Bןj2qP.I=8$~Xa@K(NÛv[6&@d8Sh9痞S}*m@'_ʸ@f ӰVzafh[y (7,430^xߚ.s|0RVއW@r<EU^ryxj` [@ft۱P/j*A2}ڃ&IPh՚YLi@2\NN*.;Qo9`hcTLS1 } nQ1y9lo4`RN\?p)nPYS]֐*? ?1ɢ4cL!@NVuIH+c4 m_mcbk$uصC4uli"bcB|*/?;f-ߣI4BkG3 +_v=`d޸3xFVT }HNx)cl6dB[KB9rraJP)iޏf_X#8=W|pS;ˑ߶1\2[a$EW/MMH9U -+V/g] t<*GP(gl(}`ZdIԅ6iP$J[E#x]TDݻ Z[?HX(7t&ɳ=}YM@SHM\X_XwŸ N?dw߀\ėˁ|J&`:Bf2Yrx0AQp` ,/̜V#SE>ret5Җ t3J@_,(ȃv=WGSTqc)!,̢ױ)'zZtHr+`!&_P졆o=pC#03ao$?gaeޫ8[4[x60Ia?>t5WQٗXEjU2sC wΗw~GGbb:d-fb[dԲL% ~Ρ;gÂ'rxR#VE51L*}Oğa/-vC>9yk`;J!C z5)E N~4;eGΜ>sܺѠ?·2T@5l4%HI⚂.oQ_WӐw'S#6⽪ +ބ3SZY!˽mL"0Mk |g O!52-e8OXru74,ۥ0y\ʨ!WzL[GzR}"ߘl~NJu<0Ԥ:I!h"`ɐ4^7hL͎RA}CA_ki(oyA8^<,D1GF~QGOȮ\{J)&D,yfZ53[]oTٸu\qh[VXcuGI0Xy0Zt#{V(#8d79#j]ԨPi7LlZ}?Z?`ŋ O:%/<ҩ,,n 6< -TLQTa9Qf ; jDo#t%CYpDp?^)P*$l +`2~+9t\!+;Ts=@_y2 nkSuC㞂TIr1 "%ٕޯ p]lU ?wв`W0ygFܭ X2q8I'T?i eϷ[{PXCct[&/NL9E9M۰d^o ܠC@"eOf*yh {'=7oEHZ)b_&\/'X m^~85}N8.*HOMr+\8w^Hڲ"Pa[q=_yOBV +bsg,K[C\ӝaOvas!= e)uT79`qN ¼{:E j 2qXb1߆/Fㄋsgh ersbmMݺi#n&ϟ"1JB15:6yU>y |ɥhNs)9td:xhAi5ҳLȑؗ3yDc(ĉ2f{YO98h^1Hp8hNF /xO7~:Eꁼm,!A-!EM~Z|3i:K[0:ߥUAjf)k\loJp>>>m-tx *“-tF&չ0פr:@qXhƉf/eNc#"~a"w@1tGP~֍W$pE1%; O$-Q-<=~q_wAGwݿOF'c^\2I) QDZՄ^3'Xբ?xM/ >: ",;ɖq#/ruqRx}iK@4=] ѯc օpa+4 t!} Gcԑ؈iER?U-4K`2B^;zcryt T*1CKMDL(fLMcY .+>;g SI\1(s FLC:D/%쐪hmJ c -Qz5EC:މ> Fk> :@1`nIfз˘I=~5<*9HJ~:Ǘw$.t(՝Qճ8]7QOAx DV4-aro[#+\gP%E MAR~\$Prɺ껡2 ]Tk~`c4*\GqMf&5ߪ'kbm,m&:u9']+!2>#b+f_A xV@s!&h )㶛*?V_X.`۩ m׉. =@ P؞{ !_yODJyssSZ?1$mAɭa%bOy%[9t,G$mlWL6>1җa+*<`pv{*x:H5O9>S9Opi,X՜7ytMBq7P"S.'[ {PFjb"`ãVeѭK /C'/ĉUTy_8/صɉ6:Gp.aWwH^D>8 Z7h-l @Sj-hgo;`~m !UOdjN$,cmnO6nw`CO}JV^ySgtւ#˥>tӄ{西1+4YOe3htVyjCBQUgRHvv\fy, \Zz nFZ# Ԫ|Vx83G%6,kI~n0Ӟq-T@_DZ%lWjtmk,Llbc!_{ѕ^lI܆6 y'j%BݴjK?0 ۘ%95 4僸Ʀmū!bΗ"n$dCh(tZ[XS{t~Yg0[%Ԫ֋a HX%,D-tpffag6ShTD [VA3!geC(w,2hM  OJ[r%;Z[+z SJl햿d{ zqK1=R'Q9۽ 1Ӯy6y%/4QSsk@jgYߪNJR Y(~X푒^z;eezYLh%OnheAhU |:;ʶ8dnU/_e:Zx挰ަVh]~Ԙ,% b656l+>xk̡2Syx6 R62NH\61NnIׁ<=5c#OuU^׍phi2_:Ek'c%c30z K[2˂oG72Änף7)cOj+;zv6r^33mR%ޯF$du&6o޺&^xv]B]t;FKktb31hLF_]T狍'9 ,iRBD-lz?SPƱ,(!'a{ӾmIcO5~lĜ ƚޣ{O//UWW_p4g4r]w=T,5MlYHU},=dfdG1G)Qe !RHd2]uZ)(^Ԉ!};QDebi(PrX_Jg!D@"%H)9YiCgӓ^Է1 ZBPz29V?"|a^#:yawqWA, k?ezbu-d C@^j=!YsK 6Z+zDLoҳg ϥ&|noH|$fԘ=]h?)me6W%nWE)::+ 9ٓb ;R+R-fiSxLI*GzY`jiU=u*<CDÄx5)T;6tvFu_zgx-WU(*Y_4k7O&ҥNqwvs4ӫOadB1ɗge@.P9uD+Me>z|O{ BȪtNxZ2xG`Y,ncT{wMf ҏ17|T w?Wt>jDN_C$Lp)/'a7w(XѨ[xлWcp@g W-z-d`kmםù~h1q ;uQט/]jXDv)NOFW֟kqBo !LT^w$Tu\n!b&N 2CSK53bsG0܄q4SQN]Sqg_0 1?`v:т8Rx⣶ȣzvH80R4InC )WUm?3KƼz鮕~QQ3NJurp+~:fZ@]aw"F_hmk(ԗ1^!:L;?>}:toȳ<;֦.BѷMJeH06H=;D7J%S,:>5Iag25B+W_@B/ܶ ʁm[7XՑtsAͮ2C5/mlۯU1g0Ϲy܈F2/e8*qI|5+z(&ΨU^PRNSC\ ztd?XHx2v%9SI&ttd\% ^uCrOޘ?'8mlt _ov7ؗm@{Y},ID;̳pO"Dץ"~nOzݮTk|AEN[a^wCv.C SNWߙ_3D0ѡۑ.w(ctv>2 CTdUwF@ £`Bͽf\QXl"X!DI(7TҰɮ[l+*<*Y4\ZqOG4H63ÆQA_(\X\JbEiSiFj!IrL <*'pAiqDI+{ym? ZIQn aþRWf ;"@W ?0i*R$RIjq$H%k^onJ?7^|Tb&K\R=@~/$bf PN3)o)"K>R шПcS:^0Rk桮̀HHzҵ+l.ύ~#g Hl&z_l ^FzG; jL^SɹVE}{d\"YP ,P^35p+3ږڌ2]C_ɰN&_|A:_SYQLEnw;'cz]G `X [ 2@ Q?仸烦os_x+fqcѠxͳlRNI2N-nýO47a\@BΈdf:MPBYJx?|\s==Z.hwnN]z%8.ܑ QЁՍ2R;f6\hbhR~bӼe̙*LF§cfB"ׄe"Rt8IU%'\p,{wI CdPf[]78gIBnv\W'/vcmvupD BNsz߀\=TL(@e'b =XǮ(#&/0{ۖIu!j{3٣|T \,B GlTEO6nV)2f<_q(0va7:| EH&H~uv5ւi1.rn'{h)]&G ̴+{Rɯ*In@+j8 ^L>s:;7^Mфe5Xyuz q$MZs9Gv0s]E}ypD6ٱ$F<[A6Kާy0 Cu]:IC†Dg|aiSdhcFrkmsh|톦yD'(/c |bik P8!*GyAzu}k3Kkw$|͝x(Z1ȓ`}ԃb0 ИW ;8.zd?У5yl-ؾ8j@/utSxeƲ,ӕ&$g=+MzJE;IUH#) nI֛-a njzd^M?B76=AM4]aa{UWE9AmjZ8E|Vr| <)1+|MJXܧ:W5Y1]VDhl~kL:A@I&k %4+g~ REjD|qjb'Ƒx.$uddw"u~f tc~s(T3}MxQJ<@uj2V 8nKǰ([>X+;N ?).iMۧ! $_u4K:.RWJ81}RioӯKʵ FX7i}lk(23JC-GǦ3*:T"d=riؿdfhBsA gqoȒ9Tpl$4]:+x> -U;H pZ|it[jNL--n,5c[SL[xe6rOĺCCԨ1>pYN@PWՔaB<Ԗe"5##ٟBd&-u4HdHZɶ>#bըRqj!fY/Th 5 /3OkblC>adOiI\ᓑ3Q {{y{`(u0^ TbTy]>#&vI R8eNwbG~R;{ 'Bq)7LxX;| ۙ&ٍY N܇3&_ɱZK..Qi;ѰIJ9˻l8gަН#֙~QuS홆MbZe J֏bv֩{9PBȷP2 >yǬ_ɑ(#1E6}Հb:IXONo!By.~z 1מx4jT,VTbZct5˼".D t]{$W$ɢǽWuǽ̏#lLɋl4=RJ!)[)8\9xNtXS\T.i4& 3{qr]He0P_$o![]/VҖR|Q^ceFnP33J9?/3E/-#i_8w[ĨfX/4 _&xh-ZZKC;JYH:mB ŧ@&*xXOx0;Hf42JDUF&h+&v;Zh/MGk U[>p[S! \"2(T `  J*"UM넟@?Zͤke&-xQ@98k5%-W{DۊJ5\ W%b!1x8PwDLtGz P;I=ErJoz$wʴm},8kRPCwsW@ĪEJT0IG e-ʶ=3Mzs+F]J+ףDR~@0c[9w2;U&~)6T!IZ޸un_^VYnƛnzqvwȸNiP4(1쮨*A79ZX ¾f%( Ok\G(ܷ2Q7l`JvuMt_7\\mBbԶFq{c૵WJ+==F$j%@Rg6b? ]eany|,Fĺ OE@lp*8o 4RuVۥVG$J6%`+v![h*66 ɛ(Y]?E 7ʄ?h0m0b5 6-B-XLJ<۾cu2aP,fY^ mx,`u>@Gf`e]|GY8=i"JuڭA6Ih` ڰ^6D ̷õʀ?- N|bSOWms ZozQBG\bl\C}^[tE7hNk,b 77om}E8]}gmuu'p#^Ȣ@l -fos6p9 )*ITԚ`{ofn.e !/xA%s5EH3r*^Bl)LM,GCbk.m:'?*&[:*/td]1'Q+dcQ_#PYC$ 5d 0٨QI, BTԘpf!RD![!r&cZ*P`C$;|<53A{/~t{5,Z5<`Q@Kk8NI%IWrv o0n(v~KxbSh-0b*W4'Cz ao=gFdJ"VE?b[' s QU= j1[XPz>j& krT[7nfJ&l*z},q#=".(-n5:'t#Ri ɀ|wrj*JR۪au\"^c!y5/:tG'OŌzt,J{*z" e>kwێsq 835͋HN9^̓^5q2sJK3:zOmhOJ#*H׶!c?M2XO cizKz-xZW娴gZ^SYij1 u*gvA8)٧gzKnJgS&I4-­Ꮰ6DhX䜧醇^!!KtcPVB4!Q ="h);af/K&*Jb&7 =Q~T@?i}c&&_&P-sp_Ae[U֤ɠjʀyX;>Q^p4TX7-tZsL0o³7ƒ^ -I0y=zd(j"卬jUn' uc柼̋杊M,k znH DܧKS4O;8@׻Aߎ|Ÿ[,!bIsfث~1C2pdcL/Eo2'aƇ~e.%/FN>xx fnsN><-E w KGջ_ biMh{]st4ŵV Ѱ v :YA֖]\8|kea9d9̦TtV)gK0b֞ޡI/--G2)B` a7@u*-id̩t\aDso8@:"ۻwƞJRuzҚI8=Z&F9a,zU35Ρޗ`S5[EMmo Q11ɏY0_-w 1K`Q #W.:SzY@U#l7^(џ8`;QoR<'7i#,wzbmslIj),n&m۩Fj.m ,<^Iz7~c갬/.(꾫c&2 ?Z.s M-yo.?ݲu/oC[鶇Hn[T_Z(4mn6L)BwQ 4@Z5[\8߉= ъfmO;i8\.Z_@sqnz$UC=Fiz(4ĥ`D6qSHv-%J$ $ܧZ/tHu {gUܹ%L`m%@I:bϼS݊zy!k?i5PZQޅIw/~;T(zp&vO K1;I:.4,ˏEo5QKCV埛GC X7pG{B_s] e><<_q?BcMrT{i}鄪6Qwľi~Z\qi`.GY0(R!oySHR9Y.njwȴ|c+Ʊ&1*!]vƜPݾ^¹(RpEL2/,Cp`a[6E2B[,gN沱_&'){͐)ɾ IU'KIpvtARP)%We8C]#D9jIp MRN)©oVf <0施b\y5ZiBpeEYnA9l\k!$ؕH#4ãP\:l̮`&ײ Ib " r@K6ۦi Xn%Yk+u]z'%{ziiSH툈'/1MN`.-smVlB4ɾ). /s^eى_\L?Xf 8gzM0^)AKkQ!E\SW*ѦSY)VmKv4Z *S(d*\b"!(PI+*^(;T5`Dsa!^J7UbZiBJe7afqiKVY(l`#8O;k-omÏ۽re  RQgǐV4Zrq66(P"<(n$P7ڠsmoB-h9k$pR*fR|_ƜkdVz;[ `BMga"ۂ4ۢNJ$ijD; =kWXho?&;6weiIЍ%ZsSMڄ0Ykmq-|2j%v=PM-%Q.ϡ};ꎧş;H }N+ N:L$_s<m yDEM=ʻnb-l4im`T}ϥofބΐE/5>!B E!  UKizNTl5wzޓhLjqw>\G]7x0#JUD;_!(9Qwu՞~r4YmŸ676./zߧlj*r˒&7~w?5'3}$aWpcD QVhbQU֫Otv 1[`3"k2$P@wkTkMG)rh !c[!/:fK.B;'NT"ɤkBxpHĉ(BHcOh}5W70mDea+] ?ׇi Z^%荟)dr:Z /p[QMDP x77hucߝ63ٿO'jJX5FHWQ. p'CAJBrIV Zόjc8c aYU&{V1p8KZe( ~\}(-2O^M;vx˶XQ&0+rUw<|ci NqG_i Hd c9*٣j, `~OaTO"phfg(&b[`F)̚ML?P$zzH.=E[ Zols59:Ӈu@pGdIC}xMv&D~T,nPI{6^ JO{VW"w|m{8S)LhYXv78i᲻ʰ#i?8TCaJ3 ䷓X_g 2t?z5LK<7`c"Jr 딡/R $ˀ\(1M&NGfkNEM?#3G2>5RTР KwDJ}qSe)p$aB-x2cix!H˨HJ.cL%{bw8 IW [*r7U`^R)!T[㇥ %ݓnUE | {#SL;4}u-$Xm*'L\i^4/n6%kAf7[ዷ'nr3qf0͕n5y.p!Fbw.݃"l%&CC٨̀/V'}3a xAS/יh Yj \}c[<댒s7쌆>OFU~T;L,K.+2BQOCL#!Ң5J}[1]O Gl#zZ9`%WIȓQrj4qauu 怴6]JBF* #v/!j-+b$E6FUcUS}ΨaMQ-ؐ7AGjX:Cuqql 7Gp!ꋍ!ǡep,dOtSI19*!v$`߯LtdZ jiC8C~.>,e8d5Q?::οOAn)rєs8-(W/GHBgqexr`\ )Il~KP- Ilѱ٧ŎsK=k =CZ?JZҞwt;hC7W<{JvW-YWSL[6?p6vJގWe@t| nB=uNT0-,p3|'R\ c]})iVC5W*]z$ڱoДT60)ҫN4[_X&?p[8IO>O|=%U,e{\̂\$q[CEKN'f :%?nm0=]i:jTqk#\CnXhVx'pwF[">:atDV^ {Œi)lapTlɾ JEW,FC]ԌZ߰X%YJ[,U 4ppnZ)UT85eܲ`"m7LRLI#j]ADž|hr-bQ3L%Iu51}Z3іl+WMW, +Rj.$f@I 'Eٵ>G%{`Cj05Ӻ`I(Z,D66'/sKD>Yi R0^[FEޯr)NHkYЩn֜;w.15Y5nkkL`XAp^+"r\7I:f N1YZQi׷ UƆ,%*0 F2WE&ͳf)Z mt{;RcyY J * 0euPDX͚8ϪLCۏigW^M-pOU tanJ.uYjH_ݵaDA]wKxbo6ʲ`ˮ8N8ezYcF6h{@r&z c06A:{` ;fq$٥~-j{q-h 4Ȍf1-6h…lm5ȟx0Trpxk ?x(wcnE$_YO92ډӰ1ZT(m\,- $:jUg^Br~џ+RvIBѶPm7,Kʆ'OOg[׷ȍF Y~ F)T<رF,hhVi$ӪJ֒ .4/<4 Wk!B0ۮ&GmHʳ{dcx {>;az6^ȹ}9jB4x Qn%Th={谔⮚xQ*-UI#!`K[5?a5hc@@`0 mr'^hK@LL&GyYb21* kZnD]x>1eƵg( HS/Po,G 2Stnd]"kxF?s%dѹK~d:csO9M~1dsnkղF_KyLb-H7!Q&X#WI3&;$S!]Q6 @*gi7V!{Y l K> ?O@ibk8>'pDYm'Y]pu:3hH|zlsb5hϣEa(UQ58V;lӤ=AK[y&(Z M3yv¯jˁL3vO#]I(`)"aZ(czjM*l"ȪF3?]lC[Z;{ OOc(t! J粐65ubsPw&B~Ÿ#m5҈U$rICLtJB&gR+`r9]|Ji*ո fH yb1vAtԪ=G#Lf0qM_^X" B<>n` ONMt fztVOꧨrwD,}-Mx5s|St0>!xr4Kٵ rbwTur9V쎮YEcCG ObZo:7{ô q;\8_1v ~҃:pp͎ ^Mv$\?t(,Azca_Sv@A[Y = uxȫ"e:dͅE) \69LY"FDV5[)ӑ-yt ~*q&L&~Z8z \C=y ddȟEq*ckN?Ն8-00s8m().yf#x|,Ф`˫H MDcFk؝Pwv$1+3n~T־A]q!`*hkS%A&nٵ${;)+G@e`N9 Oa&뗑fK$ _8o5NIB 51EF J*\ rT:HJ'6i-<Ǟc 좛W7L v3m| K$,`fD0(IN @uu<"&86VyO 8;LRIgk5x$PnlP#QWQp=1v2Y:%I s640 .ERUDDDښB?D't||X\;Ȼˬ3P%KfBv+7ʔ93Zf ^\{+F:&;}yO*}FJqګIi縀G0zYƕܯ_\j{+0k)2$zSq1c@JwG{4P77>k4X 1ϙG4>]yVm9F8j6a; VCOAXuOᄹbXuҒy կxywQk N? 7SaQHhrG Tt[Ch[%[Λ)um#|Mi)d8 8t&Vv.Z©m.I@tGsʯ (1tOWu Y [6\5I Q[A_6B7VԵR^L|fbU?7=pm#N c׊}h޹uF);Kf\dHi$Eٱ^ƿ'՛}  @|:\tTWA{iUkpRJ+ȡaq>5YMk 6E9o-st$[M2fHRos&,)7 40t_JgNHd͊@ r CB/f㥑*tGwB1TNsTѐŁbt%s#IΉ?$d `)[aHgx-`D{~U meME ؅4=mSW񯅅m# XTa ya.:6ڌ^Cؕ@q #,YȆrA$TVDg(!Ԩ8߅ ȈzTa~/f1*X(U<1W$oc2?;u2Y en bPa(#_-cc*݀&ۡQx(AӔ( !,Uk ]j>,b4@&aVؼx Kv/v>eةt`R4$WE Ջ<92Y֎Vd[^̺5 Agttl Na`T=syѪѫZc dL''uHbO,>au͆qF BOpQn~w:OH}i`؏zƢ !)}ΑI) c${Ļ.0scv1o/#s, y-b`LK4X e!cmbss' f6KK?á{\.ڻ ݹ=A,+嚻gQM- 0G}(=g}Ɠ<<*zҐ. Y*3gl.GLȿ<6S}k̀Ālgib5~>I@Tt& mW@%)dpoZQk.'#~+ảogBVMie{W{z[Uf)N#`BWK88 qzaVy(6*Gq,ݰT >P3F\ybcu)T;u[J=ݹ1݈ȷK!c<aB1V;ґ4S<++˕:'qchCNßZM'Pb 1ܻ%jP$#\HCBa 7҅Ցc^?j) /-*u+x(Fb%z^!]5fl,77gvcyMUξlɳsH*$-OBmfAcɞWeG% ū"C6tj-IȎ 1'o_I%[G|[Lq.$ZI EOTgk2P1[OrVf'˖Y%+]a S>Ш=t#%5GC­]ǡ;q[v /܎n\D^RLhO:IO̱-9i_e5*E[h))*dV]|B&&XסٗVxU"]>wZ꒿7_eA_^xS @EI^ ZLMD9te@drbJX:B9'X(_V:Jamw_K'wK(@ރ93 4#`Ƃn*M,l8l}m_D wrvގ^ &`70AC/Qes8&/EdU&8uu]ܹNgu3g=Ozb!ؑϓ_1QIL!d^5'~1t>RUN-I kS[wDw/ƒ"YƕWhdxXCDкb8#PF"۫gGe'`[,w.^vtq2;yYۦ"z;r.0'icBKPóʶ4UG%NF.n$`J]%^hx겝ae+!OwQu7#s.AY/Uoe`K[ Hz kkF~qHu ZG| k ifjE[(m>8P>|m#֣f6_o]4 s!Z/BRӷeqOk'VaE"I i}q2Qݮƌ68.rlqCA&۞Eevswmyff|8gWdU즊1Zpq'Qbv.7k jť~ ],-28Yw$:亊cG{6B"$yi=dAFΒSO}H`5CFTZ3|ڍ*,2 ᠈5+c*/:?ݖgs.x˔368bYyQ3>PQɲex0 BB_r+߸ҴYTLUtc`~\{yDC6_wBM(ߨ/:AX[DQNn%#$Mp; CLUSvQd_-QZϝg6ͅ*ݖRYJo[2 aq E`vW=[F )l/S)rҒ-G}# FTL9"#_?VcRw?0Ĝ d\tCޞnC詏0_uCxs+R '^"4D0GdLSlfNh w^s ڻ+վ]k(6pDJ{ !/> raj@-/#q~/dQ4orkɏPA}b&zN2S#͝! )jSAe*܍P ;2Peo|HRdnk 'xVǫBZ+nBVYQo0ܥ 1g􉺽Ex0'"ZM(u>~h^c;=pkG&%*;%ԕfwNhdž7mRW92shUxvU{ saB۷!)SO}&4͙~;Y X}eLS4zfF`nN8g//8>@^Wl)ž6qi E#MruUռ!K&X,jНS=C3ŻUG~ͲOgF?RAʍ ז%CA7!‹l#ubksZ^9QPO!fwg[PB8=)}a~F6ޯ,dOR(,ZJ?!΋P`ۜ(*z)<,kmd`Ef9[7eA ?yB3 SH)~۴,\g&)Y8O$z+[ig/f7{0~kAz?y@AaGEu%^KH|:KQ݈t}QvFjd t3&@ ٤:IVZ_"sV(aOP"VgڞD˾1{N1[쇕p!- {Yh,պf'yU=^X.#r{mj5L]ӷ5|m𡵞aMfL)ݷŐ\6do-3]%"tqsh՚hWw 4u@sĽ0jlthA8s묋@bo>wK}߭)~债)^};!ӎ EWq͂=eE>]MC2oq |Tsb!`-|K־}T ;>%6qA@3c=|6mrh7>go3aL7 Lːpz`Pw(b[4]* _q:T©|;z= 7E4G@x@rć3p ˡ!.qÞqyd ԻtSX 7ƮPvٱ-S$rymu[Gj+m{ұ$0KBobad|"'?|aa@[S7!к)Kǰ\hX!vAUN xՋ8]f]CHGօk1nx@mޠQWl^X{'7 i!rq:n<1`d֓ nbI% 9FϨYp(ҵZQ%4BjYS|NO /91حn) \{xJ'1i[01z8Z'B;qIp \D tM< " #x S>{0`qz|iX4ԝӯuOuN[ҐAzXwm/`Uw Xe&~DGE[ƼN.Py6,ɧ\P!<΀^[]Z2,NՒTS2qu,ي̨cwocCa};PPg^qM@I2~5]z>#zjz`㳵b1l@uJ*ɗ/N1{h% <`\u>"1/FbQ9 'ac))M2$k>K,_d=I`e,T.goV3d̉NmZ3ێyBDaO2'r7J  2amxTA~Vٲ?z Ѓ[YԮpFqlXJ;8MJ-Zqy%WTs\bO,P[}R mnB0c+/V_ypft;3j[F- $YW=ѡF}M ';i[ȉ[_.cD\S^ oqIXr> ߾n1O6.5>0tO]HT|ca4IΩ0c8,׆S.qzFjC<)`5͜LBgXVp,MzFne7iZ.cbTvWiXF{@2fޅ}=U:r^xE u*h85#;ZojS3#A-`f/MC-&熚xa2ߴ P

:mWoHlo\z0-d0X6ў/(J vvwTGj{@ uBM~5醂J{wuGr ̶1aPHzQvyu'%\99/ sUP^H#o꛰2;`+ =7$tM:2ϞqWf HZeɟZ.l]նHw FqΣw>5(4?xu=0/cp`|υPdЃsL|A/ &pHѥ+QEہtHwujD t>p7P@0p=41'suNGhjEEb:ں\UtamFNs]/A-<`Q|C0(4qKV4Ϡ6'B=N빏mӽqqϪ^Y3A!d}66H^P'=\"5^N{?6HjZ=8~XHaJ3Ή/ Wj>&GZUȚ~cʿ3w.M=Jm_05wB]]Fkq?w'=F&>-*jj67_(<\ic'|Ij((ڧh>ƲQLVPx<])!pm6PbǃJ4q6Sb0]~*F¡5?mװA XL=SbXLt(GeG4Oέ'"{oy.Gɠuw33f0‘vRn/ 9Zquro~P)=ZW4N_#eY] 껑 tcb#y6D$W=1fMCot嬖 `C kwo 4&LY>\Se&G%"ȬuO Fef=ImXVS2q&t7R|胯iK)?J/ad<}s;Y!·/<\q0 F$L鎕wޒ(YDd7xI-v l;3 K8hzR:'Ui筗X h‚\ˇn?)/Ic<9vȗ*@:lJ42DCMR:Ž \#g q{m'Pߙ7PV#p;mćS.}Z@Z>WnW륩wNM@=~ `G!թ"=Vt?#7bQv?8 %WYPt{ ?VFֈeK"Mr2WGK!h(ݷˌG_0?oMW Ώo,vܫy.f$8@6VT$ !Wt?&}:Ϟx⚲6WFsv]fYNC~^ָ; ܈b"r>K=߲zdpHV.A{jv𭃤iP4d%A8QCQ]ߘ5Ȑ 0¥s6^#ȫrlo_ϱq1 ȍd*z[=j5b~84fs%9cH%*Xx [E,%]nӷ֨<>mJx1[W|·H-&_x:3 z%^`.׶V{DL 雙J F:g1I$Wi^g*!Q&Q*/e`Xr&7gBw~ɞΤcUi$4wBUli]M^JÒ±| !9*SK32d{]|)&Sgo/ܮfO7$i?:;^E͵ՈOGrؤk2b <˳@n;\8yg]Fkaa ³fQCw1(=J<OO['Du *d}[嗎'!VI0Rv͚K J* QtS5l}cKޛ|]_3*tGP[kΌ@b97{vK~dSQq12V}.$.Q&El_fhkHSK6)]i -(bFp{#]>w1_İV&a*tOD$o.$U&=!^7Zt5_,TifL\ ?}TN֍4r->\CC`vj_p(v׈tU5H$E=.9ٽWօ m8 9+"&tp4CQ< 7Ix = *É:$Ǜ=j6Ǘ _mvtNv I@9)-6Cw{㷸4}7EV7=`tP+LoϦռv~4}!dX^TpöǷZW&kϳw6|otr q#df=e!Ѷ58:FÎ@1o0O6d,F#0H0ͩ3鸣t<78 gc ) \o+goZ1<+|2g21*LU~d3 ĢEO=o zUc! ;d܋"d53cve7kk[gG`σqX-,vRu`ܵ߂͚Vj8K,%/BDDv#YC%0B&K8i&oVMf*}fJw lŹ,аN9[ګPidDT>M:(&:4.^\H_okh!ĎФ̻߶hVlF79ǪN,cv.9HqVKO.O2N^WV %h+yM[ (b@0O5gdܪ oa>TVg=Fk}T*^ę ]j1.0y Ajī(yp$q<+8ùy?* y$Q_~ᥘeC"9evR_`/Sݺ٥^NP!-,:7CAPTIEt!(nV.ԍ-EyiW9Gk2օbG’(^&~]Mz7ͷ$ OkqϺbq:dd#io-,Qӧ`M8;)AgSu&Ij,/r?],T\Sn`]25)"҈oSJ$6m Tm {}iUH@Ev(;)I,挘T xC%S;KV.wd ZxR7Pԗ0mmG9.uwa2DCNؗCkCmB"E/.>W {/k{hOjƁ}Y 2{m=g!1SUz"{{%O(6؜5Q{]Ȑ gY]zb+ i.t% rTd?QvSM}aZ/)W#m6аRi7TenNPG 0F/qS= kmB<L%]C)R\f^gҼnO'cUO7x~Gze*5'_#_qXsF`ZfWD܊='[T:d'֧YʮdװKV~E8:ȗ.wPM)Z*VK<2Jm[E53=՘7c8]gJl,R>c FR/7ǻ_o)淔UjB_)dw#Lh&U&'~T \ߔ҈VlQoV5؋_w{<KKj6+=-w!m=Y]%#og6W./~@:YsZA${.>X( oZ'P$p̨\47r.3F+? @ Axzvd OJvBN_Le J #V<H[~STWBe:J ^5r~Fg+Fmg {+l~_G |6F} -H;Oz(O ي?xӓWӬL;Y˝ܰ٣R:`Cn IH.!j6WlSdrj6&B@YJ{D@ URtsPt5S2a6sK}| TO*+Ętzxx2Z7ȗ?Dz[~k1:ͺw#xjE/Ę}t[~A̵<5N:&K Q3e4.aVtkޭu;Q? 9M'H$*8{#񯛰n>p$nbjFKu.TJgǍy {:ܫ` =txE&zJjֽ'W܂Ls3+ rF8F2@z_z#O -?8s|p X@띋nWƂ܎ЛD}ET uWCɱGީժ*u)RMÛ$ iһKMF~+&od@>A"{;!$vhD^5w9!D8krh&uUWhRc⾴fdP_D_9,U6Ⰸo Mh.7 —{`[͐Ն; /&O؁B-N+j+I%U!`ز5D3(u8hc~sz>"i%uCjÌSv_ox *pd8& IٷWh(7E֔:xn}*5FRЦD`pgŅ/s O[ FbM\UBn8!Z^=0R5G'g& lh𦊻?m='S &LG փkb+ӥJ@ ii{Tg+Q\BtǪ@UN@ X5 wPL ҍن"zf\K^PZHqUT2ϽfZh^ڱ>I.'d\d׉ʎิw6Ҙ>~2l*n'ӫ-~b)>K B.W~GwQ-f؋'(r 28m_Q{4$xuAyLyR䨉y/K  |g|7@8}!NJRp"oHIwL;r^8>u2Pt){4̖$M[ k[^7Dc} Kf WjTnBWS'ť`JoxO".}AW,P}UH;/"/gs,<:1ڜ͏z\ݸJAQ;q7;kl3TDT'-brA[4} Sj|gY8gUg0SmK D~tGF:&ݔ KpV /u--TIrψwzdE3E L:槶Śʩ2寈`ν|2EQ%E8v[Qgk ?Z_ȱM8Vő?ҨXL8+Ű'tK9!&*A 2խ#zDXzReDԥҽ|Lrs`XHQJN*dONXjcͲZKix|;?!laboCg|kE5 sT18%H..^%/#'X:'kL]7ՌS)앁1EcCkJ=1}qa'9*@L&ʅנỉѼ 0 ;e6eol3i"8p..2ҽ/oDg\]C߆h@TV>1`N(z|vl<\@@v=֪}\4 6"^S$߂p$mo4{CzI_ bGv&5aPP^D6pN;iǦId$!ȀtPmW6Xxc' 7ƝwDma&׮Q-<|&h5VxCj]lF*3"wDŔSa?q3/-+?.&Ut:]6{zu61RcV}ɹOw;qss]5T5LyuNy/4 l[̀$p;i!OXpm.m*0L-/Cse71ub*LAj`oRgQ6"G.aY[d<n=b)n[xV+X2.9٘8Ȁ0! rq/OA9N } $JxMtw$V Z-hP%n g:^9rp>"R˿R!Z"mPhɊP)cJ&/FFZ >o^A9vX f9&7G~2z 3DؼԯïI/Cj3nOz-G9k0ES`ټ"m* &%{c2n4zyh>8u)E"+-v/O5:Saޖis&F0кxH D 'i@cw݊SzÚ5Ak8P{&}5@鴕GT?T[N;}xc=WlBrg ܅+L6y(օKGg(⤝W6)ڙyc$0`Ɣd1}`}x%%Gk0ލN=4yX0ۚj9e5te <^{O ?^ч~uF|J#, &"U6o=BQG@%1-IGn a5B[vPե_b)DWT~BQMmmR &iaa7`Orp iD UvJ./ kmݪ!0@>,$$kQK*ۙPIr2ΛJ4g [{؁aGϋfj?dAB˹!oO: I ?L?m֚vαWv[2N ! QcjIjw& 2A;(oc% 2!Dž7gMAAfgOa#ՑOHҋ?aRIRD)R~Url:AIPj*X/ 騁nYpW?I[4hhH.R8ۉ)J8ӫb~,N (}-$%zDM6^i?i`\CAaG˾MZ3wX1UÕý>S&-=Dh ^TI1 +]oEs&[1I[pfpd.?W_LCDȆ`E9•MTBot[u/hpf^2jca1=F -J  Pєy+(x9f"7/Iw!*SEi.ԒEUM~CT-n Pq8,=L{"Ɋ3 Sxݪ= GFxXp&"LE ΟJ<1ic[CLԂ}/HW{F-y&GێH/ͼ J9osHK*Len Eg@;&fȹzpQ=pBFr43ֆ$O3hY 2dԜtQEѐҘ=DS+,foLZaSn_u APc$QDc K?к$ۚT? XI ;Q"IMxX3" 毗P|qr;PhKNN+?>ص4O TF(}Q,%)tELHܫ5Hzwުs4 yeMZδ%b.'g"إݫcvnv\ V L-X9<;{eY$\C킑aq Evh0Nw3en'Oj 4k.8$q5vټXNB8 |}m&ٿ=A F._(YyPzF Wwfnh>a}pN&=Fmq*@W:׿N̞Z1+vnbD 툁&W(U@uIYATCYߠ<x1z)hR2)g,|.t)Zn.ȇǢ7"w`/LMϵG>wA4rvz]'Qg〓yS3FV^DgRվ |t~̕s꿝@)IPulmBe_PL.ó]mPn;/ow b=1Od:=_rTySe,k3bj)n1*՗:Plc @nfkB> !: PIpYr<ñZ1LY'\Zןj#{lߴ_}dwKPJ}: i\*ti$1$@4Z`]hFkL>-# -W-"t*;Ĕ4@#w41!qz|kYGP/O8ҨF3>evl4?A߽[+:!$d0}4 hwbޜ^/: YoNp,<E/d(cKnow>a{ρ?gWΆp?ZUh$5H .R+<;c_ ѻA΍b#Uv$^p1tgsm+~ [PQJ*6g~;sC &8y \!MϨt݈(@rC2$yFPj3?o7: 'N%H!uϱ#bG/Q*nڜoBqD~tTN\{&Zʙ\62Gj4*e 9xY'g`%~F([Ⱥ泡&4!I?enDuY2TJY8dNurF_gYŖѰAlf" QYh;9^l}_X0uؑ_)oԓCj/QL"&QyXl-"z2RNIƓ4s/:N;BŁKOp; 0XtԮgF}wRhUt] SpLɩq.r~W֘51a/G+U?"ZVvlP}BW2lhiм\Ej$e;\<(ۙB›; V۬z=Ih lVv1Mγ F3tk*~bs0}g1z\NKufOR ~+qN:˾"p(kyc{RWLL! '-&mL-M|p9Yػo>(@šQZkÙȳ:Cō)j'K E Ij~몙fȍ(_‚%i h]}= `mk cHE;l w :lïi:.;hVrCŷYץuToi5kQL\hf0,@o)1ugUxKolPڃ33b@4]z8i93eÄF, OaF1B|\"4ZR6 dG9M]ְSu-W1up/N~ % ^tRmv$+MܳwY}$e&b"'haoJU*UU@MčtYy,Y}H,2o QQo?[aZr@&CI_FR.}sPSmʯ;y]4(OZt@\~=edꪧbFv Vx^N$%FFeh1GEѝrD}/"h`\$ I湖+Ym4/D;eË4B'{;7֛J1k/ωR1$1wW!~Q xwt &Oś~\x_ kS!n7VPF4Y* Gx"mplTaGr }:!&&A)@86;hۚF:+17 tXx٣Y*eT$'5v` @P%; |_H;L e?Wf*qBѪ-s`/' LJN_jKsxee9'fj3p:We2Ϭpy:} E hB}?e8'5zmCTZM 2Ioq/ڟ8oέiиѯVrM{\c{=ͦx$]ƞ`Pڏ=BSvF)`8fԂ:!]Fwα]4j:,h:ֽk&}&u іӟnG& ql[ޞD垠:NNa.spN2krT;6뿉m{y;OP\d4S&f'/|FznRНCC*!:?DÅ_"_+ *QԿ_ ,7^ r0Yw1 | ^PcJKaM [X5}l@PɔN`<"f[el-u=j}"niHFn 4ָ D 5z嘌WɹEɃ5=.h>1h-d^擏DW*iX[y x!sYr]ZX)8_Th8<[L(b5 Q[br}f;¨a}aF$Ev~:'S<.'@~Nɜ Ckހ2=VT',D01w&akɖʠme"7FiنϡcM~qhc䗪XפV8>zOC/WFf.]K,Cuv?xI R\8OϚ/ceS]Z1 h;#Iy?muZ-õ'̃RZ98Z"Nsc3uJ9iA=>!mngB @ "v\>91`4Q5_? k'eVD6F|2c+ + Z/hy-T,Yaȳ֚m  r$XAo׋R[%b (m;ejd)QJ(zTJjޤ0CGΜl{eexH' d"qZCA;vqOxdיQr LQ1dOkMF (v*Kt&-w)fəlMC4c+i)oY[E`u1xSaG;.Py&^|f$˷!6*ᖋgmN*ַ]J>Z~ɷFO]SYV x3_@|żVtyz\FKّٕꔏ f\GS_~J%PҀlÑ9H.(> :rtyZƬz L0 D\7̃VNfWM٪%c%W;|pop,CNiN+!ǬtxOQU{YnnIhDI<>z 4pd&B5/[!{- &o3yVbsp%6,EG/ %*o_6^m݃`0Ccx -cf}A'<vE1nqUh!=}ķeMf}]<\:RkT"2W"+kg+ٜ@_ tt3QfQǚ)yYNt(fړvWy y4ְ xfVsOO˒XkNחrl!5W^X-~lU pb%*`;>녚Pgq)b|ܻ>*EzL'ݔ0iB  MpS2F^CpN}vJFP4̷aݬ_F}6Cض3٨z |7tb?|J9a7+cDd9׭#` 0hz"Bn?G]V(`9PB9evv8pV@(Us@=h?7&Ctːl|G@Qm GKLQxd!j]#I8N#ndaw̫Q+ 0x5JJgh)2ٵWvb>ֱ&atnV?zUt.y >4; ZWCF ȭ=Л@ڰwrO B\ۢL/%hi~@RY息`KwR1話fo&vj+{mN:](Poק pYqb"zc9ĔK.Ә':a/=t=q T+72&LfZ/w>' nakŗv}C_!~$8vBP+av6r$Ӯ2O|VltrSN QQuuG{F`.Q5Ȉ(=Lr}<v?yq-}Oz!YCӳ62ȓ,M`*c,C']j0˷/(A:Qt˨zL ةG>&o E5o1%H%opv?qJT<MkJ?UE6xiY]kDˎ,MFh{+>ŋw]aXC0~v>vUX06E3^`J]%9ox(O#G2'j/-_)7^!LGuXH7NJ: )3w{k56 ۼb+gi)Qyz^@BXuМөpkBPpM\Z p%iu={;-+NKUYUf)N#-S4>zQLT,]PVjҶS:hfh'VHP*:O]frjT7s\]4Rg96 (D|rl3w)e40U`b 7$d\ЭB墥~HVx6Ղcwѻ#Luw O ό xhFNKd_VL2IYfa?^ CNEY_ĘADx[R73ajwAT17`HY[ 9B;%}&(}^R+Jց6$BC{O($B ,~ ZdtӄthnE6y:&ׯ1I qhكW,&|,=[OZhKow5 $%QIMD8P8YC- ]ܿ20<`WR|X``̌ i2 C?:#Q:گhHҶr/ Ӣx6=={<+nsp3N9]CxJ򴼆-WO<#O.ΐV1!F.7IBwjV>]FJ|hQPUS?}|\r o!@?h/ḇS]f ``X]uwYri/n ;UGnrP:T~--F0U:GnH.of`~؄| SlIpb!@}3\D$]ïjcJB"`٩*+5V`eÞzC*"1,-~1MmcjVl{Í!F>E h+V=@fā:oĨG4_SZlP<{h0J2Vwl\YRdc]<^Um)PiH-U`^t<5zJ *41Ma=uwtLS`AMM5xml7" LϚM6~_&JEީATd `.hz雂4KJ~Q#dL ȵ*{apvGP4!qvwVuZs"(ȬR+;~oENJd`t.L}R% P!u| 69OhW } =Aݽ_I}-sNR|I42EiF5t432v`ƾb˨NBM.7屁 p!Rr@Cr큇/h_@Qܹh 40#=&_)0LHƭ#`9ˌ}Shgwr"OǢ7*f>vͪ4B|"YIG_8C #r3MJLFc.̺'%5om\dZʸbzPo }\!FqIsxc Amٵ$jRظh Y>0jeu CffH׎ޭ_<NicgU谋VW3o{Ӛ(| ~4+ 49e#9u?6IgOtnSgBX GP9*Ѝ QE?_{iB#Lq0银:,e=&jVd&cB_&kLJJƽvXIN@.V7Wèzl@t;͟qWiǠ 6iyj.zqR(z 3fYmR`g(#zE&cv2I0OOZ11EE wz+8:Dز4]yJhv2%`՟:gqXx[͹D l60 ok\>2⊭Hv>9|Zr} 4^SZ}1㟎I|?U~ hDmƄf׋oTeW){E-keyE hx`tWjK󔥢xAukKIفxu#*j~z%&wРƕ_섿L8g42J KUPn?Boc"fw[.)sξ2:7w |,O& X)sArQ6* ±ɉӿ`,HȱnȬ wYjHΘI=h#"VylϏ'D:9-ZSWάGBH$*GPam"s \7P׾ 9oV[43i!ʄJDl w}ۀ? YP˜r$TÖXK{i:ON&)=m~ͮi>sM!h^^1JcBz0`g;z4G1aN1i+(D^KA0J*Dtgxv{ 2͞׏9옟W7㻂I>@cǟ^=d֭21aZOMqJ~,WLlQ>>P~1*Eռ!HA戔/BNx^@o- E):|c{]D}'*E<<z6 1*@/įېo\]av2AbixeR0uİЂ1Rmlaγ2Nu6 jlV]VH  q^o1U+PM;j\Ҡ̝Z28iB *fG;%#Zk7ڟ▆El|зB1/=F->٢" Mt隨,u$%k4 ?:kRzX$<#B<3u&t)-ZJ( hGʖ$sP0`XYQTks&qđHѻsfr4C .^: *|?irN[wǾ 9uIҷhmNse*J+`'܉Et+ɹ %tի$>;(>[:dqs7+\s*Jω-NGOw!=d_/i 6*Jp[ϟG}6GU:z6kՠcIT`By~ @Y !~Ljt=is 0qpz7ρ)6Cn x %7!^!sHr-ݪtmB7=ރb3>4l7KBL2 K 7Wy&HB陣;=˿(Rg.nP^sfk0n|7i0IA{m4tK\\(9`1׈5t[.$'낖Qwj)gfF&[F_>P`o)6-ї&BGRPBYsCS X5ϐS/RzK8+l!!r۔(re-UM>MHȞVOAqY1iκ)o:E(n 4_we5M*Nb. ] AYƏaC#1L@<_+,M+[q/)+&`LgB*}tMK qa6C0]U8]<d;Xg^O3Uk/nb_?#j]}AmQH i$$PD>bǯ9fBR)˿i}8Ʋ}#!;$cP(Pf^iMEW m,]0EmD*oΣ9MW:pYNjrf\0[QO]е &G5T&+pV2U/ 8ŢtX&hXӋŋ8Ht2@YQO@>L" #hBKRde!Cn|VB{D&rLUaT50ՒUUٱp6 9ސұ΃F q!aa,2 fcZ{#ʄʵT MW; "%ʝÿC 6@aua!Jtg=ƻ)iC5ۥ{[3[\&EսeMo oA{.{Hx^:4&-mjĽ.U`_8J{,}~@gd?𨸺OpL\#sys Fsl:;#c0T_hnĢ:z LA 1N6ZE|)iϾ55p]T1d1w1ћ=P(\1:^}jMsȰ #;PZ%$buL> 5V+?rzf%|(P[!X9(qO?A݄#6vAu}\(C_Fbا5 ]!]KcĞx5GXyڣn{+P3i%hPQ,-Y;a#aV .$Ut`>s8Zo0< m(_dHhlVѱLKоDJ 3Ŕե"8X9ST/LJKN$|~o9ǒ~G/R\OWfe`Be,}C? Sr#93k{π o++ΰ﬍{Nߴ5υHl{&py='ױkӂCr>r eȬ3PhCxM=|K5j[g!hʤ"I~l:pwn!HeL/2vv" 3sOj~ѯx%)'%*hS}tƽD6j\-3Ncr891Pl(?E9q#؍h2q\ԯ DE<@Js,HUC8Nb&Y}=4qk[oGl$aЭɢ_o_7X! {{cER_ Eg'm\0#B Cb~BA Z〰xU^:!KVe2dl[xMM2ăf؊Nr0.xR\a@AmpzB0($xZC^?}}\mSXX09Aٝ^?YQ:H|3Y BD!ưͯjn\g[SO:-ohBG91B\0=3;\XbA4#Cv3T4=m !h'|l 0ؤB=zs'U_"':Pydp2[)3?{$C=h䖾MfYJ`뗺D5 տ!P\X/F=T7Z{+AC@&fli!&s3@ei}uqc$eUWw^=eWOWfrg;`bZ I1"gy)t{mBq;zbѦnj4XR H\pW}Z$H/q/q!{0N:ŝS, R5孧:J{%P*j8P1B_y&&1+ ]9N!cpEХmJ[,v~BѰ옠VS~eMW!Nɒq5"'8g;Vj[H-t7ף ` {F!,(Oժ&$c_P Q?}$AJ {(b\.MBmʹ>i'Y{'|,ՔfҒkPF-e"6\Oc]@(0OwǞ!_Hc6]`GBzğsgS7?.9RMe@H9Y߂)ë:,!b FAxC"7(jI g0髚D^Lt*Trg9s*F}(խ\1u!J7A ~T},@DOG#of 犜]1,{4AVk_S \e?]L=bdUaș<* Mqvi_NДERnpkGEȑEY(rI'DH]*[ڥDF해ł&~kQ JDq\S Gd]rܽ-6$eDYPDa)76)JFr]^*+ʐ4/3x_df7-\H̃czJKAjɥJ& y\y2m!dVi1k25OghN˴ֹlHz &DMUt /= 2a?olCx!=D,&ே˲"]/{d _="5)$@oM=n'Nؤ[-cExJeʗ4 ??paT21JsOYAA V,*|F0-g&c}G.MPH>Ԁ4>KgA`SܣEAIGiu2#;wM&N',өH؄H;daTsK8|VS$ Gwpb=f R o)# OjI:$aR3?ӓYmY $4f}S{]9|@phJoпXXOֵ+]Щ\pHbOTfƨ_VqaR6 -wo_fvA.d3 1̳IS{hYC,uG0GGU7зDٳpcfH"t\ 'M/GOGܳKV[Mp,3 %LRCGSV lj<-i"ni`CcՎ5췳ٕ!Vy\vt *jl])7GaOKD34\Ϝ*wY+.I_:WLQHZ;呹wyaocw ҥhCa;w}><6F6 lga(< p P%K?r_+9XbO"zʫCJ'%{+xXx _Ve3Ʈ9%I<(: 39Im+:I 2cVB_qɆZ$궱&ܝ^Ԇw>A2ZƒS3uHB9ÚV#W.FB-#P'&ʺ66=etnӹ0_™q%s`g̈́j ̤\?S7\ɡK,rӷ)IΡ_˱gTYTHl'Э[<]q=nTw* Д >WUu8 "Z@_^!XD/_v&6YG]Rh*BHas'lO0 |8M S ;3|l ̗a=y]L%MhڅWcjGuϒQslJqKt[[xD>؊3aKyD#!0=c%h D| F #}T(mzrdIxU0jLEfV%,-e~g>.{T*=[cHxěaI! Ú2Y+F q?"X K r釋AF?Ǚ} O;\(!cVo2 0,dϭ$+MShʌWq?x3*f:Jjl>E0]FG ,DFg 3*C%Ilj V7/vz[ qr-|Yy~OZ-"$/B]D@\d.>ثRRGW]3h~Oh_}5tuJ Qd ɱia (,lz#&GZ>O$^ZuXQ,Le[iv<{AZl Y "\2w[puR(f/e/H\Ҕ6 v`t,M%9co  ,TGWb]H[9 􈬖mHtye3h+VER!X%"g[B @NGsf$e%Ud7(!ã~JoO+ PUc}shLw } [B;!P#;Abϥ%Y s߁ս<<1&m+,gv91zGryn:h<<؊aIaj3J4~s?K'2PҐ+`֩&=vά]lj#X}2Vz\}|Zjo !A–:- eY}kg~{9EȁWK+8T\÷t2;FBKH?#BFb'~K:Yh 37eu3e14S8_~Y'e hw" ,$ z[Fe x\/mfC u ҡz :uzV42+W5GCiX8(MeHϕ'u]&t&]TeHMkhAeI1a*~M,b4Sm3␹+.lQ0< `IfTcMA*բkH^)q+l*jM pH$SbMnKa #=~th绖md K8¥_fa@(z'nKl *Sfˠ.]db= 'lt'5^N L6SТb(%t~$^;Ćnxjdmd89+KVY )zR_Sح WhϬ,@mdQ KzSM6ojJhak繅z ,jwQ3c+ru7Vو_HEUws,;LN[}#gv"PY,[ە/ n|B%xd nE3ɫGX?8 y@5vT!fKԣjO$^ѕmC?#k,)vf]hAN*"1U~ɕ:5x;<$piguHtMdx.M;a@v#aYpQT}B&QB185p҆%1=~쟧@ -(*kXX%eE#u9Q 9*)Oy=qMZiwf `>A 0^y9 pɔ+-H8B9Qiؼ9C~OMbPvGi!vXg9usBb1%z< ,/yd+ $S q-ExЗFXUbvS"SZ) fn&,آƊMR>ڬ(1)һW4\k, CTjw.ʁX%Mw.RT@C|AX˽J4]`dt馊PLg.η|_o{k&5@ET]وGT'cfK?l2 ed]l^ E4|+KV7`Uk0S<6W,`-6FnITiywJ!}(4Jj?#a0ר mwo,mm2F,p9GeŤ͡3j0x*V=^˄9+-9Ӧ @rb0@7q1@;)PIw[` w2艮*4!x"rMh8B7WV>divI&m3!PyDMä\%\z!s1>N9^SyO|H#Vr(jVNpG&ܨ# $6 oE׿Ɗ`i ple*Ӧ!vC=9Ȧ f*Z^ Xddt~騑ؾ3I~8Rqerѭ8kfx^l?$@XR6 ݕǢΝhL ;G;@HTOrLGpgt>'޾9z9MJ_~ȟҎ@)HYeՓ!m/E=⦩]vmLKՄi\~.1Wx e\D9_ziCr>ƣN"YC s.ny,+sc{>&@-bKߎ#Yng'ίA'75oZ0~>3S||MC?ff?/H[L$L!{+fKxmeD }@Ё"p{3a,׾"V 8U~K+/h{J-AG鱺^@QVaW 2 ޹TF9 s{"R#Cwqu$rW+DV!Rmw O1{4VFaT9rIV47-JQe矍xs+w$D/]gz!9 Ѭ11닣cR/=7h$$oB$bpR|k 3uRj? ykWΔL$^0[w#[+6B! aeFWaFa-S'#bc1 Gx۴,H F<!A1]U+9tI\q,ϟ>gbߜz*l4uP$ 2bkPHH#l깻MJݞ{#`3Vu[X$PNCc$I,ikg~v\7.ɧ.7e9e6@;Qµ}⯤j>nc?c 8 EpeO X _»wϹɥO,6/!lF H<,I;UO>zʒ#W>8ݳM.S*1ʑqÄ]8D [?nL w(Y#j,8&[/hd-码vQd 'SL2׀Qܿh4NA<'=e{@'גw.#a#u`%뺶 ͍yaIJ~;0?5xNVbV+P*?z+0`3ԎC { &n Lީ㹴Uυ8 -ÇXpoČ \GV2Z/WјIzӤJz${A pj]}>6!qB3;4Aݺ%bGyR@HQdwڟD_2)~0M)+l(JeH[SZ՟o7:=[{W¸_>m~ 56G+8Y^EwSZNP}N 說] DSa8zD!'d|ص{ 3 *j<7@ tŰ,;\=Ώ5ţ  r'" 𬘿rȶe@`%T#}B}mƙTzC+yq]6[PIO:%x?@>ȸ:[aMKTDj4 0_!';g YNuMD >aLGmp]|]^$n=&u_p"Ho}%=PŶa/;J|!W j[F*Т{(in2c5[vRR3mD1GfRF:#k(`2 :خYlOi F_01amQ'P?hL[v]siٿ!>YEIZ1QF?cHp44'Z"+PzL7S@g"F&%m4I3aV/@ U07=TIיaO(w^ FF<\p$HSfoZջmN wߑQa:c9zoӵ GJL3|tA/ʄSo\UÌ^OSs o#tRrF0QsU)BGiAe9x !~{YxuJx6$'!s"=~232WT aq'`MZ!27">lJ_u.|" lZ7k ](oTiEZbU9!w_Jx%C<_ja}b;%_rhpI- b=׿YUK(40r'D=-VDP|ͫg_%C L#:_nL~hdI ]NGƻ޷97v^[J] hdzٰ 3R7iOФBGM!™يy.TǟKO3t( oN ܲΊe ,S~?<w>O'w"{nswRS_moPoԔ7M-\AisGP pO%/jм=T~_l PBiWx&QoM9{||RB_2LBq?ېmC]T(f`/h$3ErJroB=7lu8x@E6|}RhwyY3a-bP(/TrZwhF«+2dw":mT"%֌*9c{&|lܸDrELq \[p٨r_Lیwo.lJbr_=֑A29Tt7)m?Sژ) lLrnKsJ N5?~kr)iro&h0&¦4ѾqVff8ZV{'ć#d\Go;$Κ 5)rM,]Z.N3t?IG8B\F~ dEsDs8wJI`pN#"\J2$ 6v4|= g i.;gyhV9c5NRt(U)d R7( 9,>@?YR΁vX:Fze!uʈ~g2O=>XmlXKY6ǶA:N[Ace1k{V ۺL-l'EGs*}S>lҧLc/=u*ٻI "/޸ S?^R'VTM[S0=*2-Ts#)yDV!h1RdE3q nu>CB'Ux&eVTdD"ߏFr*Tn4hz0+7Hv+ET>sadX>Y=@>3!6_CcbBeA]F*c={ ZKo-[:H[IAuTvR$Iwv*1.ȡzip{H)+'Nxr ͮ~qbӟ|X.}ǥtChVU+)#i)52Cɗ$^7~N dJ%xYȹ)C s^+׳9|!:ˢ ]T9x'=J; ;(7u7g>6;vGX݆/:$A֬>oG'=ʥ|Dn=,-n!?5d '˃HVmtH\la{QS˙;BF>kPR" |9HR4$[fOꁘgWȣ榰*yW  -+r@ѩEVΊ;d,}M~5['|4wߎ2IX~\A`bзV.C7fA,5)^W;S;Woj7:tNA3|\iu^}vD;H35hzM0`óWΫBq&0߸566vF"gѵrf2"gK 6QHL.T*$JDRUzJ푦st_'"a.<0Fk/=`tY؈T$Tt3lY4~a 3'%zɜnj+*O+rϟezI L|;`yLa:_M/Rl3cw F"l{Շ%-̤o Rxѥ&Bs vtC8 .~y) 2)2UH^ўe:|O9t$:^y/`쉪GYy)~MV>x!4[{,f(t= `>sn%SjjZI^$ܨuB$ez2-+ZqJDP/<B4t'F,C\bXiFDF 7aV nc!`#~Kq{T\})= 0T]ɂUFl yf) QI \WhSc}k5hƳT??vt0Ĝgfǽ;lP/Oe=%S;0Ŋ`Ǚ3:%I0zw79<v[l!R jcP [҃Qaxγ]MPp{Y z"0Glw|XN䤒!:@Cp&^_1S/H9?,$AG/_}E!hTΙ<0tkĴ˽LU--:L%dqDb8i W_ 9 ޹~,c 0m7o ZIٿ`:.:q';Y" 4Υ|i'l16;\D |:dKK;hqeT?>]EtW_DK@=Tt?[]/aaG8,cT#4qHrUՙq=DZJ5VNѧ`YxfH 4LfW{.enL8gãQ5aq]`,@ e܎-bavO.ܥ}W{ ؑYpG3[|\h$?~5C.[krr?~WHOuoaCkMV%~ٶ@ es) ڝ1&k6q_gvB<z0̸(x$^hhS0X =QԿrFNVC_˟x؈g4"fb7ZI*۶Jb zQ%NU p%EE|b[:`*GOQAJIjF݊TkF)A wn=p*9Xϊ0Wf7$g36;Lq ! |2ErY$,ik?/ OcIcuo^Z,z65䆵<^ …kNzHbMV7}Ck9`N;.2Ap;IcMwTj,Yrmf6I";` JeiZA"~'`\YxQPպq&WnlDb5Cen,o/- Pۏ=]!k!Q\ ?G%1٭ 'W sfr s1sk~(Oxe4HͿ~:`o`qogE*9%?wdޥ4bPn1.dh㦨?*ː;n mm;Pv}G5 )띓gDv2TOŤ6c}(d#0u_iԥ>FM^H9ɱ7:-7qka}J𒤸mݪe5P#+>hR:"D]Yw䱢:3ӈ֗`'~7f}Ut ^P]av2 v牄fO! ?N7]P؝SDʹE#5tĒ6vEg0UR>6)ٴ˻ÞŷRWn|f2pXf?p\7i)`ۣpO6׏bJS 0<>^gFfiwHBY]IL>a;KJ#bQކ9@іW#bGH3䯡.z[ߦo =X*C> /+zEJf *!{{醄&t1;&6: af)OgA]Pӻ5-`MQtzLDkF~ea3zD˙WCҶfږBpp <'npy=Q}/SG.闑tH\骁R,ԣhcMΞ|JQBI7~;#'9Ü"a[Fa6F tE:hla!A ,/<7DRUٷH{uvd,G [485$Bs4Uͨy`ԜԑiW:n<}*1Ƹ=4U:,,n͞G'<`j aݿP;R xSN!<03:e8Lt3XoiLpZVWҀpy83̅s 7D!!*>{t;hVȲ"\.t_ TKN6մsK3#z&;}(( q"9,g1dRPBzqT3]Ǘt5\ ˊ"3g"8nzJX/8`l.Q| r+bv:ly^81@A# W#Xmy 4K:8g\cxZZNonb#SlGZ:toB.l&ɕZ!&3\Jgn(W`Ev1'3}:d03%CDgL\qv}ֹ̹UJlLʾ=ZDee136/ߑx]/]5NS.vm{ߍ.# k%m,k?AZ+(߱xTRGKIc>n׮۔_Q;t1aD*S>H j 8&}IHX$6[Hd܈#5ymDvA&cd ||1m;TS(ӛ/*gaB x0|T+F#NFHR6xQ~}2zzCt Ez,Nk=wc8yא_ҔY#ˆ E2rw2 9 \1&օ綪?/dE 0wpI"u5aKyG8~"(;HWKϥꌑ1!4c- -VGtig6EB6ICϹ GƢ rMwM,z(t|RGݳwN_)]=zi8]Ġ؂=Gil^4U4 ,=m.{O Rw7<,Y5& E2¼'\֌ %CX辛t cXX//%`|a3'L`3|9\P^Jk{} o)u ت\Ȁ`cɑdЊeP@(THz'wmCBOm}+G|LyʨߕbDz NLi5[3!{"^}:$.(*ЛZr[̒SL(("H5:ģRO J:\o}͊+8kO+mցT}3cU IdƟQFK絞&}QMeM=}{dYɬ JcdEv%e'R>Gu-*&6&j6XTѽU!nuΐNP+d-4GM,|ۆ)>:Ԏd5bxNdh+_$ͼ݁^I $unK 3Y0*jhӟ=BYqꄰc4`LK rYɯD3GOo\?Xp}1̎8Im`ӯٙW KCTNeS?nZԂ~{ggR1Cs i3}FuKo1qOu3p8'1fTzӾ^Ș101Jb'N2pLCxg&Tj: 21;4WoV2{eԁqg`"rFfs Q ~Fyas^E ]o Z>5:S ỊQ"8Re"8dDgҍR O|2^q]}4./(-58\0G. / 7Zϻd7 l4e~*͈(ke)stH{Ȏ1M@Bno߽?b{Hj|BTw<޾W=Xiz:k7NvV|,M Ɉ8,FJ7P1-cد9Z"-tgynR1켢ܶ[S^ȍ^~%SoPf6j/-nJ9lt4<:j.GZRǀ.CLpyg'f$mItR~V_!}:c9-C1\l}j3iJ Luy<1 ] B=!e[}L]OPBgr&v9%ׂ7v6*IHsVN~71 x"+gMNe+Z=3(Fkx'*nxh\36c7%9k݋lK0.T:]W}mE{@S(Q@wܣ8ڸr'1>U -[Y`fETW7/C0dM'l۪i3kTCR_Z5I 7<)WYNb"x`Ă,[Oze+)7Ɗ ʽ; uEw|U]`A{Ԍnd[W[s\nOA5leYYT.OwlW koLe$7lAy:jr'nm DR\62 DW0 ol;DGO^ dIb y ,$Xy֡;+`0|,P6^.6yd XknP9=!@'/!3h;lN;znMpTJbq9i|y֚\T3rUEVRy2'8hA Zܦד˺<TRR3 UW[Q.JU m?U<;n%K0{$am+lpqkurV^6YRA 52 j%rRM^>kZ.1Ѿ\k|̠>Uj!K{B>PEO+3m QWmׄ#SQ3ǣ~Ej\TiC6s%4;[Ba`6mn@=媅nB<[:r@k㮃'+/bo^G9m97!{缇Y!k^'U=ʸQL|ZGHey,j ].u9NsN#Lq& 02IOdK#B羇$wWe6a['a^eno .eZr'JʼT5w>cbد,'*6<1H;41v,΁Jʻh-#\ JFB_cc9)bxW6ǸƊxk=m"U&EdcJ&-hS90'[t0s{ XbORcJpsi C(=D ˖o}=Mmފ)*2G?SvԂL:/_f9ULm:ǛBm'RHhlseb8.٠DX4]R"2!a+х~\.EYI;me]M^.!;H*:ȁ- :k w֪S;A^ zrpDCVM3ƾ' [0R9{x8cvmt9#Yq`*/1͸E SRhh`' lIH}o}(cyujIa%<Y84rQRZM<;G3T,iU;ຯhG zQ4L{h}7Z3 uyAf|;ekx>sVa27zeDi^F;|6f<ߌ~5O>e옌RckvOks6]Wz]@΂|ӽ)UQR]BQ2뒡n]R_~Ϋ.N\Mz?>"f|C-^:s $mU kTu@&O `V1J-)*T]GqlW6j~VuiR&@vB}M!Iσ8c<a$N#@_h Wv㠠 dROzyv؃uܪ=LWš-rیa33`kAV >AOC7F&)a5QQz '^Vs= B,yOc )ywzXNbZ?a^ z!&:{UC>Hd9CvjDvl:f9Yw$` 䉱ӞV0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/n022003l.afm0000644000077100007710000007626607260330355015425 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusMonL-Regu FullName Nimbus Mono L Regular FamilyName Nimbus Mono L Weight Regular ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -100 UnderlineThickness 50 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -12 -237 650 811 CapHeight 563 XHeight 417 Descender -186 Ascender 604 StartCharMetrics 316 C 32 ; WX 600 ; N space ; B 295 0 295 0 ; C 33 ; WX 600 ; N exclam ; B 240 -15 360 618 ; C 34 ; WX 600 ; N quotedbl ; B 146 315 454 604 ; C 35 ; WX 600 ; N numbersign ; B 92 -62 508 647 ; C 36 ; WX 600 ; N dollar ; B 113 -92 487 655 ; C 37 ; WX 600 ; N percent ; B 87 -12 513 611 ; C 38 ; WX 600 ; N ampersand ; B 105 -16 478 519 ; C 39 ; WX 600 ; N quoteright ; B 135 314 340 604 ; C 40 ; WX 600 ; N parenleft ; B 294 -124 458 604 ; C 41 ; WX 600 ; N parenright ; B 147 -124 311 604 ; C 42 ; WX 600 ; N asterisk ; B 113 250 487 604 ; C 43 ; WX 600 ; N plus ; B 72 32 528 530 ; C 44 ; WX 600 ; N comma ; B 135 -145 340 145 ; C 45 ; WX 600 ; N hyphen ; B 72 258 528 299 ; C 46 ; WX 600 ; N period ; B 226 -15 374 116 ; C 47 ; WX 600 ; N slash ; B 113 -81 487 668 ; C 48 ; WX 600 ; N zero ; B 113 -15 487 618 ; C 49 ; WX 600 ; N one ; B 113 0 487 612 ; C 50 ; WX 600 ; N two ; B 84 0 478 618 ; C 51 ; WX 600 ; N three ; B 96 -15 499 618 ; C 52 ; WX 600 ; N four ; B 105 0 478 604 ; C 53 ; WX 600 ; N five ; B 96 -15 499 604 ; C 54 ; WX 600 ; N six ; B 136 -15 510 618 ; C 55 ; WX 600 ; N seven ; B 105 -1 478 604 ; C 56 ; WX 600 ; N eight ; B 113 -15 487 618 ; C 57 ; WX 600 ; N nine ; B 136 -15 510 618 ; C 58 ; WX 600 ; N colon ; B 226 -15 374 417 ; C 59 ; WX 600 ; N semicolon ; B 139 -145 350 417 ; C 60 ; WX 600 ; N less ; B 72 44 522 518 ; C 61 ; WX 600 ; N equal ; B 51 190 549 375 ; C 62 ; WX 600 ; N greater ; B 78 44 528 518 ; C 63 ; WX 600 ; N question ; B 134 -15 487 577 ; C 64 ; WX 600 ; N at ; B 105 -62 478 624 ; C 65 ; WX 600 ; N A ; B 9 0 591 563 ; C 66 ; WX 600 ; N B ; B 43 0 541 563 ; C 67 ; WX 600 ; N C ; B 63 -16 534 576 ; C 68 ; WX 600 ; N D ; B 43 0 520 563 ; C 69 ; WX 600 ; N E ; B 43 0 520 563 ; C 70 ; WX 600 ; N F ; B 43 0 520 563 ; C 71 ; WX 600 ; N G ; B 63 -16 562 576 ; C 72 ; WX 600 ; N H ; B 53 0 551 563 ; C 73 ; WX 600 ; N I ; B 113 0 487 563 ; C 74 ; WX 600 ; N J ; B 84 -16 583 563 ; C 75 ; WX 600 ; N K ; B 43 0 572 563 ; C 76 ; WX 600 ; N L ; B 63 0 541 563 ; C 77 ; WX 600 ; N M ; B 11 0 593 563 ; C 78 ; WX 600 ; N N ; B 22 0 562 563 ; C 79 ; WX 600 ; N O ; B 51 -16 549 576 ; C 80 ; WX 600 ; N P ; B 43 0 499 563 ; C 81 ; WX 600 ; N Q ; B 51 -115 549 576 ; C 82 ; WX 600 ; N R ; B 43 0 589 563 ; C 83 ; WX 600 ; N S ; B 92 -16 508 576 ; C 84 ; WX 600 ; N T ; B 72 0 528 563 ; C 85 ; WX 600 ; N U ; B 40 -16 560 563 ; C 86 ; WX 600 ; N V ; B 9 0 591 563 ; C 87 ; WX 600 ; N W ; B 20 0 580 563 ; C 88 ; WX 600 ; N X ; B 40 0 560 563 ; C 89 ; WX 600 ; N Y ; B 51 0 549 563 ; C 90 ; WX 600 ; N Z ; B 103 0 497 563 ; C 91 ; WX 600 ; N bracketleft ; B 280 -124 445 604 ; C 92 ; WX 600 ; N backslash ; B 113 -81 487 668 ; C 93 ; WX 600 ; N bracketright ; B 155 -124 320 604 ; C 94 ; WX 600 ; N asciicircum ; B 113 354 487 615 ; C 95 ; WX 600 ; N underscore ; B -12 -125 612 -75 ; C 96 ; WX 600 ; N quoteleft ; B 260 343 465 604 ; C 97 ; WX 600 ; N a ; B 72 -16 541 431 ; C 98 ; WX 600 ; N b ; B 22 -16 541 604 ; C 99 ; WX 600 ; N c ; B 84 -16 535 431 ; C 100 ; WX 600 ; N d ; B 63 -16 583 604 ; C 101 ; WX 600 ; N e ; B 63 -16 520 431 ; C 102 ; WX 600 ; N f ; B 105 0 541 604 ; C 103 ; WX 600 ; N g ; B 63 -186 562 431 ; C 104 ; WX 600 ; N h ; B 43 0 551 604 ; C 105 ; WX 600 ; N i ; B 92 0 508 624 ; C 106 ; WX 600 ; N j ; B 147 -186 458 624 ; C 107 ; WX 600 ; N k ; B 63 0 541 604 ; C 108 ; WX 600 ; N l ; B 92 0 508 604 ; C 109 ; WX 600 ; N m ; B 11 0 593 431 ; C 110 ; WX 600 ; N n ; B 53 0 541 431 ; C 111 ; WX 600 ; N o ; B 72 -16 528 431 ; C 112 ; WX 600 ; N p ; B 22 -186 541 431 ; C 113 ; WX 600 ; N q ; B 63 -186 583 431 ; C 114 ; WX 600 ; N r ; B 84 0 541 427 ; C 115 ; WX 600 ; N s ; B 103 -16 497 431 ; C 116 ; WX 600 ; N t ; B 43 -16 499 563 ; C 117 ; WX 600 ; N u ; B 43 -16 541 417 ; C 118 ; WX 600 ; N v ; B 30 0 570 417 ; C 119 ; WX 600 ; N w ; B 30 0 570 417 ; C 120 ; WX 600 ; N x ; B 51 0 549 417 ; C 121 ; WX 600 ; N y ; B 51 -186 549 417 ; C 122 ; WX 600 ; N z ; B 115 0 489 417 ; C 123 ; WX 600 ; N braceleft ; B 197 -124 403 604 ; C 124 ; WX 600 ; N bar ; B 280 -124 320 604 ; C 125 ; WX 600 ; N braceright ; B 197 -124 403 604 ; C 126 ; WX 600 ; N asciitilde ; B 92 212 508 348 ; C 161 ; WX 600 ; N exclamdown ; B 240 -216 360 417 ; C 162 ; WX 600 ; N cent ; B 113 -13 469 630 ; C 163 ; WX 600 ; N sterling ; B 63 0 520 578 ; C 164 ; WX 600 ; N fraction ; B 50 138 549 470 ; C 165 ; WX 600 ; N yen ; B 51 0 549 563 ; C 166 ; WX 600 ; N florin ; B 87 -93 518 618 ; C 167 ; WX 600 ; N section ; B 66 -62 534 603 ; C 168 ; WX 600 ; N currency ; B 103 95 497 489 ; C 169 ; WX 600 ; N quotesingle ; B 236 315 364 604 ; C 170 ; WX 600 ; N quotedblleft ; B 93 343 507 604 ; C 171 ; WX 600 ; N guillemotleft ; B 63 0 541 417 ; C 172 ; WX 600 ; N guilsinglleft ; B 63 0 312 417 ; C 173 ; WX 600 ; N guilsinglright ; B 293 0 541 417 ; C 174 ; WX 600 ; N fi ; B 10 0 585 624 ; C 175 ; WX 600 ; N fl ; B 10 0 587 604 ; C 177 ; WX 600 ; N endash ; B 72 261 528 302 ; C 178 ; WX 600 ; N dagger ; B 124 -63 476 604 ; C 179 ; WX 600 ; N daggerdbl ; B 124 -62 476 604 ; C 180 ; WX 600 ; N periodcentered ; B 226 217 374 348 ; C 182 ; WX 600 ; N paragraph ; B 79 -62 525 604 ; C 183 ; WX 600 ; N bullet ; B 202 141 398 337 ; C 184 ; WX 600 ; N quotesinglbase ; B 135 -145 340 145 ; C 185 ; WX 600 ; N quotedblbase ; B 93 -116 507 145 ; C 186 ; WX 600 ; N quotedblright ; B 93 343 507 604 ; C 187 ; WX 600 ; N guillemotright ; B 63 0 541 417 ; C 188 ; WX 600 ; N ellipsis ; B 51 -15 549 84 ; C 189 ; WX 600 ; N perthousand ; B 34 -9 564 614 ; C 191 ; WX 600 ; N questiondown ; B 113 -175 466 417 ; C 193 ; WX 600 ; N grave ; B 155 490 320 639 ; C 194 ; WX 600 ; N acute ; B 280 490 445 639 ; C 195 ; WX 600 ; N circumflex ; B 155 490 445 639 ; C 196 ; WX 600 ; N tilde ; B 145 516 455 605 ; C 197 ; WX 600 ; N macron ; B 155 536 445 576 ; C 198 ; WX 600 ; N breve ; B 155 490 445 620 ; C 199 ; WX 600 ; N dotaccent ; B 250 511 350 611 ; C 200 ; WX 600 ; N dieresis ; B 140 511 461 611 ; C 202 ; WX 600 ; N ring ; B 207 480 393 661 ; C 203 ; WX 600 ; N cedilla ; B 210 -173 377 0 ; C 205 ; WX 600 ; N hungarumlaut ; B 155 490 445 633 ; C 206 ; WX 600 ; N ogonek ; B 280 -155 433 0 ; C 207 ; WX 600 ; N caron ; B 155 490 445 639 ; C 208 ; WX 600 ; N emdash ; B 1 261 599 302 ; C 225 ; WX 600 ; N AE ; B 10 0 590 563 ; C 227 ; WX 600 ; N ordfeminine ; B 155 279 447 574 ; C 232 ; WX 600 ; N Lslash ; B 43 0 541 563 ; C 233 ; WX 600 ; N Oslash ; B 40 -43 560 605 ; C 234 ; WX 600 ; N OE ; B 10 0 590 563 ; C 235 ; WX 600 ; N ordmasculine ; B 154 284 448 577 ; C 241 ; WX 600 ; N ae ; B 12 -16 578 431 ; C 245 ; WX 600 ; N dotlessi ; B 92 0 508 417 ; C 248 ; WX 600 ; N lslash ; B 92 0 508 604 ; C 249 ; WX 600 ; N oslash ; B 53 -43 543 458 ; C 250 ; WX 600 ; N oe ; B 12 -16 578 431 ; C 251 ; WX 600 ; N germandbls ; B 43 -16 499 604 ; C -1 ; WX 600 ; N Udieresis ; B 40 -16 560 761 ; C -1 ; WX 600 ; N Uacute ; B 40 -16 560 789 ; C -1 ; WX 600 ; N Scedilla ; B 92 -173 508 576 ; C -1 ; WX 600 ; N Tcaron ; B 72 0 528 789 ; C -1 ; WX 600 ; N Scaron ; B 92 -16 508 789 ; C -1 ; WX 600 ; N Rcaron ; B 43 0 589 789 ; C -1 ; WX 600 ; N Racute ; B 43 0 589 789 ; C -1 ; WX 600 ; N Sacute ; B 92 -16 508 789 ; C -1 ; WX 600 ; N Otilde ; B 51 -16 549 755 ; C -1 ; WX 600 ; N ucircumflex ; B 43 -16 541 639 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 51 -16 549 783 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 40 -16 560 783 ; C -1 ; WX 600 ; N Yacute ; B 51 0 549 789 ; C -1 ; WX 600 ; N Eth ; B 0 0 520 563 ; C -1 ; WX 600 ; N Dcroat ; B 0 0 520 563 ; C -1 ; WX 600 ; N Zacute ; B 103 0 497 789 ; C -1 ; WX 600 ; N Uring ; B 40 -16 560 811 ; C -1 ; WX 600 ; N gbreve ; B 63 -186 562 620 ; C -1 ; WX 600 ; N eogonek ; B 63 -155 520 431 ; C -1 ; WX 600 ; N edotaccent ; B 63 -16 520 611 ; C -1 ; WX 600 ; N ecaron ; B 63 -16 520 639 ; C -1 ; WX 600 ; N Ugrave ; B 40 -16 560 789 ; C -1 ; WX 600 ; N Thorn ; B 43 0 499 563 ; C -1 ; WX 600 ; N eacute ; B 63 -16 520 639 ; C -1 ; WX 600 ; N edieresis ; B 63 -16 520 611 ; C -1 ; WX 600 ; N dcaron ; B 63 -16 650 616 ; C -1 ; WX 600 ; N ccedilla ; B 84 -173 535 431 ; C -1 ; WX 600 ; N ccaron ; B 84 -16 535 639 ; C -1 ; WX 600 ; N cacute ; B 84 -16 535 639 ; C -1 ; WX 600 ; N aogonek ; B 72 -155 556 431 ; C -1 ; WX 600 ; N aring ; B 72 -16 541 661 ; C -1 ; WX 600 ; N atilde ; B 72 -16 541 605 ; C -1 ; WX 600 ; N abreve ; B 72 -16 541 620 ; C -1 ; WX 600 ; N egrave ; B 63 -16 520 639 ; C -1 ; WX 600 ; N agrave ; B 72 -16 541 639 ; C -1 ; WX 600 ; N aacute ; B 72 -16 541 639 ; C -1 ; WX 600 ; N adieresis ; B 72 -16 541 611 ; C -1 ; WX 600 ; N Uogonek ; B 40 -155 560 563 ; C -1 ; WX 600 ; N ugrave ; B 43 -16 541 639 ; C -1 ; WX 600 ; N uacute ; B 43 -16 541 639 ; C -1 ; WX 600 ; N udieresis ; B 43 -16 541 611 ; C -1 ; WX 600 ; N tcaron ; B 43 -16 508 616 ; C -1 ; WX 600 ; N scommaaccent ; B 103 -237 497 431 ; C -1 ; WX 600 ; N Zcaron ; B 103 0 497 789 ; C -1 ; WX 600 ; N ecircumflex ; B 63 -16 520 639 ; C -1 ; WX 600 ; N Ucircumflex ; B 40 -16 560 789 ; C -1 ; WX 600 ; N acircumflex ; B 72 -16 541 639 ; C -1 ; WX 600 ; N Zdotaccent ; B 103 0 497 761 ; C -1 ; WX 600 ; N scaron ; B 103 -16 497 639 ; C -1 ; WX 600 ; N Amacron ; B 9 0 591 726 ; C -1 ; WX 600 ; N sacute ; B 103 -16 497 639 ; C -1 ; WX 600 ; N Tcommaaccent ; B 72 -237 528 563 ; C -1 ; WX 600 ; N Ydieresis ; B 51 0 549 761 ; C -1 ; WX 600 ; N thorn ; B 22 -186 541 590 ; C -1 ; WX 600 ; N Emacron ; B 43 0 520 726 ; C -1 ; WX 600 ; N Ograve ; B 51 -16 549 789 ; C -1 ; WX 600 ; N Oacute ; B 51 -16 549 789 ; C -1 ; WX 600 ; N Odieresis ; B 51 -16 549 761 ; C -1 ; WX 600 ; N Ntilde ; B 22 0 562 755 ; C -1 ; WX 600 ; N Ncaron ; B 22 0 562 789 ; C -1 ; WX 600 ; N Nacute ; B 22 0 562 789 ; C -1 ; WX 600 ; N Lcaron ; B 63 0 541 566 ; C -1 ; WX 600 ; N Lacute ; B 63 0 541 789 ; C -1 ; WX 600 ; N Idotaccent ; B 113 0 487 761 ; C -1 ; WX 600 ; N racute ; B 84 0 541 639 ; C -1 ; WX 600 ; N Icircumflex ; B 113 0 487 789 ; C -1 ; WX 600 ; N ohungarumlaut ; B 72 -16 528 633 ; C -1 ; WX 600 ; N otilde ; B 72 -16 528 605 ; C -1 ; WX 600 ; N Euro ; B 11 -16 534 576 ; C -1 ; WX 600 ; N ocircumflex ; B 72 -16 528 639 ; C -1 ; WX 600 ; N onesuperior ; B 191 259 410 612 ; C -1 ; WX 600 ; N twosuperior ; B 175 259 405 612 ; C -1 ; WX 600 ; N threesuperior ; B 181 251 416 612 ; C -1 ; WX 600 ; N Igrave ; B 113 0 487 789 ; C -1 ; WX 600 ; N Iacute ; B 113 0 487 789 ; C -1 ; WX 600 ; N Imacron ; B 113 0 487 726 ; C -1 ; WX 600 ; N Iogonek ; B 113 -155 500 563 ; C -1 ; WX 600 ; N Idieresis ; B 113 0 487 761 ; C -1 ; WX 600 ; N Gbreve ; B 63 -16 562 770 ; C -1 ; WX 600 ; N Umacron ; B 40 -16 560 726 ; C -1 ; WX 600 ; N Kcommaaccent ; B 43 -237 572 563 ; C -1 ; WX 600 ; N ograve ; B 72 -16 528 639 ; C -1 ; WX 600 ; N Scommaaccent ; B 92 -237 508 576 ; C -1 ; WX 600 ; N Eogonek ; B 43 -155 549 563 ; C -1 ; WX 600 ; N oacute ; B 72 -16 528 639 ; C -1 ; WX 600 ; N Edotaccent ; B 43 0 520 761 ; C -1 ; WX 600 ; N iogonek ; B 92 -155 520 624 ; C -1 ; WX 600 ; N gcommaaccent ; B 63 -186 562 666 ; C -1 ; WX 600 ; N odieresis ; B 72 -16 528 611 ; C -1 ; WX 600 ; N ntilde ; B 53 0 541 605 ; C -1 ; WX 600 ; N ncaron ; B 53 0 541 639 ; C -1 ; WX 600 ; N Ecaron ; B 43 0 520 789 ; C -1 ; WX 600 ; N Ecircumflex ; B 43 0 520 789 ; C -1 ; WX 600 ; N scedilla ; B 103 -173 497 431 ; C -1 ; WX 600 ; N rcaron ; B 84 0 541 639 ; C -1 ; WX 600 ; N Egrave ; B 43 0 520 789 ; C -1 ; WX 600 ; N Eacute ; B 43 0 520 789 ; C -1 ; WX 600 ; N Gcommaaccent ; B 63 -237 562 576 ; C -1 ; WX 600 ; N Rcommaaccent ; B 43 -237 589 563 ; C -1 ; WX 600 ; N Edieresis ; B 43 0 520 761 ; C -1 ; WX 600 ; N nacute ; B 53 0 541 639 ; C -1 ; WX 600 ; N uogonek ; B 43 -155 556 417 ; C -1 ; WX 600 ; N umacron ; B 43 -16 541 576 ; C -1 ; WX 600 ; N Dcaron ; B 43 0 520 789 ; C -1 ; WX 600 ; N lcaron ; B 92 0 508 616 ; C -1 ; WX 600 ; N Ccaron ; B 63 -16 534 789 ; C -1 ; WX 600 ; N Cacute ; B 63 -16 534 789 ; C -1 ; WX 600 ; N Ccedilla ; B 63 -173 534 576 ; C -1 ; WX 600 ; N degree ; B 155 346 445 636 ; C -1 ; WX 600 ; N Aogonek ; B 9 -155 600 563 ; C -1 ; WX 600 ; N minus ; B 72 261 528 302 ; C -1 ; WX 600 ; N multiply ; B 118 100 482 464 ; C -1 ; WX 600 ; N divide ; B 72 25 528 540 ; C -1 ; WX 600 ; N Aring ; B 9 0 591 811 ; C -1 ; WX 600 ; N trademark ; B 4 243 598 563 ; C -1 ; WX 600 ; N rcommaaccent ; B 84 -237 541 427 ; C -1 ; WX 600 ; N lacute ; B 92 0 508 789 ; C -1 ; WX 600 ; N omacron ; B 72 -16 528 576 ; C -1 ; WX 600 ; N Atilde ; B 9 0 591 755 ; C -1 ; WX 600 ; N icircumflex ; B 92 0 508 639 ; C -1 ; WX 600 ; N igrave ; B 92 0 508 639 ; C -1 ; WX 600 ; N ncommaaccent ; B 53 -237 541 431 ; C -1 ; WX 600 ; N lcommaaccent ; B 92 -237 508 604 ; C -1 ; WX 600 ; N plusminus ; B 72 0 528 529 ; C -1 ; WX 600 ; N onehalf ; B 23 0 573 612 ; C -1 ; WX 600 ; N onequarter ; B 16 0 580 612 ; C -1 ; WX 600 ; N threequarters ; B 6 0 580 612 ; C -1 ; WX 600 ; N iacute ; B 92 0 508 639 ; C -1 ; WX 600 ; N Abreve ; B 9 0 591 770 ; C -1 ; WX 600 ; N kcommaaccent ; B 63 -237 541 604 ; C -1 ; WX 600 ; N Omacron ; B 51 -16 549 726 ; C -1 ; WX 600 ; N imacron ; B 92 0 508 576 ; C -1 ; WX 600 ; N emacron ; B 63 -16 520 576 ; C -1 ; WX 600 ; N amacron ; B 72 -16 541 576 ; C -1 ; WX 600 ; N tcommaaccent ; B 43 -237 499 563 ; C -1 ; WX 600 ; N ydieresis ; B 51 -186 549 611 ; C -1 ; WX 600 ; N zdotaccent ; B 115 0 489 611 ; C -1 ; WX 600 ; N zcaron ; B 115 0 489 639 ; C -1 ; WX 600 ; N zacute ; B 115 0 489 639 ; C -1 ; WX 600 ; N yacute ; B 51 -186 549 639 ; C -1 ; WX 600 ; N uhungarumlaut ; B 43 -16 541 633 ; C -1 ; WX 600 ; N eth ; B 72 -17 528 620 ; C -1 ; WX 600 ; N uring ; B 43 -16 541 661 ; C -1 ; WX 600 ; N Ocircumflex ; B 51 -16 549 789 ; C -1 ; WX 600 ; N commaaccent ; B 234 -237 367 -60 ; C -1 ; WX 600 ; N copyright ; B 3 -15 596 578 ; C -1 ; WX 600 ; N registered ; B 3 -15 596 578 ; C -1 ; WX 600 ; N Acircumflex ; B 9 0 591 789 ; C -1 ; WX 600 ; N idieresis ; B 92 0 508 611 ; C -1 ; WX 600 ; N lozenge ; B 89 -11 511 575 ; C -1 ; WX 600 ; N Delta ; B 43 0 557 563 ; C -1 ; WX 600 ; N notequal ; B 51 94 549 464 ; C -1 ; WX 600 ; N radical ; B 27 0 628 699 ; C -1 ; WX 600 ; N Agrave ; B 9 0 591 789 ; C -1 ; WX 600 ; N Aacute ; B 9 0 591 789 ; C -1 ; WX 600 ; N lessequal ; B 53 0 525 535 ; C -1 ; WX 600 ; N greaterequal ; B 59 0 531 535 ; C -1 ; WX 600 ; N logicalnot ; B 72 168 528 438 ; C -1 ; WX 600 ; N summation ; B 113 -127 507 563 ; C -1 ; WX 600 ; N partialdiff ; B 71 -17 529 582 ; C -1 ; WX 600 ; N Ncommaaccent ; B 22 -237 562 563 ; C -1 ; WX 600 ; N dcroat ; B 63 -16 583 604 ; C -1 ; WX 600 ; N brokenbar ; B 280 -124 320 604 ; C -1 ; WX 600 ; N Lcommaaccent ; B 63 -237 541 563 ; C -1 ; WX 600 ; N Adieresis ; B 9 0 591 761 ; C -1 ; WX 600 ; N mu ; B 43 -200 541 417 ; C -1 ; WX 600 ; N .notdef ; B 295 0 295 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -33 KPX A Ccedilla -30 KPX A G -27 KPX A O -27 KPX A Odieresis -27 KPX A Q -28 KPX A T -27 KPX A U -32 KPX A Uacute -32 KPX A Ucircumflex -32 KPX A Udieresis -32 KPX A Ugrave -32 KPX A V -74 KPX A W -12 KPX A Y -28 KPX A a 8 KPX A b 46 KPX A c -19 KPX A ccedilla -15 KPX A comma -39 KPX A d -10 KPX A e -14 KPX A g -23 KPX A guillemotleft -49 KPX A guilsinglleft -49 KPX A hyphen -30 KPX A o -16 KPX A period -67 KPX A q -24 KPX A quotedblright -78 KPX A quoteright -98 KPX A t -26 KPX A u -15 KPX A v -55 KPX A w -19 KPX A y -60 KPX Aacute C -33 KPX Aacute G -27 KPX Aacute O -27 KPX Aacute Q -28 KPX Aacute T -27 KPX Aacute U -32 KPX Aacute V -74 KPX Aacute W -12 KPX Aacute Y -28 KPX Aacute a 8 KPX Aacute b 46 KPX Aacute c -19 KPX Aacute comma -39 KPX Aacute d -10 KPX Aacute e -14 KPX Aacute g -23 KPX Aacute guillemotleft -49 KPX Aacute guilsinglleft -49 KPX Aacute hyphen -30 KPX Aacute o -16 KPX Aacute period -67 KPX Aacute q -24 KPX Aacute quoteright -98 KPX Aacute t -26 KPX Aacute u -15 KPX Aacute v -55 KPX Aacute w -19 KPX Aacute y -60 KPX Acircumflex C -33 KPX Acircumflex G -27 KPX Acircumflex O -27 KPX Acircumflex Q -28 KPX Acircumflex T -27 KPX Acircumflex U -32 KPX Acircumflex V -74 KPX Acircumflex W -12 KPX Acircumflex Y -28 KPX Acircumflex comma -39 KPX Acircumflex period -67 KPX Adieresis C -33 KPX Adieresis G -27 KPX Adieresis O -27 KPX Adieresis Q -28 KPX Adieresis T -27 KPX Adieresis U -32 KPX Adieresis V -74 KPX Adieresis W -12 KPX Adieresis Y -28 KPX Adieresis a 8 KPX Adieresis b 46 KPX Adieresis c -19 KPX Adieresis comma -39 KPX Adieresis d -10 KPX Adieresis g -23 KPX Adieresis guillemotleft -49 KPX Adieresis guilsinglleft -49 KPX Adieresis hyphen -30 KPX Adieresis o -16 KPX Adieresis period -67 KPX Adieresis q -24 KPX Adieresis quotedblright -78 KPX Adieresis quoteright -98 KPX Adieresis t -26 KPX Adieresis u -15 KPX Adieresis v -55 KPX Adieresis w -19 KPX Adieresis y -60 KPX Agrave C -33 KPX Agrave G -27 KPX Agrave O -27 KPX Agrave Q -28 KPX Agrave T -27 KPX Agrave U -32 KPX Agrave V -74 KPX Agrave W -12 KPX Agrave Y -28 KPX Agrave comma -39 KPX Agrave period -67 KPX Aring C -33 KPX Aring G -27 KPX Aring O -27 KPX Aring Q -28 KPX Aring T -27 KPX Aring U -32 KPX Aring V -74 KPX Aring W -12 KPX Aring Y -28 KPX Aring a 8 KPX Aring b 46 KPX Aring c -19 KPX Aring comma -39 KPX Aring d -10 KPX Aring e -14 KPX Aring g -23 KPX Aring guillemotleft -49 KPX Aring guilsinglleft -49 KPX Aring hyphen -30 KPX Aring o -16 KPX Aring period -67 KPX Aring q -24 KPX Aring quotedblright -78 KPX Aring quoteright -98 KPX Aring t -26 KPX Aring u -15 KPX Aring v -55 KPX Aring w -19 KPX Aring y -60 KPX Atilde C -33 KPX Atilde G -27 KPX Atilde O -27 KPX Atilde Q -28 KPX Atilde T -27 KPX Atilde U -32 KPX Atilde V -74 KPX Atilde W -12 KPX Atilde Y -28 KPX Atilde comma -39 KPX Atilde period -67 KPX B A -9 KPX B AE -9 KPX B Aacute -9 KPX B Acircumflex -9 KPX B Adieresis -9 KPX B Aring -9 KPX B Atilde -9 KPX B O -10 KPX B OE 10 KPX B Oacute -10 KPX B Ocircumflex -10 KPX B Odieresis -10 KPX B Ograve -10 KPX B Oslash -8 KPX B V -29 KPX B W -12 KPX B Y -50 KPX C A -9 KPX C AE -9 KPX C Aacute -9 KPX C Adieresis -9 KPX C Aring -9 KPX C H -26 KPX C K -11 KPX C O -21 KPX C Oacute -21 KPX C Odieresis -21 KPX Ccedilla A -5 KPX D A -42 KPX D Aacute -42 KPX D Acircumflex -42 KPX D Adieresis -42 KPX D Agrave -42 KPX D Aring -42 KPX D Atilde -42 KPX D J -31 KPX D T -40 KPX D V -42 KPX D W -17 KPX D X -55 KPX D Y -63 KPX F A -38 KPX F Aacute -38 KPX F Acircumflex -38 KPX F Adieresis -38 KPX F Agrave -38 KPX F Aring -38 KPX F Atilde -38 KPX F J -95 KPX F O -27 KPX F Odieresis -27 KPX F a -47 KPX F aacute -47 KPX F adieresis -43 KPX F ae -20 KPX F aring -47 KPX F comma -168 KPX F e -56 KPX F eacute -56 KPX F hyphen -67 KPX F i -47 KPX F j -54 KPX F o -63 KPX F oacute -63 KPX F odieresis -48 KPX F oe -21 KPX F oslash -63 KPX F period -193 KPX F r -32 KPX F u -1 KPX G A 6 KPX G AE 5 KPX G Aacute 6 KPX G Acircumflex 6 KPX G Adieresis 6 KPX G Agrave 6 KPX G Aring 6 KPX G Atilde 6 KPX G T -25 KPX G V 6 KPX G W 1 KPX G Y -14 KPX J A -7 KPX J AE -16 KPX J Adieresis -7 KPX J Aring -7 KPX K C -42 KPX K G -36 KPX K O -37 KPX K OE -19 KPX K Oacute -37 KPX K Odieresis -37 KPX K S -9 KPX K T -12 KPX K a -1 KPX K adieresis -1 KPX K ae 26 KPX K aring -1 KPX K e -24 KPX K hyphen -61 KPX K o -25 KPX K oacute -25 KPX K odieresis -25 KPX K u -25 KPX K udieresis -25 KPX K y -67 KPX L A 17 KPX L AE 16 KPX L Aacute 17 KPX L Adieresis 17 KPX L Aring 17 KPX L C -11 KPX L Ccedilla -10 KPX L G -10 KPX L O -6 KPX L Oacute -6 KPX L Ocircumflex -6 KPX L Odieresis -6 KPX L Ograve -6 KPX L Otilde -6 KPX L S -24 KPX L T -52 KPX L U -29 KPX L Udieresis -29 KPX L V -66 KPX L W -27 KPX L Y -53 KPX L hyphen 3 KPX L quotedblright -66 KPX L quoteright -73 KPX L u -16 KPX L udieresis -16 KPX L y -45 KPX N A -3 KPX N AE -3 KPX N Aacute -3 KPX N Adieresis -3 KPX N Aring -3 KPX N C -12 KPX N Ccedilla -12 KPX N G -11 KPX N O -9 KPX N Oacute -9 KPX N Odieresis -9 KPX N a -19 KPX N aacute -19 KPX N adieresis -19 KPX N ae 11 KPX N aring -19 KPX N comma -58 KPX N e -6 KPX N eacute -6 KPX N o -10 KPX N oacute -10 KPX N odieresis -10 KPX N oslash -7 KPX N period -83 KPX N u -9 KPX N udieresis -9 KPX O A -27 KPX O AE -26 KPX O Aacute -27 KPX O Adieresis -27 KPX O Aring -27 KPX O T -30 KPX O V -31 KPX O W -5 KPX O X -43 KPX O Y -52 KPX Oacute A -27 KPX Oacute T -30 KPX Oacute V -31 KPX Oacute W -5 KPX Oacute Y -52 KPX Ocircumflex T -30 KPX Ocircumflex V -31 KPX Ocircumflex Y -52 KPX Odieresis A -27 KPX Odieresis T -30 KPX Odieresis V -31 KPX Odieresis W -5 KPX Odieresis X -43 KPX Odieresis Y -52 KPX Ograve T -30 KPX Ograve V -31 KPX Ograve Y -52 KPX Oslash A -26 KPX Otilde T -30 KPX Otilde V -31 KPX Otilde Y -52 KPX P A -79 KPX P AE -76 KPX P Aacute -79 KPX P Adieresis -79 KPX P Aring -79 KPX P J -82 KPX P a -52 KPX P aacute -52 KPX P adieresis -52 KPX P ae -25 KPX P aring -52 KPX P comma -156 KPX P e -42 KPX P eacute -42 KPX P hyphen -46 KPX P o -48 KPX P oacute -48 KPX P odieresis -48 KPX P oe -13 KPX P oslash -48 KPX P period -181 KPX R C -27 KPX R Ccedilla -28 KPX R G -26 KPX R O -25 KPX R OE -4 KPX R Oacute -25 KPX R Odieresis -25 KPX R T -28 KPX R U -32 KPX R Udieresis -32 KPX R V -33 KPX R W -13 KPX R Y -29 KPX R a 7 KPX R aacute 7 KPX R adieresis 7 KPX R ae 35 KPX R aring 7 KPX R e -15 KPX R eacute -15 KPX R hyphen -48 KPX R o -17 KPX R oacute -17 KPX R odieresis -17 KPX R oe 22 KPX R u -11 KPX R uacute -11 KPX R udieresis -11 KPX R y -15 KPX S A -22 KPX S AE -22 KPX S Aacute -22 KPX S Adieresis -22 KPX S Aring -22 KPX S T -42 KPX S V -10 KPX S W -16 KPX S Y -31 KPX S t -18 KPX T A -27 KPX T AE -27 KPX T Aacute -27 KPX T Acircumflex -27 KPX T Adieresis -27 KPX T Agrave -27 KPX T Aring -27 KPX T Atilde -27 KPX T C -29 KPX T G -30 KPX T J -79 KPX T O -29 KPX T OE -7 KPX T Oacute -29 KPX T Ocircumflex -29 KPX T Odieresis -29 KPX T Ograve -29 KPX T Oslash -29 KPX T Otilde -29 KPX T S -43 KPX T V 10 KPX T W 5 KPX T Y -10 KPX T a -60 KPX T ae -33 KPX T c -88 KPX T colon -136 KPX T comma -108 KPX T e -83 KPX T g -92 KPX T guillemotleft -122 KPX T guilsinglleft -122 KPX T hyphen -94 KPX T i -58 KPX T j -80 KPX T o -85 KPX T oslash -54 KPX T period -136 KPX T r -54 KPX T s -63 KPX T semicolon -111 KPX T u -84 KPX T v -93 KPX T w -88 KPX T y -103 KPX U A -18 KPX U AE -27 KPX U Aacute -18 KPX U Acircumflex -18 KPX U Adieresis -18 KPX U Aring -18 KPX U Atilde -18 KPX U comma -76 KPX U m 6 KPX U n -19 KPX U p 0 KPX U period -101 KPX U r -41 KPX Uacute A -18 KPX Uacute comma -76 KPX Uacute m 6 KPX Uacute n -19 KPX Uacute p 0 KPX Uacute period -101 KPX Uacute r -41 KPX Ucircumflex A -18 KPX Udieresis A -18 KPX Udieresis b 25 KPX Udieresis comma -76 KPX Udieresis m 6 KPX Udieresis n -19 KPX Udieresis p 0 KPX Udieresis period -101 KPX Udieresis r -41 KPX Ugrave A -18 KPX V A -3 KPX V AE -12 KPX V Aacute -3 KPX V Acircumflex -3 KPX V Adieresis -3 KPX V Agrave -3 KPX V Aring -3 KPX V Atilde -3 KPX V C -29 KPX V G -31 KPX V O -31 KPX V Oacute -31 KPX V Ocircumflex -31 KPX V Odieresis -31 KPX V Ograve -31 KPX V Oslash -31 KPX V Otilde -31 KPX V S -34 KPX V T 10 KPX V a -60 KPX V ae -33 KPX V colon -124 KPX V comma -129 KPX V e -52 KPX V g -53 KPX V guillemotleft -75 KPX V guilsinglleft -75 KPX V hyphen -43 KPX V i -60 KPX V o -56 KPX V oslash -53 KPX V period -154 KPX V r -46 KPX V semicolon -114 KPX V u -15 KPX V y -19 KPX W A -8 KPX W AE -14 KPX W Aacute -8 KPX W Acircumflex -8 KPX W Adieresis -8 KPX W Agrave -8 KPX W Aring -8 KPX W Atilde -8 KPX W C -8 KPX W G -7 KPX W O -5 KPX W Oacute -5 KPX W Ocircumflex -5 KPX W Odieresis -5 KPX W Ograve -5 KPX W Oslash -2 KPX W Otilde -5 KPX W S -24 KPX W T 5 KPX W a -20 KPX W ae 10 KPX W colon -88 KPX W comma -66 KPX W e -6 KPX W g -7 KPX W guillemotleft -31 KPX W guilsinglleft -31 KPX W hyphen -2 KPX W i -43 KPX W o -10 KPX W oslash -7 KPX W period -90 KPX W r -29 KPX W semicolon -69 KPX W u 2 KPX W y -2 KPX X C -46 KPX X O -43 KPX X Odieresis -43 KPX X Q -44 KPX X a -7 KPX X e -30 KPX X hyphen -75 KPX X o -31 KPX X u -31 KPX X y -53 KPX Y A -24 KPX Y AE -27 KPX Y Aacute -24 KPX Y Acircumflex -24 KPX Y Adieresis -24 KPX Y Agrave -24 KPX Y Aring -24 KPX Y Atilde -24 KPX Y C -51 KPX Y G -52 KPX Y O -53 KPX Y Oacute -53 KPX Y Ocircumflex -53 KPX Y Odieresis -53 KPX Y Ograve -53 KPX Y Oslash -53 KPX Y Otilde -53 KPX Y S -55 KPX Y T -10 KPX Y a -60 KPX Y ae -32 KPX Y colon -135 KPX Y comma -107 KPX Y e -78 KPX Y g -81 KPX Y guillemotleft -115 KPX Y guilsinglleft -115 KPX Y hyphen -91 KPX Y i -57 KPX Y o -83 KPX Y oslash -54 KPX Y p -35 KPX Y period -135 KPX Y semicolon -110 KPX Y u -46 KPX Y v -39 KPX Z v -50 KPX Z y -61 KPX a j -87 KPX a quoteright -56 KPX a v -28 KPX a w -21 KPX a y -38 KPX aacute v -28 KPX aacute w -21 KPX aacute y -38 KPX adieresis v -28 KPX adieresis w -21 KPX adieresis y -38 KPX ae v 21 KPX ae w 21 KPX ae y 10 KPX agrave v -28 KPX agrave w -21 KPX agrave y -38 KPX aring v -28 KPX aring w -21 KPX aring y -38 KPX b v -12 KPX b w 1 KPX b y -22 KPX c h -3 KPX c k -9 KPX comma one -144 KPX comma quotedblright -119 KPX comma quoteright -136 KPX e quoteright -41 KPX e t -29 KPX e v -22 KPX e w -19 KPX e x -2 KPX e y -33 KPX eacute v -22 KPX eacute w -19 KPX eacute y -33 KPX ecircumflex v -22 KPX ecircumflex w -19 KPX ecircumflex y -33 KPX eight four -58 KPX eight one -75 KPX eight seven -68 KPX f a -38 KPX f aacute -38 KPX f adieresis -22 KPX f ae -11 KPX f aring -38 KPX f e -55 KPX f eacute -55 KPX f f -42 KPX f i -36 KPX f j -59 KPX f l -25 KPX f o -62 KPX f oacute -62 KPX f odieresis -27 KPX f oe -20 KPX f oslash -32 KPX f quoteright -56 KPX f s -41 KPX f t -6 KPX five four -52 KPX five one -86 KPX five seven -72 KPX four four -62 KPX four one -66 KPX four seven -93 KPX g a -10 KPX g adieresis -10 KPX g ae 16 KPX g aring -10 KPX g e -4 KPX g eacute -4 KPX g l -33 KPX g oacute -8 KPX g odieresis -8 KPX g r 0 KPX guillemotright A -43 KPX guillemotright AE -39 KPX guillemotright Aacute -43 KPX guillemotright Adieresis -43 KPX guillemotright Aring -43 KPX guillemotright T -121 KPX guillemotright V -71 KPX guillemotright W -29 KPX guillemotright Y -114 KPX guilsinglright A -43 KPX guilsinglright AE -39 KPX guilsinglright Aacute -43 KPX guilsinglright Adieresis -43 KPX guilsinglright Aring -43 KPX guilsinglright T -121 KPX guilsinglright V -71 KPX guilsinglright W -29 KPX guilsinglright Y -114 KPX h quoteright -49 KPX h y -32 KPX hyphen A -26 KPX hyphen AE -20 KPX hyphen Aacute -26 KPX hyphen Adieresis -26 KPX hyphen Aring -26 KPX hyphen T -95 KPX hyphen V -41 KPX hyphen W -1 KPX hyphen Y -92 KPX i T -58 KPX i j -142 KPX k a -6 KPX k aacute -6 KPX k adieresis -6 KPX k ae 21 KPX k aring -6 KPX k comma -53 KPX k e -29 KPX k eacute -29 KPX k g -38 KPX k hyphen -99 KPX k o -30 KPX k oacute -30 KPX k odieresis -30 KPX k period -81 KPX k s -9 KPX k u -3 KPX k udieresis -3 KPX l v -83 KPX l y -93 KPX m p 22 KPX m v 14 KPX m w 15 KPX m y 3 KPX n T -42 KPX n p -5 KPX n quoteright -47 KPX n v -21 KPX n w -12 KPX n y -31 KPX nine four -51 KPX nine one -75 KPX nine seven -66 KPX o T -85 KPX o quoteright -39 KPX o t -22 KPX o v -21 KPX o w -6 KPX o x -26 KPX o y -31 KPX oacute v -21 KPX oacute w -6 KPX oacute y -31 KPX ocircumflex t -22 KPX odieresis t -22 KPX odieresis v -21 KPX odieresis w -6 KPX odieresis x -26 KPX odieresis y -31 KPX ograve v -21 KPX ograve w -6 KPX ograve y -31 KPX one comma -91 KPX one eight -86 KPX one five -67 KPX one four -119 KPX one nine -75 KPX one one -62 KPX one period -119 KPX one seven -141 KPX one six -111 KPX one three -61 KPX one two -47 KPX one zero -94 KPX p t -15 KPX p y -19 KPX period one -119 KPX period quotedblright -108 KPX period quoteright -125 KPX q c -2 KPX q u 42 KPX quotedblbase A -3 KPX quotedblbase AE -3 KPX quotedblbase T -78 KPX quotedblbase V -83 KPX quotedblbase W -23 KPX quotedblbase Y -79 KPX quotedblleft A -59 KPX quotedblleft AE -52 KPX quotedblleft Aacute -59 KPX quotedblleft Adieresis -59 KPX quotedblleft Aring -59 KPX quotedblleft T -37 KPX quotedblleft V -14 KPX quotedblleft W -3 KPX quotedblleft Y -35 KPX quotedblright A -59 KPX quotedblright AE -68 KPX quotedblright Aacute -59 KPX quotedblright Adieresis -59 KPX quotedblright Aring -59 KPX quotedblright T -45 KPX quotedblright V -14 KPX quotedblright W -20 KPX quotedblright Y -35 KPX quoteleft A -80 KPX quoteleft AE -73 KPX quoteleft Aacute -80 KPX quoteleft Adieresis -80 KPX quoteleft Aring -80 KPX quoteleft T -59 KPX quoteleft V -36 KPX quoteleft W -24 KPX quoteleft Y -56 KPX quoteright A -140 KPX quoteright AE -149 KPX quoteright Aacute -140 KPX quoteright Adieresis -140 KPX quoteright Aring -140 KPX quoteright comma -196 KPX quoteright d -126 KPX quoteright o -131 KPX quoteright period -220 KPX quoteright r -145 KPX quoteright s -140 KPX quoteright t -114 KPX quoteright v -108 KPX quoteright w -105 KPX quoteright y -118 KPX r a -20 KPX r aacute -20 KPX r acircumflex -20 KPX r adieresis -20 KPX r ae 7 KPX r agrave -20 KPX r aring -20 KPX r c -24 KPX r ccedilla -28 KPX r colon -81 KPX r comma -97 KPX r d -14 KPX r e -12 KPX r eacute -12 KPX r ecircumflex -12 KPX r egrave -12 KPX r f -18 KPX r g -11 KPX r h -19 KPX r hyphen -120 KPX r i -28 KPX r j -35 KPX r k -29 KPX r l -47 KPX r m 33 KPX r n 6 KPX r o -19 KPX r oacute -19 KPX r ocircumflex -19 KPX r odieresis -19 KPX r oe 18 KPX r ograve -19 KPX r oslash -19 KPX r p 28 KPX r period -125 KPX r q -11 KPX r quoteright -37 KPX r r -13 KPX r s -24 KPX r semicolon -69 KPX r t 17 KPX r u 17 KPX r v 24 KPX r w 24 KPX r x 2 KPX r y 13 KPX r z -19 KPX s quoteright -48 KPX s t -13 KPX seven colon -148 KPX seven comma -140 KPX seven eight -79 KPX seven five -84 KPX seven four -111 KPX seven one -67 KPX seven period -165 KPX seven seven -62 KPX seven six -99 KPX seven three -72 KPX seven two -69 KPX six four -46 KPX six one -61 KPX six seven -48 KPX t S -35 KPX t a -20 KPX t aacute -20 KPX t adieresis -20 KPX t ae 8 KPX t aring -20 KPX t colon -102 KPX t e -37 KPX t eacute -37 KPX t h -7 KPX t o -39 KPX t oacute -39 KPX t odieresis -39 KPX t quoteright -94 KPX t semicolon -80 KPX three four -52 KPX three one -74 KPX three seven -67 KPX two four -92 KPX two one -66 KPX two seven -71 KPX u quoteright -38 KPX v a -6 KPX v aacute -6 KPX v acircumflex -6 KPX v adieresis -6 KPX v ae 20 KPX v agrave -6 KPX v aring -6 KPX v atilde -6 KPX v c -25 KPX v colon -71 KPX v comma -113 KPX v e -13 KPX v eacute -13 KPX v ecircumflex -13 KPX v egrave -13 KPX v g -11 KPX v hyphen -24 KPX v l -82 KPX v o -21 KPX v oacute -21 KPX v odieresis -21 KPX v ograve -21 KPX v oslash -21 KPX v period -139 KPX v s -19 KPX v semicolon -62 KPX w a -6 KPX w aacute -6 KPX w acircumflex -6 KPX w adieresis -6 KPX w ae 20 KPX w agrave -6 KPX w aring -6 KPX w atilde -6 KPX w c -10 KPX w colon -71 KPX w comma -70 KPX w e -1 KPX w eacute -1 KPX w ecircumflex -1 KPX w egrave -1 KPX w g -3 KPX w hyphen 1 KPX w l -50 KPX w o -6 KPX w oacute -6 KPX w odieresis -6 KPX w ograve -6 KPX w oslash -3 KPX w period -95 KPX w s -18 KPX w semicolon -62 KPX x a -2 KPX x c -29 KPX x e -25 KPX x eacute -25 KPX x o -26 KPX x q -30 KPX y a -17 KPX y aacute -17 KPX y acircumflex -17 KPX y adieresis -17 KPX y ae 10 KPX y agrave -17 KPX y aring -17 KPX y atilde -17 KPX y c -35 KPX y colon -81 KPX y comma -117 KPX y e -24 KPX y eacute -24 KPX y ecircumflex -24 KPX y egrave -24 KPX y g -21 KPX y hyphen -24 KPX y l -93 KPX y o -31 KPX y oacute -31 KPX y odieresis -31 KPX y ograve -31 KPX y oslash -31 KPX y period -144 KPX y s -30 KPX y semicolon -72 KPX zero four -58 KPX zero one -81 KPX zero seven -73 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n022003l.pfb0000644000077100007710000013127607260330356015423 0ustar fjffjf00000000000000[%!PS-AdobeFont-1.0: NimbusMonL-Regu 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Mono L Regular) readonly def /FamilyName (Nimbus Mono L) readonly def /Weight (Regular) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /NimbusMonL-Regu def /PaintType 0 def /WMode 0 def /FontBBox {-12 -237 650 811} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020945 def currentdict end currentfile eexec ; `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>j"a\uѐ6ӕ#DPx0z Mt{ƽl\4wWJ0Y) yM.aͨVt*BahdxCē$oULYKdz6WG.&?c+@_@Vgs"ӥyDKP#pb82oY)ǎn?b(%9cxP[EMˢwǔ2u E/܍)/(6ܰ>qPwD?A*ҭ qUFF2f2-D}z'dVmzT镪~,>r xLpp{."B'Qs0""0d{K,}&`eTIGay^/~UQQdqG,`߉کŦ~GE>i+N`WJC(i琍UD5yҌÊ6B 2 (=gWʕSS}P4DS1כ@1 h#dP;̄ tصjvEdeQ+NXjEi nw sVwb?aGxOO^w%eF3q*X%"m'mE*l]e5⧕7ԎVki: ;vn"FZ/[c;Z A0y O16?cULc0@.{ь}u-vM mzmQ w.LXw[)"SEg"Gx)H<-ۧ#nefFHvrɗCȷ}J\I' ]gxݷJdįT"0PRHZ#ҴqTA7Ao\,SmkE(.? ,Q9-/yłz;< UV1=˗+$AsM*Vq-yʹ:ttb]C 4Ϩ =NvyR.ЫN>GN%PMT޷`\NVT}AYXZw oevZiQ/{I{8Ïrܵ_V }=fkgөxuEY=c 9eL5IN=Z5ޝ7` 4=|,&@? بgAA :X:lpMq-/Lj~(;uHPqJ i95V[=|>" ;asQ̀ZѶr{2&DėpRh3YwpsΓ=P[/f'ȕ&f%v||`bkM'Oe({-GmFeVbEp!v{n[gp&?ؑDl3q``wS8,NP8'g/.ZܠMbBwY?-Juџ Ɨ|J#-e &4[xyqF<_iVoqx@UKɐ'!n )5n#C*h.Co>ۋjjKaPvPjCM]j+L_j YKUiq#'37cgeZnKP[S8"6*]+Pȕ)'Z"T 18t`uc%fhRcKXDǓ(l/q b ƞ1mi1.e=pV)k&R&Hǒx c|Mu-bWq-<2ӑxr@t̐+9 }6lwm ,][#ǷÝbM'ܖSSGڀ#_mLb[pV͌mK=lZc6/./WX181o<H>ՋgzY$>ɩHhUHmbt&"';o{^g0%>AXY¾oA[l>dImbz΃H9:ߢ\i\<(@ l2SY\M p˚-{s/Ym PQ4bDp2LCc_1 oTLR,B=F'UzP+%tG7Zc5:[LCi1w80gӬ(9be>,_A\v-.[w(љE:g)[ &j6< (U5WP4G8-H_hu9 MUj߱Y5ѣoDʚTaMFq1 za -ſӞ Ƽ,l:t!`Ĥ˪-m aM~L TPQ30!S6[&Ɖ,Oɛ8CrzhO5%7 1gmT:n=X1سR5(oaրdj& B,a6~mJ ߢUFϲ*}nXg Fߴwb"GvTK;k8_ ti+.%IՇR)`#. yLyAPQ^ðXWCq> ln $Tw6qʣdAU}ͮ4aGTSյ8m!gIOsljOHܟ4wʖ )l-\*ټB>(ܓSRhT;Eq~lIy5(^uDFCZRPz'[d*uإ@8 -rM ks2gU (U/o,eUߩxj)"Ҷ.f] G#|+ u?HW0taFjߌ@OҴᥝhp['x;_&4PЛ= c72V\?=lŌ'+(A6Y$-itz&-b6JnB+yb\06YH5TJ @7M~R,#d'tzai}wv6{/~8e4aiS̶ ",rIyp(($t}a4%!jdc>+0G9 10ȫ3g5{cV^W)E) `x1je VArÀP$s **_fF$IH]d :e.z8Wp`mG9gyW/{*\{K p}7`<'.Ή.jŇ=WYK9xB˳3`|r.]<9M ƔV)jR7R n`i55 +}"J8'@%뵐48qЕj|EfZk>Hf)+y GԔp `d v貲 YLI,%ܧt 'DJ Ǭ` n{l֮m [D'Q&@Nņ07ZG'^W`ku놠^wMnC ?~pt#Ϡ^K"Du.K3~2mu#[X:C K-ő .KqKU!ξbKTxX0v/.4\`&HvZgaYw8n!#O{)Z[Y`$(Q96ޚ%׆L:+B1w !ӎ>F#'D߉o hرNuS:rQ{QOiRa M%1[ydE=J\5r)1aí9զ.x82!bs-8 5waF#ӿ-T>|YphzRܓD`ȐC[4!' wثj0+JD~ell]![B/qmi'swJ9 B NLݜ%DƍN2u,\RˆWFo V5DaqdYz(Knp55P&'q{f+Ω{*5#]lV\` Q[% kbJK~2"/{]OUNMz8bct۔"T riTNt9(pq叴}KyWrZ+ ; 8Aԃg_lfƝ3MwՆ>֣ d L#6kO-J1{V@ٵ}\wuݬAD8zBVI2S7o6tPZE#\TTrB>>o fn3z ]:JEZ2zcR"1% `g)ܨ/øRQriTX/ s>2O|0}V 2p1-Ѩ^H\#PݘQ-o4K,z$1nCtB;C$s~ٕӈ$b&+sg8\Y|~G`;)7Xne7I8 Sw7̅83g7Tf&ÙcU_˙r IMPZcuQUt_{AUks?uϝ\YyvO0n$yAƟ?XqANFc:_x[Ne"Ff傱nϪ8;]L6ƬU|b;@SGm6V$8CYRwdz^ MULW {j (Eݪ~ۓc20k֑K.b;=vOHƻ`rC&v*D{ij>U} oE~`nYτ%6_~TɢWыJ,n uõO_N9, :@(˲m)xcUz>a~/E"y&shRڔDZӕFRρ,GɞP䈞Eu_9bt g7=gͧ,Р}!N wI- SeJ#ʵ(,z6dݬ_}d"$ӊbdDo3K8цi'AMeHFޓ3+nd-`2ys)M9me$H\[BV^YǸraLTccM")e )EoYsX`P^V%lsUVOeCQ.ZV&ߝ0J@.Be_ԃ˻mBlG!?چz 6ip(ί>C߳GjlQ1 mRR/r`fqrt@˜*dMށ=. ]U IgY).FCb׏2B=qTi8h(` ۜYSNz{ ZBj+Xk!V|H9 BLBܷD#$N(it@$6h!$Ѹ) AH'Z%zzɀX>zeeWdRpND4.ǔW$4~5%qapm]۲3ӛٚTXЃ0U,< T:b.p2;o93Po 7^ac>.܄ֈwܣHb倛Д- 1۷ĴF ^ i,GUzWż|ddV@pw(zb"ߑ&-grn"RC4G _XF-sQ'LסnKKh,86ʃ8IpF "Ag/%Nd3T(qEAFJHUBPeɲ@ogVNsYT93" O6q? Zfu" oQiGPu>lSgЊ>~d@m͒ẐI_(fqag4yo pth+pVJQb̅t?LޖkL@4\wl&ipHym~> T?5o#82ыl2>\!ȨLʲ `6nPPcYMیE4W =W2[^ET<>^[H?-$fuXLj\C"Cw%a1&ZA"?&c{8*B܋0W=VǸh$D.5@)Zdq91lεS||Z3}>^jT8Ln3n~yq#͏+X|BVʁhb]BL\5nX "uRxm=B6CuW11e"^r: 3l5E& 0 sNlC֘AYdo ̀#d"FDb?ȍoe?}<\BH#P3UzLo7/Fgv{OkbkU?0~]# DɩzE9V^ &/Wohy:9s`~&]@nnB ]>$۩[D=+;2]`_ Z.ZnS;B‡& bW+/O/B~pY/q;9;VX"y&563*kYI`!݆5.W"qOf|ƍI=-g~ofS} L9)mP[~jڱtUL""9(FtKʞ *CqƾQLOJ~ZEPG\HbOdqپǼq//9= ZH<@O/Pr0H xN_`z{ zƦI 8p_2K498aw"wDN^s5|i~y_MڲgD0IVЅzu#J mk_Fп1LwWRD`)P|6pDNVl=mض%DSSZ~\oE% ݢ)`e %:NSMwI|~9,.a+fUc1Ҧ}ql˪EF-j"TYbݫbq1^]ݖC粯eFA86m5X&mɔ.fUREv&_%i`NX9›/Q\F" Ցz Oܨdf 1sxou¥}?|LD\#rmm458ֹy4)_ -0f˜[ޥ`pF]z?DfU}5K4GR#YE+QuW lv b~:50ДhY<Ąkܩr03ݼK+t4m?_eV*G(DR a݋L u؝dէh[ySڗcYaVU69\`1Z?UC/8CTK|D1 ~3Sr{jc(><4j<{Qp*CvCFçB3~a/AYw0fslSW&Q&|!f&PGG*UEh̛1ʇU9xB D;YxB5 sԯ+Kp<-=>IL`vFK@ ;1N{q2|HAhfLjLtr1w 9ylPbӐOa\\ǣU@$ ʤy)1v=zUy!Re ՜S6{띫{P?b~d_,]]/L%FsE 4=y^j>uCChYJ[ /5 kup9HԹZ+LK\9(U5B WؽT'4(ns n $={+NEGU!3pv1aTc-_sb4_T2>cWAu!NZ>hvE~aᡗ>Djdf\:Ϋ]0eD31΀wz_ݑhĴ뉆m 9 eMxwk6tmk=G>;UShi[ 5?ezb{ׇ,` k؄<nIbΤ 3JG דM,UF?J6Cij%&/T}2:]3ά-7;2/b=iU8TBꟑvi k7 `m-ލqy|^&vemgFXt1!6!5yyf1fH20ys&f'y@Ap@AH!6Od_g,-CZ :,xfɄX&fp9Z1dN]/@)Q\0ftN|g[I[DZ|nGEIPH]FeX$2>*m/O*WX`$PnM=aXc8t`3DcjE}Naiz㕖vfV bU:&30 DJfkVZ[_$`:9vScB=ě*p:Qx'vpFTTH1+z^zV/GPڷrCboRI>'Rdp8wYIXQ{(c2Za]jÕ⢦=j h/ .5{rqn/=b]"h CLDhZ\EvDE e}ԙv~x`?4O(x#[8^6PܑtxQdQ$zρ77"HM# /׿f /1򧵩 T@ 0N_\=K85[maco .vyE#YvϐSTolvOiw2+Y& ]j{zMŕ,//*Wx#O5<xfk(HƄhҀ߫ :L[Khmr#Tl1jnQRGW\ ㅟW)h?`^(Ȯk P""0szDq4ŏBz{bjVFnlGnC!Yo_K2.hE\_<^h%ɂT@ƓP UxXV. 4EcU#T7(e'uNc^]#艁 de/#Dnne*Dx}m6StMt/Xl^2Rj}Vԣ(`&z<^í9T꜄aX`1i蹞S@yL4ZVފgޑy`fߠ!24xf[ F!T*e02Evo˨^TFc=ޯÃMMGUoN)tJs}aSZ‘jر1wQ{s}p7#R*/at#<ÜAu{cg?M9\Mý}5El96lOC\2 su;]ጓ%o%ahDGW'ՅL -ikǏj{"3NǩV7o.ܷx=lU7`^ bri%u[9w22>< UbďP; y hJ|zĚɿ6H(yC9C˿ F܏Y-0+qv&4ϋp ARY2kCzH@FXv/uMdE7 ? Jdx~>."g_ye12ѐ~\.cڻ;.3LcrŤ_LrYL.eCmɟi\ FhSKfGEKE&mXK+@4 q1FC^̈ W Y0n 0%Zz}?:׭c٘ b˜%?)3RoGl޽$:fyf*쀴2F(O +YF ɥ]0/YDh16{0И֝`=kQmBʱM{My?+S -3 x,[)vz& *6=?ҨqtuV򕝧Jc PG$W.Y_!Tq܉uμ>)2+(:p.%v<\{{IӘ(=՟|",XDH޿x~gt"TY!M\hԣ%%g^]%+F#I2uX@XqE?>҂fU:<%Y=,[H74]wD8vhgTѕc૑.+@RV47*SyMLN [{ޓ$!)s8r5vW>̈(/a] ~N8&jEwZ]yG 5xy̽'.X8i*>>W>;f B@H|-f_ZLSe΢@KQ" = =y"]I r\_ԣqK\h9۰ꊈyP.V.[ W-IciC4DK L$Rqp>:\n(p~ɴ/#yosVŊLXXZ%ۮGBt+j_p҉B>b^U T?% -=9[ vhjHAGj{Ĕݽ9k>ϡ.ɯkJ()lXڭ9l֏ZˏewsƜ&>yihAZb94z20 iQf͖d?YrТ+`:aoRVV M]S vo2Ors2D:)K&wZG>v@9Qj=PejŮo Qyw]}p,cܥ[|O\Afk/HO,8{d6n4 /z57:&"Nv< H$aȀ37]Eb[ێ-J wâie8Þ+Z]EJl2"`B:C-be.)7@h ]K{2kBϤ7sE|.B6lHOYc٧S/jFoKpCmvVsEi  ndy z#x 1vyNWD#;JڀbXayEC/T%=C9C)Z<'I +5S͉V1L!|U^ 㚇1H Py6ӿj$%܏ei,# Ɣ J~%$ .u,946=C2Uk^'S=.XB!2<ܰ{EMb)]ف=(O0eCzr.'79%j%PRAsIL#T1cБ/d 6ggT|N֋me2ۛTXG5XT** )¡$&ҬԨثe*fR[:*{W NpuhvS;&>5)zg>iZz%D"ZjPK['dq?zSB9=F;;1H E/1ppbN:^!kd s%)q?Jgy&L5h/'`XE;TNJEy<⺛lw 䍦{vo:7ix+_a1tm[2&צ8H ?lޤ&55LjM&Q Ń,{44D ijz$-{c%tK,nI0rgZ9!dAD8! fz˖1=DHNy*|-Х8/4cvS&[w @b?'CC= *A|P"GZM7A.*E{t~0oyO.B]ZͥG LpiֿY\P[z6mz70J[OZtg^ʌ4Pʻ>o5@Ni 2yW$$\5c1^p+@t2GPṮQU<'Mv>CtRɰA$Lt[/t- `i_> ֥~@z;G/syeRn_yG9wq-(T8Rp9t^Am" ]J*G[T-9O=;-K7#" Akd7,TL.!lR#-϶_f+^.HRQ ^&N9gvK*h @EQ3&aF6G~0>Hμ#Gl? &ƜzJZG-?UTa# ꮟ&nk}(Ջb-`Ui׆KV.K+DJ2 t6QFĎ@-w4w'Ԡ.NE٨}E`GWS|Xf#ק~'wt>s&m% )":;D;5qDj=`>\**ag,/ B&rƵn(:,TiL%)&}f0u懡D"WI{D#BkP9(5E^-~?/_ZEk˱텚Ep6?\HX<۲8qh;Ќ@׿SYnWL xa3lOum2z+Zc VA`[ 52]sW#GC(Ԁ{(1Lc[ɉ!H }m"WXYXMB!70w༈О'#y^<54wn8"|i6-練GXOעJzP!yz=7f︶G*Ĩx$YT*^ZÑKfޯoV /po.HYjeω/2/Vy#F,T{њtjOU`ă۫/(ʹ;=ƨ<̳SJlh8G >ZMK7y'J ^m_ОyQMdz<5\4pM8vZ-ADRDe"apK;_{DMgďƨ6ZisiUWQN+I38iF ĸRpm62=8M,!-,`[„z_8$?OesAeUU(˰ tr{HKYK8o4r{\|@ܶ(Nx/꽷'y+P鷧"_$:]+~3gq0#=O9HE(FKFOIϓ28 vА0Rþ L3ev)J6S!Nw#*vRBUbg65$a' AW* lj0lZP{˿)"܀d sirͲM~tP.i'єdjxrጱ5ܼ\N93?Vڭ.A[ oM\) {[-#LE=NfڸˈYF- |yMih2}V_iofVab!u~@?_,%)T*=|Pӎꭽ]D*aPzF9ݟㅲ 4͐>rC 3C]&r ƵLOnEgE%/ ݄-p[h-AQ  2Arv:ݼXh6/NC=ҟC UE%&`u){ӷ?xѾS;qQ@n3VD4SpN }ɾVF2&AAqѯ!W u {GD n*}p ξئXu<^Hk`B7]$ʫQMfƖ)JeyTCf P +"gob%7g$T{_] 9 ы[!i!"PD6i0)"[9XK rCR` "bVˏQOO:eJEG^km\)w}E%P^yBz~WSR_#Y@7glBStE]U X2{NƓXtF1dT#-ܻ+6>4;q36FL۩3^Bԩ}2g} (G1Tep"݋}a35줩w_`ذmxcGX| .1D0XN Oq*lTD8`J4{u2NpUfcu"ݙ^&]p4jE'G[#I=Fg뗨שs 7QdϽ.\Lq6NLCai#ݹ*ޞ99 n]<$ʻ2RW{ ,0.WOۜVlN_`+Gj1 x.A{63dt&3|_xF j+@'8o0&HY!/jX,'xwѸtjܔ_%f@,_%_?["V1$+uu3E)b[H9?y$[G1nWHN˕g#O. =)(-@ U#M=|ǧfr )ЗVqw*ܴsѺ5W"]P!4IG؆PvۮD?3o-a]~(O3[Ȣkbޖ/RV]eNmP WIfR'vۃp#!\r{.@z&(_k/dINX'W7X˜o2kȵVJi RXiRphe$ңt!Y'(Dצ >1rQrM&-̌e-`b0=XQBn;d2lM܃'qw 6US"/H{}$f3z;Hb20꿩j&P95g3 0E$5D&46iZ;6DUtsR+%,ӑ'33g[j\SYgkq2ZMZuN4?EkdT5"u*fdIJ~Ԛe.Xsvk}`IZaa4⦞YuLc"'rp?osJ^@R}eduK!?v=R^ɲQN2=ɰS4<η1OR ov.zF@/n}X-9 'ay7ܵyQ!hm&‹䤚l5n]tбסdt혔=A.aMNC{o<-9 F=-pVvwc&F䋸27쎁'>O#n'A;2IG`OV ?8WvICd§-MHb6 H]4PᑐhW(2yorqG<؎Sݽ:=X7񚋃:_eZ8hN#,u4J΍jU/c?v9 s3[A!fb?[9)0+&/Ï#YaqqEIv6ST ]Mra7f94R ٜ\۪f7޺J9 QjCPҖTrz1vb71P=12Up2 [ۦs69L~vbK@/XGTkv0ATNZt!/fO\28p4u؁˒O]u.\/xm\˽X'?ds-_DlQA_I1tvFv3x,_ױ>|þ*^z &Y!ENxd.}߳@"4z5gvƒzNMh0O9\42EF)xߕZENc]q1צR f;@ &Fˀ^9KŅ?H̷IC.vÜ6P 4$~]GgQOv<&mI$jW^,&;[O` +gS 0q,>‡ GXM ͮ K;񪸐ζ4g*ؼSXD<rT8g ӏY8sz{^(R XCvVҧZ_,#!<g0y|anh6$6NZprfY{,XNR錐0ZM>C :I.ļ&:roq>M-ͧSYR>vluSXbbdbkp؀m2$+tzg+EgX@O*/1$/l{hQr%,5nẉj|2BviSvVaPQEK/l`U56#Q{d(tCq^N87Of"̎nA_4IY3z݇.wl̸a0S"s!$ 38Sxb`Y,\у@pi.Q CP)łǍݒ寴BNbrOH$UuUj+%G1Ӯ\"˜nY-=}s광 [ X|no]cf"MF %) ybTH30@w>S39Mٛ5mG0"Ʀ`VHݭ{}j!ӖϦ܁RIYJ /fɛHlU,? 3cgjѷf- cwkX vluHr,?ԜTkmt;Cص9BHII]sNZ}0bD{N 9!G|?sxgn%cއݚqW4-MHziO4 < .>&1%h2d~-8% Pء'˨2`c8u{e~j }ӿ>HGQW61 ICc_B\W)ٛrl1#\I1&4VF  3%Ɠ2ڕVPTgEfaŎJO_32*qk,0Hڳ?- #hI\:.!\r6F*)th'):AOXܑpG?5ļ_0 b۬_XXWQ߱iܶV!ʲ{/AU8C^4.5.4H.kL*(NbK`k_u11 -ӲsOË"р>פDԖ ļ(F?Ε =CUC7_|AǨtԟX_f*e &e& Zd[F)?d}* zpq/,o=f,0zH!+']a]( Zc7BNVݦ{ElŽ3vL\beeP`ry7+ $+ PKuIQr!x4|moP%$M}tZl>/d݊gז]`r2Ih>>,3I8P1<..9E Ջ}zC9^` ]KKVvn.pp{p! $8?(ǩ?]Lk|7&U#O =5g䑐vh79:m.]T^5o%mgܜ>t?)JE#;e,gA`?% }6mVt[+Vc r9F$VVeސ%DGAH22cpW;TW}1 DXypax ZNo9$DDf>zY!fR4͐4yޏ4H YB?fl=6(D~OkR,t+:k ,Q=CAAkD-# PL iݪ4LcV28JCI=emV5rY3k[5'.ԐJҳ&AT.DwЇ)g݇Xux' /zܱ/l{ pа,h0 $A:M}P)0vd6%sZ])Q'ks4؎8J ItÓ6jTہSW^6;I&L*qXHE?׷M2Qx]X)[bHkbQ9pvJC&bdi <<x(ձC1fH|`LCF?S;6(noZn/4EIZ6_]hTeJG8JTw.@'QX*f%Hh5՘dB$̐?D\'als3NJŻ/+0'^`dq:3G/fR[HBsnGie['P^̧>`g*d/vΎ*PẀqn} pή(֭"x[_@ɃM8u=OўLiY%b_䨵KE}B:-QAr͒*EF5}1rm =pB/]ՂT{_z[pNk y 2*OqC䲇,Z|xGch-K0bY<0~_TK,<%T @n;U %Hよq8Y+M+W20L>n_ ڇ$x\\2jHk%Vc<5C&mq/߽s(T2lPM.t FT|_v#f8M%:)O(}ĎTSK%Er9Ծم"@ 'QB=n!!o`D:L>2z}9ʋqsI28ʩCl}lal$Y8pفO]mQRi3YFAq;kGh3t]^Nl %;Ǖe{j=ǓPBO_7T2F T5ঘ6Iga$Ѡv ؖg7_g-˫$P-ЋMνH@\7tRo&AAJ G'[ѽ huXsD(rt\l^Ei0J5 KvE8Yo$;rGDn BdDG)F 髽*8R:%x"Q;;,a7 En;_@9U|ERO[?_Qu+IXz% Gete>$g1g=w}:,LV4nXaQ]4ơu'1'9%L# H-;uz] ]{z?Ixe 0 Ù~ݺ'=Რ;3.mJagFJ$%nլNOipPDxOF Y\`}%Nx^öI@Z\#[k,i`C3څ|():wV5*D١9f#EcJwIl?WY})G.5xAk@@uyeC DCoo"KnE[OStM`(0^5)ѸG (KxGwmE`COzѓw`UϩVN #t(Q Ğ>9tna% G̢{-+rɠ|<nn(n4D$_=KLS?V!wlcGFp?U.Sz_}.,;{LVLkFm˞p#׿\]efzay2x `4Rկyx.$:_=9Tg؝hoΡGJI]: >6 p i;9ώCU29 s|S@.EJS?Q0}]wW.OwӐMUfXpµO l]1w| +JC.:M ,˾RfSsAUPk;R|cȍ0"`g/F#Z=Oqԕ ŷ猌 ɔ@&=4<\dwa P$9A dK,ZÏFGg(^y 9=E\KT7ݦ"| K>n9%7՗C9B=G#_#!t8qs-HhY"cq?'ԛ\]Nk dPӮ_({OC 'ʠ>C&UD&}c ՠS^f#=#k5EC9r F, ^˛GœmcS:ގC-MI` '~u?\f1Sx%wCϧ%-yL/^% G:!;Aê?bEFh9Fe-þLuCD3{5AjE?5@PCB9j(q,Z' 5/P&!u)O/xlY'_%=sG35aoQ=,Jp3_@HHs2Gb;%OvEJݞ$ȥx>IQ,=m;9gIh>\r{viBAXu2H^'f" [3)nF<ܭϝ l~?7?WPrrwj,Bi3Zim%ԡỏ;.3}<9`<~Z:W Јt2aSfhybnЉ{ %Z3~%g9ԑ#`c(a켿@D'a퀟"QL[!1ۧ넫-bOXb*xLY,{e ݥ_f>d(ڨ^w6:iy ]!0B/yIbnF{v\hCbQ9_-qRď)NL F^'Q~uZb}XtRz(n}Y湷Ye#i3LDlx ׁz8p6SMhJbzJy q˦Gg*!dl$ow'wPKc%J],^+xx(>l8N'>>H*bB5,,7{ Ni/мPB kM )mm .pzN>6fe?Kd@^&ܞ kv71t SwfI G# SpCj":zKNo:rNcfb!ثJ֓R+?q@+X ZĻ: Q\>>›Z(Qӷ zc/?qRON4gGQG3TX(tK!{jQKˏNBը~9]," qSB rXF:͌ݶkƃk@&Rjul1yO&P罨&δdJ߰Y[qL2]N:s獭,0$bK Dx2ۧ{߭#u7dp$*zVS3F~^Xqg"\A>g(1r#ܼo%/#6.8VGl9iW$% 3n]*fEE#ۋ&n%gF xY6OmA2Ǽ+瑷qܛ7&`}X7S· Rﹲ'|x&$5yDʼnfas쟀,Lc:B3M*HxS ${NR/9" }AMoRՋ4Yy++ &^t.|IÍ<ٹb tZp\ Q"?xP*._vXBhhmY$ dcl{ e y{>g\~6}g^Ԁ $(@ϥsQ^o2lIZ3 mzVEkY51_eέoA0g /5f+E7dO@K*p05$~ǁQ$We$ #̈́y,D0ت =ح  ލ@Z~lݳvܲ7k@:u:8,H`r uZ~f8m4VMnzfY\1gN-\Wdk7췺}AJIs4/9CR_؆"Ɣi$d;6j*,,Qjfj$"K2#9UИsS_L|gzPV5?Y(cox$*@"$_F=C\-hRQqP֨'W6 :7#VAGp=zb XklaC2O>eĔ^!U"Y(6؉)wG%01~Dm^fà> @eIjهBVG5G!0ZƑT![n{_7J_@Pï̫V먛)4=\#>XzgRrK?<(V9H-T)\]&[2ž#7h7&˪: ^l;e|^>d9%yLML` ٔźxcY4+ ܣ2\f˘. 9pHe[,Ȇ_gOp~oZ=ߒ`CQiMnX\9 >I|/p}yiHM({,`*݄9g?0ǿ6n]8\[1;8s',v-Է_"T&B&BLb@]Fʭmm3]ø=C=5<>/r}- )/v^KoRZfWdY6w0(7z0&+xL$:{9b b8v2p!.iIX& [!qYq ڳ&J )hQt]^JN_82Ar ]htUohO1.%o_:Yp..\2tSjFa D CZpQl)BL5<ˮn%ihO04I [U(79S%%7 3_T?3Ss 8b| s4QGePW[.tKCƂ0/t,~]A:]QH&?|}:0&|kH7랓6g<逨RIW`g͛*#b̦V4EJnCZ3&$ 0L脕6>7'pˡmQ:M2\yf' {"qF>7{K黡̺|e;:a:q޾<~uN_IwcӈR'QNQȒ;?Lc)ŷ(MD z/knP>*d+kE%}Sdqx%AavzN1إILbd y=zN%[%57t$f "VI$7YUIƿɆ_R[5=' )]%My}K*.h#XίJ`L ([ nM7.4;|tHC{o'фfPXy1 .j8A{5Q :R)I ~.*Wwǒ )KEVEm#V/?ܓyG` <&ur-zy$^/RI,X3(ܦ,E\`ł9-bMWU""̠m8{7>2†Lch5 7(7`QZ[ fĊ">\ֽɃ0P}Nۈ1 kyqmxwXؤLl3An <{_[PSKGw‹-Ǯ 󤟟;͎F\?G֋] bV="> lj,OulSpm#7,Ur;kL<虎O@3ڥ-(MpAyE`qõ%`Ǩ=A:w^QtAl+PÍ&yEBi .uK=Gۊb5w7yWqbmk>c0YuGxL!`rvȵ]07X!0 `K$ǯz;~g QP\Ǽ+4 /X $R2 &L|,E<-"E]ű>Rm}1 .!+.D,Nʇ&'r*T+nu *j艋y<|5/iǪa]Juhӵ}n4$"h tՈyc9xdEz>Tti y<'Psp}HӘN9ƓHmGx`z(re|qp9:d[q8國7AaTB9׿5qy P-ϑ2UYCvQL nPh&@ Zo<Ǽ_ "|96dݚK]p-:_+\Y5ɯB +Y;I9CBM)6$p!ӗC3SLFhO&7]r&8>28vnn] k)Y{*~V^B44-G  !41/X`6KG =q~#(=YlDn6DϛrHPW('(>sxk󕳖F1WcYv_8VM%m(ZkxD{سJJ)8r>'o痣%[%̕zmX40]|Q7N;38#A qS<V ĤKEoe J&KUK:\iV8Cg%Bd='w`J{nwz0|sxr6 VQ>uϥ|Fg$m|͉Q6~{ RKv|LbG>R{~)EL]W_ Nu\ TRiǭG %zuw<`{tݬ諯S<{DL!LBxQBuv΁LXxÍ!YٲQ"EWF{a@Pũ'0S5-rXqLWb\m-wQ{z"J,jd}cv퀮AuNI=Z3g 4W:m-MWjwqRu!ќ RfؿÃtvg@ޕRX1(j$ E_9f 0{`8{ >6䴡9ŭN1jt )]gX, 7BƱyvc;Z2is{Y1}Uwm`h,D_lobm&\g*cIԎIv!z~TINB2/c/~sT*>р1k)/( ,${WhX:2t81.i C,NQdw(n>DZE.f6_i:SS/ ĘPB֍512MU!O\ɠξ_2?K8 RHZ΅O)oZacBt܉4RS:}g)$A/s`ɲSO>$\I2.IrbGU f~G?6J>z+y<˰ߟI1T/GYŸE.>VT1i ^R:nS)J=0}fpUPX$i`hE!-R5]@$gakZ Z6I2 ﰖF^-NH#٢_l ̀IAe-5Ami> 0Xϭǔ!|I%:CyYm&ci>HNވU[`b_{;]K#u8[-FzxrÖM|cCt-_Ɛ07k`^:J@Ѵ_$|d|,mF}_~BI0تaRd*2Yc#kPesͽ|R}F3++݌ٗ(*/l9B-x79w]bJ %[WnZ2>xN1JOXCybBT^"-C{ "2+"\&uGyRҬ*'/+i}"+ _3"/o <0>.!fl T=7piUc$RΌPO0˿$XJjӧo[,.!6Jǥv!ވԊ9yNɚ37}*ޕO&w?9BЖ9Q B kdb^{hnJi­DIPon6Ann`\g`·Gj- bWh9G̎Jܿݢ(hGha|Zg9gD۪܃c9C]˞dGN{4&𫐇@F5X#kqiIPhAʾGK ;Hv/5τGaү5Bj՛~UzuUЄhL,tu4{V5xe&F[4?I7ʟ;׍ò%˙j%'Wt`9}C "yKdv,t(WmlO#!aL*,.{qDׂUS%"pm-DZi̴^DQ)[#Ӎ:;ZLGkNE6S.FC8lHL+~5yMxh.`fH~_TA8 i@]Fzt`܁ԃ%iYփ?Np6sd"=Bdpou?H²d}TLvV qtYᆝHoB\Uk&=L?qos2V% \$ԟ[7&.!l,fZ1X\MyʧZ+kV .3F<32}[W#H/ׂ}#nmMp\dɤjOX=Ot: DD8r깜U'h9do(RX!2BsI_i_,V-Tk(aMP![ {m dk -VB/7v@)>3x6I\d(-I>e%Qc0>*ޢ* ?@ SvЙ&jYo}.?χsv@< ʮ͝d|O0lRTyZ6˽Иw(^UyHSbh+f>1>Dj2 [~ŔB*6+j?Dt+x2fgu]&r@ ;lX9]8R~,V?}[P)>OOWI?- ~Rdbe#˱]b3ýot4d[$5͝~H堜bKD/ 蛟znr(C', DeٝeT'SӢB9GTz71Hpx0`y  vNB\Q 'SKpN6ȰAIh0/[c Q֯pīF/v?ὥJ'r󢆑Ub&oϤ).V:c"~wMC[EhJׇ3In>&٪{OwJ&}fz0{<0ݜ;+ k h=ls{lŊ%`┭,s ن59:Cō)t+EaӬ=5b7^P#_ f!w*_N"O4=~J4. Ɨc ӗwY Kk8DlyM+rM[97;h,w-h`j&A{Tr&Hؓ jmq/ um'3;Pbš ?~` @ZrYd%>L[kF1;5OЄgA&͖-h6ߺp>d]%:rC["*ŭ̎?%Avqs]R*kG27 f8ecՆI8 1B!n方޲"o4N`(L/> wϡG5pb#n*]LvzF/ T\;mv/2־XgşG$@PNíLxoNQEY$6(O)R_p݋9;o4?" ZqhMA;[rO$ɩ@1I! $8_N}.tqVQBHL>'SzV\/k4;%r \PH3$шgf:9;Nm=R,'0f,uX#_u1=m| ۊ W=CbS)\QCfTxzK`m}  T~._S\7,z[>nFnu[hILq%GKtܷ]_E5df!9;At O(٭oobLoɌCUٹ|T冑!ab-C& *C!PeF=W?6yc)dJS(&ǒ^8̨+䏺*}nV<#`r}g ;isglSs.,$JNx&Y=dHHX.T`[dW?,^d Ӏ)F.~YN08]F΅4BMq rW; Jsv>/ӿwIy; %3al$Մ䠈 )Qء;g 6Gì(AJk:+lsxQo#R1lF{`H[DwntKuZdX1 L$1â[oTtj`-3zXms:it?ai,naV nZ089a'd{ք,ˋ)6%M1Ru8U9HsBtqE*XbEdb] "`!קqF5N_ J+s:o G1ļo"]e#"06:ڕy @jm[g 0:;F'~"u9oN)ix[,hp;% '+p.xOL`Nk-Q&QaOal_nRo헠ۈ22ɶ"`{<O =S͒Dk 0fPmws-eFV 1 9k*ᴩ%!#Oz'ϤB[EFRoAw+> ?b8L_$LVA/7H@4vPo=2[|pX,ՈYK:>%[a:m8j^F𚈈7QeVF"z< 3!$)w]0VMG,lrM٢|Ұ'KѤJSOG$Z4?/'u9rg{U#v<9I5/y@%Nj/p"bacYt$Smݶic\KglK ձIfbCj! HGJ[huN( R &Mi!KE!G':ݻJi~dH͛/R0XX?W2p1mEi<-5҉$+4 @+ݗpX^-">_߯*s_9OUuy"fNᝦ#\FD gF<ǘCl`O͏r8% 65* $ ]0 ?"vvfܚr E jaudǖlD='#p RAlSd9>F ~I dҰ?ڠc~p\eR;/#炜~Kɀ:MS9krhZV^48Q&RČ",$DT;5.~ͦGstBD8-[bl?_%ݟ^HE3u%W!Цgm$iM9d= z+UyOUb+׸&IFJ[FRNt&W9N9Y}x~YU" *K-&qr>?R9^fJ/uQbߝ8]L|`$30K _hgZw,SY~x)=T}<<s_NU%]c}n+(f:ZkPDK=V`2Igg6|}Mas"]~LiMVU%+uOg)Yn! uݏdSm+;HH_dms.,&{ ʘRoOۆ,^k9/(oE%5?Sj-WlF2pʔbHGRμUp!A(0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/n022004l.afm0000644000077100007710000007604307260330357015421 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusMonL-Bold FullName Nimbus Mono L Bold FamilyName Nimbus Mono L Weight Bold ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -100 UnderlineThickness 50 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -43 -278 681 871 CapHeight 583 XHeight 437 Descender -205 Ascender 624 StartCharMetrics 316 C 32 ; WX 600 ; N space ; B 375 0 375 0 ; C 33 ; WX 600 ; N exclam ; B 220 -15 381 638 ; C 34 ; WX 600 ; N quotedbl ; B 136 312 464 602 ; C 35 ; WX 600 ; N numbersign ; B 62 -92 538 675 ; C 36 ; WX 600 ; N dollar ; B 83 -123 517 684 ; C 37 ; WX 600 ; N percent ; B 80 -15 521 617 ; C 38 ; WX 600 ; N ampersand ; B 75 -14 508 550 ; C 39 ; WX 600 ; N quoteright ; B 147 331 351 623 ; C 40 ; WX 600 ; N parenleft ; B 264 -153 488 632 ; C 41 ; WX 600 ; N parenright ; B 117 -153 341 632 ; C 42 ; WX 600 ; N asterisk ; B 83 208 517 622 ; C 43 ; WX 600 ; N plus ; B 42 0 558 560 ; C 44 ; WX 600 ; N comma ; B 147 -158 351 134 ; C 45 ; WX 600 ; N hyphen ; B 42 229 558 329 ; C 46 ; WX 600 ; N period ; B 225 -15 375 117 ; C 47 ; WX 600 ; N slash ; B 83 -113 517 695 ; C 48 ; WX 600 ; N zero ; B 83 -15 517 638 ; C 49 ; WX 600 ; N one ; B 83 0 517 638 ; C 50 ; WX 600 ; N two ; B 54 0 508 638 ; C 51 ; WX 600 ; N three ; B 66 -15 529 638 ; C 52 ; WX 600 ; N four ; B 75 0 508 622 ; C 53 ; WX 600 ; N five ; B 66 -15 529 622 ; C 54 ; WX 600 ; N six ; B 105 -15 540 638 ; C 55 ; WX 600 ; N seven ; B 75 -1 508 622 ; C 56 ; WX 600 ; N eight ; B 83 -15 517 638 ; C 57 ; WX 600 ; N nine ; B 106 -15 541 638 ; C 58 ; WX 600 ; N colon ; B 225 -15 375 437 ; C 59 ; WX 600 ; N semicolon ; B 147 -158 351 437 ; C 60 ; WX 600 ; N less ; B 42 54 544 501 ; C 61 ; WX 600 ; N equal ; B 42 138 558 422 ; C 62 ; WX 600 ; N greater ; B 56 53 558 500 ; C 63 ; WX 600 ; N question ; B 104 -15 517 598 ; C 64 ; WX 600 ; N at ; B 76 -152 509 620 ; C 65 ; WX 600 ; N A ; B -21 0 621 583 ; C 66 ; WX 600 ; N B ; B 13 0 571 583 ; C 67 ; WX 600 ; N C ; B 33 -14 564 597 ; C 68 ; WX 600 ; N D ; B 13 0 550 583 ; C 69 ; WX 600 ; N E ; B 13 0 550 583 ; C 70 ; WX 600 ; N F ; B 13 0 550 583 ; C 71 ; WX 600 ; N G ; B 33 -14 592 597 ; C 72 ; WX 600 ; N H ; B 23 0 581 583 ; C 73 ; WX 600 ; N I ; B 83 0 517 583 ; C 74 ; WX 600 ; N J ; B 54 -14 613 583 ; C 75 ; WX 600 ; N K ; B 13 0 602 583 ; C 76 ; WX 600 ; N L ; B 33 0 571 583 ; C 77 ; WX 600 ; N M ; B -19 0 623 584 ; C 78 ; WX 600 ; N N ; B -8 0 592 583 ; C 79 ; WX 600 ; N O ; B 21 -14 579 597 ; C 80 ; WX 600 ; N P ; B 13 0 529 583 ; C 81 ; WX 600 ; N Q ; B 21 -145 579 597 ; C 82 ; WX 600 ; N R ; B 13 0 619 583 ; C 83 ; WX 600 ; N S ; B 62 -14 538 597 ; C 84 ; WX 600 ; N T ; B 42 0 558 583 ; C 85 ; WX 600 ; N U ; B 10 -14 590 583 ; C 86 ; WX 600 ; N V ; B -21 0 621 583 ; C 87 ; WX 600 ; N W ; B -10 0 610 583 ; C 88 ; WX 600 ; N X ; B 10 0 590 583 ; C 89 ; WX 600 ; N Y ; B 21 0 579 583 ; C 90 ; WX 600 ; N Z ; B 73 0 527 583 ; C 91 ; WX 600 ; N bracketleft ; B 250 -148 475 627 ; C 92 ; WX 600 ; N backslash ; B 83 -113 517 695 ; C 93 ; WX 600 ; N bracketright ; B 125 -148 350 627 ; C 94 ; WX 600 ; N asciicircum ; B 83 325 517 652 ; C 95 ; WX 600 ; N underscore ; B -12 -125 612 -75 ; C 96 ; WX 600 ; N quoteleft ; B 249 348 453 602 ; C 97 ; WX 600 ; N a ; B 42 -16 571 450 ; C 98 ; WX 600 ; N b ; B -8 -14 571 624 ; C 99 ; WX 600 ; N c ; B 54 -16 565 450 ; C 100 ; WX 600 ; N d ; B 33 -14 613 624 ; C 101 ; WX 600 ; N e ; B 33 -16 550 450 ; C 102 ; WX 600 ; N f ; B 75 0 571 623 ; C 103 ; WX 600 ; N g ; B 33 -205 592 451 ; C 104 ; WX 600 ; N h ; B 13 0 581 624 ; C 105 ; WX 600 ; N i ; B 62 0 538 623 ; C 106 ; WX 600 ; N j ; B 117 -205 488 623 ; C 107 ; WX 600 ; N k ; B 33 0 571 624 ; C 108 ; WX 600 ; N l ; B 62 0 538 624 ; C 109 ; WX 600 ; N m ; B -19 0 623 450 ; C 110 ; WX 600 ; N n ; B 23 0 571 450 ; C 111 ; WX 600 ; N o ; B 42 -16 558 450 ; C 112 ; WX 600 ; N p ; B -8 -205 571 450 ; C 113 ; WX 600 ; N q ; B 33 -205 613 450 ; C 114 ; WX 600 ; N r ; B 54 0 571 449 ; C 115 ; WX 600 ; N s ; B 73 -16 527 450 ; C 116 ; WX 600 ; N t ; B 13 -16 529 591 ; C 117 ; WX 600 ; N u ; B 13 -13 571 437 ; C 118 ; WX 600 ; N v ; B 0 0 600 437 ; C 119 ; WX 600 ; N w ; B 0 0 600 437 ; C 120 ; WX 600 ; N x ; B 21 0 579 437 ; C 121 ; WX 600 ; N y ; B 21 -205 579 437 ; C 122 ; WX 600 ; N z ; B 85 0 519 437 ; C 123 ; WX 600 ; N braceleft ; B 167 -153 433 623 ; C 124 ; WX 600 ; N bar ; B 250 -153 350 622 ; C 125 ; WX 600 ; N braceright ; B 167 -153 433 623 ; C 126 ; WX 600 ; N asciitilde ; B 62 179 538 385 ; C 161 ; WX 600 ; N exclamdown ; B 220 -227 381 426 ; C 162 ; WX 600 ; N cent ; B 83 -44 499 661 ; C 163 ; WX 600 ; N sterling ; B 33 0 550 598 ; C 164 ; WX 600 ; N fraction ; B 21 102 580 500 ; C 165 ; WX 600 ; N yen ; B 21 0 579 580 ; C 166 ; WX 600 ; N florin ; B 57 -123 548 638 ; C 167 ; WX 600 ; N section ; B 36 -170 564 583 ; C 168 ; WX 600 ; N currency ; B 73 64 527 519 ; C 169 ; WX 600 ; N quotesingle ; B 236 312 364 602 ; C 170 ; WX 600 ; N quotedblleft ; B 98 348 502 602 ; C 171 ; WX 600 ; N guillemotleft ; B 33 20 571 415 ; C 172 ; WX 600 ; N guilsinglleft ; B 33 20 342 415 ; C 173 ; WX 600 ; N guilsinglright ; B 263 20 571 415 ; C 174 ; WX 600 ; N fi ; B -14 0 619 624 ; C 175 ; WX 600 ; N fl ; B -17 0 617 623 ; C 177 ; WX 600 ; N endash ; B 42 229 558 329 ; C 178 ; WX 600 ; N dagger ; B 94 -92 506 622 ; C 179 ; WX 600 ; N daggerdbl ; B 94 -92 506 622 ; C 180 ; WX 600 ; N periodcentered ; B 225 214 375 346 ; C 182 ; WX 600 ; N paragraph ; B 49 -174 558 583 ; C 183 ; WX 600 ; N bullet ; B 150 154 449 453 ; C 184 ; WX 600 ; N quotesinglbase ; B 147 -158 351 134 ; C 185 ; WX 600 ; N quotedblbase ; B 87 -120 491 134 ; C 186 ; WX 600 ; N quotedblright ; B 87 348 491 602 ; C 187 ; WX 600 ; N guillemotright ; B 33 20 571 415 ; C 188 ; WX 600 ; N ellipsis ; B 25 -15 575 117 ; C 189 ; WX 600 ; N perthousand ; B 0 0 600 618 ; C 191 ; WX 600 ; N questiondown ; B 83 -227 496 386 ; C 193 ; WX 600 ; N grave ; B 125 496 350 696 ; C 194 ; WX 600 ; N acute ; B 250 496 475 696 ; C 195 ; WX 600 ; N circumflex ; B 125 497 476 696 ; C 196 ; WX 600 ; N tilde ; B 115 523 485 656 ; C 197 ; WX 600 ; N macron ; B 125 546 475 626 ; C 198 ; WX 600 ; N breve ; B 125 503 475 687 ; C 199 ; WX 600 ; N dotaccent ; B 240 534 360 654 ; C 200 ; WX 600 ; N dieresis ; B 136 534 464 654 ; C 202 ; WX 600 ; N ring ; B 177 486 423 727 ; C 203 ; WX 600 ; N cedilla ; B 180 -229 407 0 ; C 205 ; WX 600 ; N hungarumlaut ; B 125 496 475 694 ; C 206 ; WX 600 ; N ogonek ; B 250 -208 463 0 ; C 207 ; WX 600 ; N caron ; B 125 497 476 696 ; C 208 ; WX 600 ; N emdash ; B -29 229 629 329 ; C 225 ; WX 600 ; N AE ; B -20 0 614 583 ; C 227 ; WX 600 ; N ordfeminine ; B 118 182 489 595 ; C 232 ; WX 600 ; N Lslash ; B 12 0 571 583 ; C 233 ; WX 600 ; N Oslash ; B 9 -70 590 638 ; C 234 ; WX 600 ; N OE ; B -20 0 612 583 ; C 235 ; WX 600 ; N ordmasculine ; B 122 182 480 595 ; C 241 ; WX 600 ; N ae ; B -13 -16 612 450 ; C 245 ; WX 600 ; N dotlessi ; B 62 0 538 437 ; C 248 ; WX 600 ; N lslash ; B 62 0 538 624 ; C 249 ; WX 600 ; N oslash ; B 23 -70 573 494 ; C 250 ; WX 600 ; N oe ; B -11 -16 613 450 ; C 251 ; WX 600 ; N germandbls ; B 13 -16 529 623 ; C -1 ; WX 600 ; N Udieresis ; B 10 -14 590 798 ; C -1 ; WX 600 ; N Uacute ; B 10 -14 590 839 ; C -1 ; WX 600 ; N Scedilla ; B 62 -229 538 597 ; C -1 ; WX 600 ; N Tcaron ; B 42 0 558 839 ; C -1 ; WX 600 ; N Scaron ; B 62 -14 538 839 ; C -1 ; WX 600 ; N Rcaron ; B 13 0 619 839 ; C -1 ; WX 600 ; N Racute ; B 13 0 619 839 ; C -1 ; WX 600 ; N Sacute ; B 62 -14 538 839 ; C -1 ; WX 600 ; N Otilde ; B 21 -14 579 799 ; C -1 ; WX 600 ; N ucircumflex ; B 13 -13 571 696 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 21 -14 579 838 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 10 -14 590 838 ; C -1 ; WX 600 ; N Yacute ; B 21 0 579 839 ; C -1 ; WX 600 ; N Eth ; B 0 0 550 583 ; C -1 ; WX 600 ; N Dcroat ; B 0 0 550 583 ; C -1 ; WX 600 ; N Zacute ; B 73 0 527 839 ; C -1 ; WX 600 ; N Uring ; B 10 -14 590 871 ; C -1 ; WX 600 ; N gbreve ; B 33 -205 592 687 ; C -1 ; WX 600 ; N eogonek ; B 33 -208 550 450 ; C -1 ; WX 600 ; N edotaccent ; B 33 -16 550 654 ; C -1 ; WX 600 ; N ecaron ; B 33 -16 550 696 ; C -1 ; WX 600 ; N Ugrave ; B 10 -14 590 839 ; C -1 ; WX 600 ; N Thorn ; B 14 0 523 583 ; C -1 ; WX 600 ; N eacute ; B 33 -16 550 696 ; C -1 ; WX 600 ; N edieresis ; B 33 -16 550 654 ; C -1 ; WX 600 ; N dcaron ; B 33 -14 681 637 ; C -1 ; WX 600 ; N ccedilla ; B 54 -229 565 450 ; C -1 ; WX 600 ; N ccaron ; B 54 -16 565 696 ; C -1 ; WX 600 ; N cacute ; B 54 -16 565 696 ; C -1 ; WX 600 ; N aogonek ; B 42 -208 580 450 ; C -1 ; WX 600 ; N aring ; B 42 -16 571 727 ; C -1 ; WX 600 ; N atilde ; B 42 -16 571 656 ; C -1 ; WX 600 ; N abreve ; B 42 -16 571 687 ; C -1 ; WX 600 ; N egrave ; B 33 -16 550 696 ; C -1 ; WX 600 ; N agrave ; B 42 -16 571 696 ; C -1 ; WX 600 ; N aacute ; B 42 -16 571 696 ; C -1 ; WX 600 ; N adieresis ; B 42 -16 571 654 ; C -1 ; WX 600 ; N Uogonek ; B 10 -208 590 583 ; C -1 ; WX 600 ; N ugrave ; B 13 -13 571 696 ; C -1 ; WX 600 ; N uacute ; B 13 -13 571 696 ; C -1 ; WX 600 ; N udieresis ; B 13 -13 571 654 ; C -1 ; WX 600 ; N tcaron ; B 13 -16 530 637 ; C -1 ; WX 600 ; N scommaaccent ; B 73 -278 527 450 ; C -1 ; WX 600 ; N Zcaron ; B 73 0 527 839 ; C -1 ; WX 600 ; N ecircumflex ; B 33 -16 550 696 ; C -1 ; WX 600 ; N Ucircumflex ; B 10 -14 590 839 ; C -1 ; WX 600 ; N acircumflex ; B 42 -16 571 696 ; C -1 ; WX 600 ; N Zdotaccent ; B 73 0 527 798 ; C -1 ; WX 600 ; N scaron ; B 73 -16 527 696 ; C -1 ; WX 600 ; N Amacron ; B -21 0 621 769 ; C -1 ; WX 600 ; N sacute ; B 73 -16 527 696 ; C -1 ; WX 600 ; N Tcommaaccent ; B 42 -278 558 583 ; C -1 ; WX 600 ; N Ydieresis ; B 21 0 579 798 ; C -1 ; WX 600 ; N thorn ; B -8 -205 571 624 ; C -1 ; WX 600 ; N Emacron ; B 13 0 550 769 ; C -1 ; WX 600 ; N Ograve ; B 21 -14 579 839 ; C -1 ; WX 600 ; N Oacute ; B 21 -14 579 839 ; C -1 ; WX 600 ; N Odieresis ; B 21 -14 579 798 ; C -1 ; WX 600 ; N Ntilde ; B -8 0 592 799 ; C -1 ; WX 600 ; N Ncaron ; B -8 0 592 839 ; C -1 ; WX 600 ; N Nacute ; B -8 0 592 839 ; C -1 ; WX 600 ; N Lcaron ; B 33 0 571 598 ; C -1 ; WX 600 ; N Lacute ; B 33 0 571 839 ; C -1 ; WX 600 ; N Idotaccent ; B 83 0 517 798 ; C -1 ; WX 600 ; N racute ; B 54 0 571 696 ; C -1 ; WX 600 ; N Icircumflex ; B 83 0 517 839 ; C -1 ; WX 600 ; N ohungarumlaut ; B 42 -16 558 694 ; C -1 ; WX 600 ; N otilde ; B 42 -16 558 656 ; C -1 ; WX 600 ; N Euro ; B 4 -14 538 597 ; C -1 ; WX 600 ; N ocircumflex ; B 42 -16 558 696 ; C -1 ; WX 600 ; N onesuperior ; B 166 247 434 638 ; C -1 ; WX 600 ; N twosuperior ; B 149 247 429 637 ; C -1 ; WX 600 ; N threesuperior ; B 157 238 442 637 ; C -1 ; WX 600 ; N Igrave ; B 83 0 517 839 ; C -1 ; WX 600 ; N Iacute ; B 83 0 517 839 ; C -1 ; WX 600 ; N Imacron ; B 83 0 517 769 ; C -1 ; WX 600 ; N Iogonek ; B 83 -208 517 583 ; C -1 ; WX 600 ; N Idieresis ; B 83 0 517 798 ; C -1 ; WX 600 ; N Gbreve ; B 33 -14 592 831 ; C -1 ; WX 600 ; N Umacron ; B 10 -14 590 769 ; C -1 ; WX 600 ; N Kcommaaccent ; B 13 -278 602 583 ; C -1 ; WX 600 ; N ograve ; B 42 -16 558 696 ; C -1 ; WX 600 ; N Scommaaccent ; B 62 -278 538 597 ; C -1 ; WX 600 ; N Eogonek ; B 13 -208 587 583 ; C -1 ; WX 600 ; N oacute ; B 42 -16 558 696 ; C -1 ; WX 600 ; N Edotaccent ; B 13 0 550 798 ; C -1 ; WX 600 ; N iogonek ; B 62 -208 540 623 ; C -1 ; WX 600 ; N gcommaaccent ; B 33 -205 592 721 ; C -1 ; WX 600 ; N odieresis ; B 42 -16 558 654 ; C -1 ; WX 600 ; N ntilde ; B 23 0 571 656 ; C -1 ; WX 600 ; N ncaron ; B 23 0 571 696 ; C -1 ; WX 600 ; N Ecaron ; B 13 0 550 839 ; C -1 ; WX 600 ; N Ecircumflex ; B 13 0 550 839 ; C -1 ; WX 600 ; N scedilla ; B 73 -229 527 450 ; C -1 ; WX 600 ; N rcaron ; B 54 0 571 696 ; C -1 ; WX 600 ; N Egrave ; B 13 0 550 839 ; C -1 ; WX 600 ; N Eacute ; B 13 0 550 839 ; C -1 ; WX 600 ; N Gcommaaccent ; B 33 -278 592 597 ; C -1 ; WX 600 ; N Rcommaaccent ; B 13 -278 619 583 ; C -1 ; WX 600 ; N Edieresis ; B 13 0 550 798 ; C -1 ; WX 600 ; N nacute ; B 23 0 571 696 ; C -1 ; WX 600 ; N uogonek ; B 13 -208 571 437 ; C -1 ; WX 600 ; N umacron ; B 13 -13 571 626 ; C -1 ; WX 600 ; N Dcaron ; B 13 0 550 839 ; C -1 ; WX 600 ; N lcaron ; B 62 0 538 637 ; C -1 ; WX 600 ; N Ccaron ; B 33 -14 564 839 ; C -1 ; WX 600 ; N Cacute ; B 33 -14 564 839 ; C -1 ; WX 600 ; N Ccedilla ; B 33 -229 564 597 ; C -1 ; WX 600 ; N degree ; B 125 243 475 596 ; C -1 ; WX 600 ; N Aogonek ; B -21 -208 621 583 ; C -1 ; WX 600 ; N minus ; B 42 230 558 330 ; C -1 ; WX 600 ; N multiply ; B 100 80 500 480 ; C -1 ; WX 600 ; N divide ; B 42 28 558 532 ; C -1 ; WX 600 ; N Aring ; B -21 0 621 871 ; C -1 ; WX 600 ; N trademark ; B -33 220 620 583 ; C -1 ; WX 600 ; N rcommaaccent ; B 54 -278 571 449 ; C -1 ; WX 600 ; N lacute ; B 62 0 538 840 ; C -1 ; WX 600 ; N omacron ; B 42 -16 558 626 ; C -1 ; WX 600 ; N Atilde ; B -21 0 621 799 ; C -1 ; WX 600 ; N icircumflex ; B 62 0 538 696 ; C -1 ; WX 600 ; N igrave ; B 62 0 538 696 ; C -1 ; WX 600 ; N ncommaaccent ; B 23 -278 571 450 ; C -1 ; WX 600 ; N lcommaaccent ; B 62 -278 538 624 ; C -1 ; WX 600 ; N plusminus ; B 42 0 558 624 ; C -1 ; WX 600 ; N onehalf ; B -34 0 629 638 ; C -1 ; WX 600 ; N onequarter ; B -34 0 629 638 ; C -1 ; WX 600 ; N threequarters ; B -43 0 630 637 ; C -1 ; WX 600 ; N iacute ; B 62 0 538 696 ; C -1 ; WX 600 ; N Abreve ; B -21 0 621 831 ; C -1 ; WX 600 ; N kcommaaccent ; B 33 -278 571 624 ; C -1 ; WX 600 ; N Omacron ; B 21 -14 579 769 ; C -1 ; WX 600 ; N imacron ; B 62 0 538 626 ; C -1 ; WX 600 ; N emacron ; B 33 -16 550 626 ; C -1 ; WX 600 ; N amacron ; B 42 -16 571 626 ; C -1 ; WX 600 ; N tcommaaccent ; B 13 -278 529 591 ; C -1 ; WX 600 ; N ydieresis ; B 21 -205 579 654 ; C -1 ; WX 600 ; N zdotaccent ; B 85 0 519 654 ; C -1 ; WX 600 ; N zcaron ; B 85 0 519 696 ; C -1 ; WX 600 ; N zacute ; B 85 0 519 696 ; C -1 ; WX 600 ; N yacute ; B 21 -205 579 696 ; C -1 ; WX 600 ; N uhungarumlaut ; B 13 -13 571 694 ; C -1 ; WX 600 ; N eth ; B 42 -16 558 646 ; C -1 ; WX 600 ; N uring ; B 13 -13 571 727 ; C -1 ; WX 600 ; N Ocircumflex ; B 21 -14 579 839 ; C -1 ; WX 600 ; N commaaccent ; B 183 -278 351 -59 ; C -1 ; WX 600 ; N copyright ; B -7 -15 606 598 ; C -1 ; WX 600 ; N registered ; B -7 -15 606 598 ; C -1 ; WX 600 ; N Acircumflex ; B -21 0 621 839 ; C -1 ; WX 600 ; N idieresis ; B 62 0 538 654 ; C -1 ; WX 600 ; N lozenge ; B 72 -19 529 593 ; C -1 ; WX 600 ; N Delta ; B 15 0 585 583 ; C -1 ; WX 600 ; N notequal ; B 42 22 558 525 ; C -1 ; WX 600 ; N radical ; B 12 -60 642 697 ; C -1 ; WX 600 ; N Agrave ; B -21 0 621 839 ; C -1 ; WX 600 ; N Aacute ; B -21 0 621 839 ; C -1 ; WX 600 ; N lessequal ; B 3 0 549 591 ; C -1 ; WX 600 ; N greaterequal ; B 35 0 582 591 ; C -1 ; WX 600 ; N logicalnot ; B 42 115 465 445 ; C -1 ; WX 600 ; N summation ; B 45 -97 538 671 ; C -1 ; WX 600 ; N partialdiff ; B 102 -16 524 590 ; C -1 ; WX 600 ; N Ncommaaccent ; B -8 -278 592 583 ; C -1 ; WX 600 ; N dcroat ; B 33 -16 613 624 ; C -1 ; WX 600 ; N brokenbar ; B 250 -153 350 622 ; C -1 ; WX 600 ; N Lcommaaccent ; B 33 -278 571 583 ; C -1 ; WX 600 ; N Adieresis ; B -21 0 621 798 ; C -1 ; WX 600 ; N mu ; B 13 -153 571 437 ; C -1 ; WX 600 ; N .notdef ; B 375 0 375 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -14 KPX A Ccedilla -22 KPX A G -10 KPX A O -15 KPX A Odieresis -15 KPX A Q -16 KPX A T -27 KPX A U -23 KPX A Uacute -23 KPX A Ucircumflex -23 KPX A Udieresis -23 KPX A Ugrave -23 KPX A V -59 KPX A W -13 KPX A Y -27 KPX A a 15 KPX A b 45 KPX A c -4 KPX A ccedilla -8 KPX A comma -47 KPX A d 4 KPX A e 2 KPX A g 0 KPX A guillemotleft -40 KPX A guilsinglleft -40 KPX A hyphen -19 KPX A o -3 KPX A period -62 KPX A q -4 KPX A quotedblright -84 KPX A quoteright -113 KPX A t -20 KPX A u -12 KPX A v -39 KPX A w -13 KPX A y -39 KPX Aacute C -14 KPX Aacute G -10 KPX Aacute O -15 KPX Aacute Q -16 KPX Aacute T -27 KPX Aacute U -23 KPX Aacute V -59 KPX Aacute W -13 KPX Aacute Y -27 KPX Aacute a 15 KPX Aacute b 45 KPX Aacute c -4 KPX Aacute comma -47 KPX Aacute d 4 KPX Aacute e 2 KPX Aacute g 0 KPX Aacute guillemotleft -40 KPX Aacute guilsinglleft -40 KPX Aacute hyphen -19 KPX Aacute o -3 KPX Aacute period -62 KPX Aacute q -4 KPX Aacute quoteright -113 KPX Aacute t -20 KPX Aacute u -12 KPX Aacute v -39 KPX Aacute w -13 KPX Aacute y -39 KPX Acircumflex C -14 KPX Acircumflex G -10 KPX Acircumflex O -15 KPX Acircumflex Q -16 KPX Acircumflex T -27 KPX Acircumflex U -23 KPX Acircumflex V -59 KPX Acircumflex W -13 KPX Acircumflex Y -27 KPX Acircumflex comma -47 KPX Acircumflex period -62 KPX Adieresis C -14 KPX Adieresis G -10 KPX Adieresis O -15 KPX Adieresis Q -16 KPX Adieresis T -27 KPX Adieresis U -23 KPX Adieresis V -59 KPX Adieresis W -13 KPX Adieresis Y -27 KPX Adieresis a 15 KPX Adieresis b 45 KPX Adieresis c -4 KPX Adieresis comma -47 KPX Adieresis d 4 KPX Adieresis g 0 KPX Adieresis guillemotleft -40 KPX Adieresis guilsinglleft -40 KPX Adieresis hyphen -19 KPX Adieresis o -3 KPX Adieresis period -62 KPX Adieresis q -4 KPX Adieresis quotedblright -84 KPX Adieresis quoteright -113 KPX Adieresis t -20 KPX Adieresis u -12 KPX Adieresis v -39 KPX Adieresis w -13 KPX Adieresis y -39 KPX Agrave C -14 KPX Agrave G -10 KPX Agrave O -15 KPX Agrave Q -16 KPX Agrave T -27 KPX Agrave U -23 KPX Agrave V -59 KPX Agrave W -13 KPX Agrave Y -27 KPX Agrave comma -47 KPX Agrave period -62 KPX Aring C -14 KPX Aring G -10 KPX Aring O -15 KPX Aring Q -16 KPX Aring T -27 KPX Aring U -23 KPX Aring V -59 KPX Aring W -13 KPX Aring Y -27 KPX Aring a 15 KPX Aring b 45 KPX Aring c -4 KPX Aring comma -47 KPX Aring d 4 KPX Aring e 2 KPX Aring g 0 KPX Aring guillemotleft -40 KPX Aring guilsinglleft -40 KPX Aring hyphen -19 KPX Aring o -3 KPX Aring period -62 KPX Aring q -4 KPX Aring quotedblright -84 KPX Aring quoteright -113 KPX Aring t -20 KPX Aring u -12 KPX Aring v -39 KPX Aring w -13 KPX Aring y -39 KPX Atilde C -14 KPX Atilde G -10 KPX Atilde O -15 KPX Atilde Q -16 KPX Atilde T -27 KPX Atilde U -23 KPX Atilde V -59 KPX Atilde W -13 KPX Atilde Y -27 KPX Atilde comma -47 KPX Atilde period -62 KPX B A 4 KPX B AE 3 KPX B Aacute 4 KPX B Acircumflex 4 KPX B Adieresis 4 KPX B Aring 4 KPX B Atilde 4 KPX B O -9 KPX B OE 11 KPX B Oacute -9 KPX B Ocircumflex -9 KPX B Odieresis -9 KPX B Ograve -9 KPX B Oslash -5 KPX B V -18 KPX B W -6 KPX B Y -39 KPX C A 8 KPX C AE 7 KPX C Aacute 8 KPX C Adieresis 8 KPX C Aring 8 KPX C H -13 KPX C K -8 KPX C O -14 KPX C Oacute -14 KPX C Odieresis -14 KPX Ccedilla A 3 KPX D A -25 KPX D Aacute -25 KPX D Acircumflex -25 KPX D Adieresis -25 KPX D Agrave -25 KPX D Aring -25 KPX D Atilde -25 KPX D J -32 KPX D T -27 KPX D V -30 KPX D W -13 KPX D X -37 KPX D Y -51 KPX F A -39 KPX F Aacute -39 KPX F Acircumflex -39 KPX F Adieresis -39 KPX F Agrave -39 KPX F Aring -39 KPX F Atilde -39 KPX F J -78 KPX F O -24 KPX F Odieresis -24 KPX F a -40 KPX F aacute -40 KPX F adieresis -40 KPX F ae -18 KPX F aring -40 KPX F comma -168 KPX F e -47 KPX F eacute -47 KPX F hyphen -55 KPX F i -46 KPX F j -54 KPX F o -51 KPX F oacute -51 KPX F odieresis -51 KPX F oe -16 KPX F oslash -51 KPX F period -187 KPX F r -32 KPX F u -1 KPX G A 6 KPX G AE 5 KPX G Aacute 6 KPX G Acircumflex 6 KPX G Adieresis 6 KPX G Agrave 6 KPX G Aring 6 KPX G Atilde 6 KPX G T -25 KPX G V 6 KPX G W 6 KPX G Y -14 KPX J A -8 KPX J AE -16 KPX J Adieresis -8 KPX J Aring -8 KPX K C -24 KPX K G -19 KPX K O -25 KPX K OE -4 KPX K Oacute -25 KPX K Odieresis -25 KPX K S -9 KPX K T -13 KPX K a 6 KPX K adieresis 6 KPX K ae 31 KPX K aring 6 KPX K e -6 KPX K hyphen -44 KPX K o -12 KPX K oacute -12 KPX K odieresis -12 KPX K u -22 KPX K udieresis -22 KPX K y -50 KPX L A 16 KPX L AE 16 KPX L Aacute 16 KPX L Adieresis 16 KPX L Aring 16 KPX L C -10 KPX L Ccedilla -11 KPX L G -10 KPX L O -7 KPX L Oacute -7 KPX L Ocircumflex -7 KPX L Odieresis -7 KPX L Ograve -7 KPX L Otilde -7 KPX L S -24 KPX L T -52 KPX L U -29 KPX L Udieresis -29 KPX L V -57 KPX L W -22 KPX L Y -52 KPX L hyphen 9 KPX L quotedblright -72 KPX L quoteright -99 KPX L u -10 KPX L udieresis -11 KPX L y -33 KPX N A -3 KPX N AE -3 KPX N Aacute -3 KPX N Adieresis -3 KPX N Aring -3 KPX N C -7 KPX N Ccedilla -6 KPX N G -6 KPX N O -5 KPX N Oacute -5 KPX N Odieresis -5 KPX N a -11 KPX N aacute -11 KPX N adieresis -11 KPX N ae 18 KPX N aring -11 KPX N comma -75 KPX N e -3 KPX N eacute -3 KPX N o -8 KPX N oacute -8 KPX N odieresis -8 KPX N oslash -3 KPX N period -93 KPX N u -8 KPX N udieresis -8 KPX O A -14 KPX O AE -14 KPX O Aacute -14 KPX O Adieresis -14 KPX O Aring -14 KPX O T -15 KPX O V -23 KPX O W -2 KPX O X -26 KPX O Y -43 KPX Oacute A -14 KPX Oacute T -15 KPX Oacute V -23 KPX Oacute W -2 KPX Oacute Y -43 KPX Ocircumflex T -15 KPX Ocircumflex V -23 KPX Ocircumflex Y -43 KPX Odieresis A -14 KPX Odieresis T -15 KPX Odieresis V -23 KPX Odieresis W -2 KPX Odieresis X -26 KPX Odieresis Y -43 KPX Ograve T -15 KPX Ograve V -23 KPX Ograve Y -43 KPX Oslash A -10 KPX Otilde T -15 KPX Otilde V -23 KPX Otilde Y -43 KPX P A -61 KPX P AE -59 KPX P Aacute -61 KPX P Adieresis -61 KPX P Aring -61 KPX P J -73 KPX P a -49 KPX P aacute -49 KPX P adieresis -49 KPX P ae -27 KPX P aring -49 KPX P comma -160 KPX P e -38 KPX P eacute -38 KPX P hyphen -33 KPX P o -42 KPX P oacute -42 KPX P odieresis -42 KPX P oe -13 KPX P oslash -42 KPX P period -178 KPX R C -14 KPX R Ccedilla -17 KPX R G -10 KPX R O -14 KPX R OE 5 KPX R Oacute -14 KPX R Odieresis -14 KPX R T -28 KPX R U -16 KPX R Udieresis -17 KPX R V -24 KPX R W -8 KPX R Y -28 KPX R a 14 KPX R aacute 14 KPX R adieresis 14 KPX R ae 40 KPX R aring 14 KPX R e 2 KPX R eacute 2 KPX R hyphen -25 KPX R o -3 KPX R oacute -3 KPX R odieresis -3 KPX R oe 29 KPX R u -7 KPX R uacute -8 KPX R udieresis -8 KPX R y -18 KPX S A -10 KPX S AE -10 KPX S Aacute -10 KPX S Adieresis -10 KPX S Aring -10 KPX S T -41 KPX S V -10 KPX S W -12 KPX S Y -31 KPX S t -17 KPX T A -28 KPX T AE -28 KPX T Aacute -28 KPX T Acircumflex -28 KPX T Adieresis -28 KPX T Agrave -28 KPX T Aring -28 KPX T Atilde -28 KPX T C -19 KPX T G -19 KPX T J -65 KPX T O -14 KPX T OE 6 KPX T Oacute -14 KPX T Ocircumflex -14 KPX T Odieresis -14 KPX T Ograve -14 KPX T Oslash -14 KPX T Otilde -14 KPX T S -41 KPX T V 10 KPX T W 4 KPX T Y -10 KPX T a -34 KPX T ae -12 KPX T c -37 KPX T colon -112 KPX T comma -130 KPX T e -26 KPX T g -24 KPX T guillemotleft -73 KPX T guilsinglleft -73 KPX T hyphen -91 KPX T i -42 KPX T j -49 KPX T o -31 KPX T oslash -31 KPX T period -148 KPX T r -28 KPX T s -39 KPX T semicolon -100 KPX T u 4 KPX T v 10 KPX T w 10 KPX T y 0 KPX U A -19 KPX U AE -18 KPX U Aacute -19 KPX U Acircumflex -19 KPX U Adieresis -19 KPX U Aring -19 KPX U Atilde -19 KPX U comma -95 KPX U m 16 KPX U n -8 KPX U p 0 KPX U period -114 KPX U r -34 KPX Uacute A -19 KPX Uacute comma -95 KPX Uacute m 16 KPX Uacute n -8 KPX Uacute p 0 KPX Uacute period -114 KPX Uacute r -34 KPX Ucircumflex A -19 KPX Udieresis A -19 KPX Udieresis b 27 KPX Udieresis comma -95 KPX Udieresis m 16 KPX Udieresis n -8 KPX Udieresis p 0 KPX Udieresis period -114 KPX Udieresis r -34 KPX Ugrave A -19 KPX V A -4 KPX V AE -12 KPX V Aacute -4 KPX V Acircumflex -4 KPX V Adieresis -4 KPX V Agrave -4 KPX V Aring -4 KPX V Atilde -4 KPX V C -24 KPX V G -24 KPX V O -23 KPX V Oacute -23 KPX V Ocircumflex -23 KPX V Odieresis -23 KPX V Ograve -23 KPX V Oslash -23 KPX V Otilde -23 KPX V S -27 KPX V T 10 KPX V a -54 KPX V ae -27 KPX V colon -132 KPX V comma -146 KPX V e -47 KPX V g -46 KPX V guillemotleft -75 KPX V guilsinglleft -75 KPX V hyphen -39 KPX V i -59 KPX V o -52 KPX V oslash -48 KPX V period -164 KPX V r -45 KPX V semicolon -120 KPX V u -15 KPX V y -17 KPX W A -9 KPX W AE -9 KPX W Aacute -9 KPX W Acircumflex -9 KPX W Adieresis -9 KPX W Agrave -9 KPX W Aring -9 KPX W Atilde -9 KPX W C -4 KPX W G -3 KPX W O -2 KPX W Oacute -2 KPX W Ocircumflex -2 KPX W Odieresis -2 KPX W Ograve -2 KPX W Oslash 2 KPX W Otilde -2 KPX W S -17 KPX W T 4 KPX W a -11 KPX W ae 17 KPX W colon -99 KPX W comma -83 KPX W e -3 KPX W g -3 KPX W guillemotleft -31 KPX W guilsinglleft -31 KPX W hyphen 1 KPX W i -38 KPX W o -8 KPX W oslash -4 KPX W period -101 KPX W r -25 KPX W semicolon -82 KPX W u 1 KPX W y -2 KPX X C -28 KPX X O -26 KPX X Odieresis -26 KPX X Q -26 KPX X a 0 KPX X e -12 KPX X hyphen -50 KPX X o -18 KPX X u -28 KPX X y -43 KPX Y A -25 KPX Y AE -28 KPX Y Aacute -25 KPX Y Acircumflex -25 KPX Y Adieresis -25 KPX Y Agrave -25 KPX Y Aring -25 KPX Y Atilde -25 KPX Y C -45 KPX Y G -45 KPX Y O -44 KPX Y Oacute -44 KPX Y Ocircumflex -44 KPX Y Odieresis -44 KPX Y Ograve -44 KPX Y Oslash -43 KPX Y Otilde -44 KPX Y S -48 KPX Y T -10 KPX Y a -53 KPX Y ae -28 KPX Y colon -150 KPX Y comma -118 KPX Y e -59 KPX Y g -59 KPX Y guillemotleft -94 KPX Y guilsinglleft -94 KPX Y hyphen -81 KPX Y i -58 KPX Y o -64 KPX Y oslash -51 KPX Y p -30 KPX Y period -136 KPX Y semicolon -133 KPX Y u -43 KPX Y v -33 KPX Z v -41 KPX Z y -52 KPX a j -81 KPX a quoteright -78 KPX a v -21 KPX a w -12 KPX a y -31 KPX aacute v -21 KPX aacute w -12 KPX aacute y -31 KPX adieresis v -21 KPX adieresis w -12 KPX adieresis y -31 KPX ae v 28 KPX ae w 32 KPX ae y 18 KPX agrave v -21 KPX agrave w -12 KPX agrave y -31 KPX aring v -21 KPX aring w -12 KPX aring y -31 KPX b v 0 KPX b w 4 KPX b y -10 KPX c h 11 KPX c k 6 KPX comma one -128 KPX comma quotedblright -137 KPX comma quoteright -166 KPX e quoteright -65 KPX e t -16 KPX e v -9 KPX e w -3 KPX e x 6 KPX e y -20 KPX eacute v -9 KPX eacute w -3 KPX eacute y -20 KPX ecircumflex v -9 KPX ecircumflex w -3 KPX ecircumflex y -20 KPX eight four -58 KPX eight one -72 KPX eight seven -65 KPX f a -32 KPX f aacute -32 KPX f adieresis -32 KPX f ae -7 KPX f aring -32 KPX f e -43 KPX f eacute -43 KPX f f -43 KPX f i -37 KPX f j -60 KPX f l -25 KPX f o -47 KPX f oacute -47 KPX f odieresis -42 KPX f oe -15 KPX f oslash -29 KPX f quoteright -73 KPX f s -42 KPX f t -6 KPX five four -52 KPX five one -73 KPX five seven -73 KPX four four -62 KPX four one -66 KPX four seven -93 KPX g a -4 KPX g adieresis -4 KPX g ae 23 KPX g aring -4 KPX g e 1 KPX g eacute 1 KPX g l -34 KPX g oacute -3 KPX g odieresis -3 KPX g r 0 KPX guillemotright A -37 KPX guillemotright AE -34 KPX guillemotright Aacute -37 KPX guillemotright Adieresis -37 KPX guillemotright Aring -37 KPX guillemotright T -71 KPX guillemotright V -72 KPX guillemotright W -29 KPX guillemotright Y -92 KPX guilsinglright A -37 KPX guilsinglright AE -34 KPX guilsinglright Aacute -37 KPX guilsinglright Adieresis -37 KPX guilsinglright Aring -37 KPX guilsinglright T -71 KPX guilsinglright V -72 KPX guilsinglright W -29 KPX guilsinglright Y -92 KPX h quoteright -69 KPX h y -23 KPX hyphen A -18 KPX hyphen AE -14 KPX hyphen Aacute -18 KPX hyphen Adieresis -18 KPX hyphen Aring -18 KPX hyphen T -90 KPX hyphen V -38 KPX hyphen W 1 KPX hyphen Y -81 KPX i T -58 KPX i j -143 KPX k a 1 KPX k aacute 1 KPX k adieresis 1 KPX k ae 26 KPX k aring 1 KPX k comma -63 KPX k e -11 KPX k eacute -11 KPX k g -14 KPX k hyphen -50 KPX k o -17 KPX k oacute -17 KPX k odieresis -17 KPX k period -75 KPX k s -9 KPX k u -3 KPX k udieresis -3 KPX l v -77 KPX l y -77 KPX m p 32 KPX m v 18 KPX m w 22 KPX m y 8 KPX n T -40 KPX n p 4 KPX n quoteright -68 KPX n v -12 KPX n w -5 KPX n y -22 KPX nine four -53 KPX nine one -66 KPX nine seven -57 KPX o T -31 KPX o quoteright -62 KPX o t -13 KPX o v -6 KPX o w -3 KPX o x -10 KPX o y -17 KPX oacute v -6 KPX oacute w -3 KPX oacute y -17 KPX ocircumflex t -13 KPX odieresis t -13 KPX odieresis v -6 KPX odieresis w -3 KPX odieresis x -10 KPX odieresis y -17 KPX ograve v -6 KPX ograve w -3 KPX ograve y -17 KPX one comma -99 KPX one eight -74 KPX one five -55 KPX one four -87 KPX one nine -73 KPX one one -62 KPX one period -114 KPX one seven -141 KPX one six -98 KPX one three -53 KPX one two -47 KPX one zero -86 KPX p t -3 KPX p y -6 KPX period one -113 KPX period quotedblright -131 KPX period quoteright -161 KPX q c 2 KPX q u 41 KPX quotedblbase A -6 KPX quotedblbase AE -7 KPX quotedblbase T -90 KPX quotedblbase V -104 KPX quotedblbase W -43 KPX quotedblbase Y -78 KPX quotedblleft A -62 KPX quotedblleft AE -60 KPX quotedblleft Aacute -62 KPX quotedblleft Adieresis -62 KPX quotedblleft Aring -62 KPX quotedblleft T -24 KPX quotedblleft V -22 KPX quotedblleft W -13 KPX quotedblleft Y -49 KPX quotedblright A -76 KPX quotedblright AE -75 KPX quotedblright Aacute -76 KPX quotedblright Adieresis -76 KPX quotedblright Aring -76 KPX quotedblright T -39 KPX quotedblright V -30 KPX quotedblright W -26 KPX quotedblright Y -51 KPX quoteleft A -87 KPX quoteleft AE -85 KPX quoteleft Aacute -87 KPX quoteleft Adieresis -87 KPX quoteleft Aring -87 KPX quoteleft T -49 KPX quoteleft V -46 KPX quoteleft W -38 KPX quoteleft Y -73 KPX quoteright A -154 KPX quoteright AE -153 KPX quoteright Aacute -154 KPX quoteright Adieresis -154 KPX quoteright Aring -154 KPX quoteright comma -227 KPX quoteright d -140 KPX quoteright o -143 KPX quoteright period -244 KPX quoteright r -149 KPX quoteright s -150 KPX quoteright t -117 KPX quoteright v -110 KPX quoteright w -105 KPX quoteright y -116 KPX r a -17 KPX r aacute -17 KPX r acircumflex -17 KPX r adieresis -17 KPX r ae 4 KPX r agrave -17 KPX r aring -17 KPX r c -18 KPX r ccedilla -15 KPX r colon -95 KPX r comma -108 KPX r d -8 KPX r e -7 KPX r eacute -7 KPX r ecircumflex -7 KPX r egrave -7 KPX r f -16 KPX r g -5 KPX r h -20 KPX r hyphen -41 KPX r i -25 KPX r j -33 KPX r k -30 KPX r l -47 KPX r m 36 KPX r n 10 KPX r o -12 KPX r oacute -12 KPX r ocircumflex -12 KPX r odieresis -12 KPX r oe 18 KPX r ograve -12 KPX r oslash -12 KPX r p 30 KPX r period -122 KPX r q -4 KPX r quoteright -41 KPX r r -11 KPX r s -21 KPX r semicolon -83 KPX r t 20 KPX r u 20 KPX r v 26 KPX r w 26 KPX r x 7 KPX r y 16 KPX r z -21 KPX s quoteright -60 KPX s t -11 KPX seven colon -156 KPX seven comma -157 KPX seven eight -74 KPX seven five -82 KPX seven four -101 KPX seven one -67 KPX seven period -176 KPX seven seven -62 KPX seven six -93 KPX seven three -72 KPX seven two -64 KPX six four -49 KPX six one -54 KPX six seven -46 KPX t S -35 KPX t a -16 KPX t aacute -16 KPX t adieresis -16 KPX t ae 9 KPX t aring -16 KPX t colon -117 KPX t e -24 KPX t eacute -24 KPX t h -5 KPX t o -30 KPX t oacute -30 KPX t odieresis -30 KPX t quoteright -102 KPX t semicolon -103 KPX three four -52 KPX three one -71 KPX three seven -64 KPX two four -67 KPX two one -66 KPX two seven -68 KPX u quoteright -56 KPX v a -3 KPX v aacute -3 KPX v acircumflex -3 KPX v adieresis -3 KPX v ae 18 KPX v agrave -3 KPX v aring -3 KPX v atilde -3 KPX v c -11 KPX v colon -81 KPX v comma -136 KPX v e 0 KPX v eacute 0 KPX v ecircumflex 0 KPX v egrave 0 KPX v g 1 KPX v hyphen -23 KPX v l -77 KPX v o -5 KPX v oacute -5 KPX v odieresis -5 KPX v ograve -5 KPX v oslash -5 KPX v period -156 KPX v s -11 KPX v semicolon -69 KPX w a -3 KPX w aacute -3 KPX w acircumflex -3 KPX w adieresis -3 KPX w ae 23 KPX w agrave -3 KPX w aring -3 KPX w atilde -3 KPX w c -6 KPX w colon -81 KPX w comma -90 KPX w e 2 KPX w eacute 2 KPX w ecircumflex 2 KPX w egrave 2 KPX w g 3 KPX w hyphen 3 KPX w l -48 KPX w o -2 KPX w oacute -2 KPX w odieresis -2 KPX w ograve -2 KPX w oslash 2 KPX w period -109 KPX w s -11 KPX w semicolon -69 KPX x a 5 KPX x c -14 KPX x e -5 KPX x eacute -5 KPX x o -10 KPX x q -8 KPX y a -13 KPX y aacute -13 KPX y acircumflex -13 KPX y adieresis -13 KPX y ae 8 KPX y agrave -13 KPX y aring -13 KPX y atilde -13 KPX y c -21 KPX y colon -91 KPX y comma -134 KPX y e -11 KPX y eacute -11 KPX y ecircumflex -11 KPX y egrave -11 KPX y g -9 KPX y hyphen -19 KPX y l -78 KPX y o -15 KPX y oacute -15 KPX y odieresis -15 KPX y ograve -15 KPX y oslash -15 KPX y period -155 KPX y s -21 KPX y semicolon -79 KPX zero four -59 KPX zero one -76 KPX zero seven -68 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n022004l.pfb0000644000077100007710000014247507260330357015430 0ustar fjffjf00000000000000U%!PS-AdobeFont-1.0: NimbusMonL-Bold 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Mono L Bold) readonly def /FamilyName (Nimbus Mono L) readonly def /Weight (Bold) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /NimbusMonL-Bold def /PaintType 0 def /WMode 0 def /FontBBox {-43 -278 681 871} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020946 def currentdict end currentfile eexec  `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>j!SڮZDE2V1hۤO: )u|8tl~"y5w(*Էvb-D]p.+t|sJcU}BqEi:l}Azo׋̥-;k)|1껝ON 7+#Z-2! lt#\ZƝA;<1ʩ2By&1X:J-S)/Ydq;aR\rۘVl4sgKNXs$s|KUANӜ?݋_{9/&*j ۳Te z;K! B^S0o6`qӚoIn1ZڟthĤ O^"8E%F #SLoeދxJj9u~$PT"^_iSMIʿ9 ر߬Oop{0vU5 W։0X=eƞ ?@h2otjDga;bޟſ]d}%3N~QqGɄtȟ]+0x99!|*^-W9~q/ 5<&3Z.8HpYCy2HNj3(Upb-P.EׯPl3W)B9S\RaF9Mr80 0^']O|lͶ〩;q3;t`Bi{:UWQx>%(N9lsĥ 871?J', R.'~u#vUZW^T.-@ k; Fsc &.OްɔSuCĖ  f\yk p:Y/~ZCPYݧU1u2d.4= j;6פa7R.żQ< (EtW!_ՑB%3MOܻe9oNxz\6֌iuߝpyH_2F'9I:_i(",wgRhIa䢪>Zc tmX-?3ԛ{6jN pt`,Z\s_hB|a3l3 yjr: 4f"HC22e=;PA\V:'v; n 6Lx\6]=p"Rޓ2 G1ղc<Ň}l]zgX$Sm,b0֗k2_T*JwQ31׋\-jz5+a4xQC`ESP\"|Q64[ Fi=7 vCށB.K5.%r^q9ϣϤk6ռӨHU^Hd} &I k?eC:H$Z _lmۋC"z-+ƭ;5DTI4K)SnD[&-CƫMӡs6.snlLu:Dk1ZA%`M2A!f'r}[:v]ۋq] AcgE4MϚd>-N'1]l_A{$Sa8I^Lki^O;úrK9.k^ێ3>&.ւI9[ۙCiY?Q8T^gՖS2@s k9 C.ˍ7t%_WseQ=JjHyˤw2`vg_^ĈJm9%q$>w:  EЗ [ǐ{2&k//vP-mQw12PQzy* _c[-,1.K`hA>cW՜ظ̭W'evwL?ZiN[y$0)GN۽K #AH-ً7y5&@n s.*.IHK ŀ(n~L: S&E A@de== tiv]&Wv6h=`+(tVt`Cfw9{nᔰI.f%G9QLV&R*&PdؔCg)3bXVdL >N aDOh뷵hfjQ?oAz2"+ '3_hnʖ(cTTvsl΂}oO-ǩZdmڃ- r1^Xe)q,1 ++) * #ǝuςPY:&Mb5*,hw74T櫞x)Y֓X42Q^N)+XYv-_|;_㐡a )Bd<⒪ΉܙK̚QESÐ̕qjMtb9f n9R5@{GV~hd$礥.]xy߀gxj{y Gjtim)i:6.Y G$)װDT% '9#Cx >닲 cѽa"dک>EQ*uI?k^te0?T4p9;3TDmH% ]O>b9A;BEɁ2eb[kF჊ߝq7|E< &<L闦q:}3ƿ^bn՘5 sueC~IUU9 ؜Z:#Z؜)5 MIsYT96~hwm[ߞy[Q^?$F2g piٻHfQ 3[v¤M^czkQd"j?|~N9Yeԛ_AM ,l%9/Pyc]ks tݙ/86w' >1it ^!S$?|~vcMj|i-"b:Cv=bҾ2bѯ< 6VP\S5;, fBw:bU_޻aCKScLֳrIrD[zu*tϲCQ0)l~p\y51Ӯ3UJN sȷJ;EV t-(OJ_o|Q1*;  λHX'1kWlb-%S;%N#%{G/?D¸;B݈R7wnG5auĢ~ y8!=*J&FM AngE V$7sH[Z^[6V+B590n#Xkw.ZP~KBla:X u$vV`# N EZwƲGT~;[2~ᤆ>[JzR~4(,Y/@k̾0pSZkA/t1Sܬ ,&Zr! \bo0#p[G\Sq"Z1m3b%yPTtN)Nh;ˮD1BZPY^ s};vP, 02^\^Sx}۠&@<*dFd"7HYCT vY'#$&%28Hrlʴze> wME9vSj 94Ov&tIn~q|I11!,=K4̯*y*yLtDg;S޲?B$"<&dIXH)m<}`'FKU1-0+qԾ:W~X؇%L)oc pkAD<+W``n,\"J[3+jv7Yҏ`2凱(I`|%o ϳl!q>y(>,:-*o,,a-pŚ 1@Ano-DFږj Lȗ~fZ\CW9"kO=1+)9-ORGDi|,p4Ea4eK #yqE{䈣jT (XZɁ-F V"~vxmƥr ßemGB83㉒Lb:rs{ )|"٫ X}{_Q':RmZ/ z,;r`bzJimY05[4`03tWrwEE%OhKdv7ecp57K#W]W|CPI*X}!8Atfl~4ZJ%c5EW!q/1/o\{ѺZ[V "2o?3_{LF2M @f}ă z*c{:zF/?2HLMy)0׉#–h8'L~l#wo45j2a>IϪv..:eM;آ;kX`me;;4ùܺUB*MuOe=jஅl$4 žU^'ls8єL8 ilZ _ԁ$GaM&/%L,(2;]C<0~ H.8&~ M2tÒIm[aւ0< ɱB4~,%k1;FB)Xf &r@㤵 ]0Hg'G bEH\͡hRzė]2? \\#O~43QU-3FV\p6|~wR10.Yk`›%jM@Lt_6z KqAzEmqI50e~w{6=lX)VK'xK!ԾrW]Ԅmȩ#OTYո'0PZrtB_!w|zJJ<3lhXZTd`[Գ"ww`&꫓auOf 󛏥[38VtGk++U5?< 0̡U/Vu()-Pr?7ZhܞLJQ'AĦR#-%)r$L/3v&֟)*F-\S9rv=H@R콜&b3U0vSfz{!lTXD5=i pC&e f?h{_$339EI3a}vzBFq7[u31᠑ʴlHW~ 0PFD OCwGhS4&TBo;XW vk <k$*[W-I8H'3roVBR۝-) K/p6Ipѐ(b*:rV0~#jMKF u7|:l$8\CFcV6gbR!= 9uA:he ݜaboQ~Lf)=.'G.-=Za\70Gߛ V[4J/dB,s'^]q9d=%6._elx"? / {q/-7/h NYF{ @R,ȱrUoR]<{u՛TݚJ+K)x+X2Z>lBpW^rY%} mk~J6z)R !vEJ lںC2`n2q?Z\8H4 Q u;&)0,HlY%~EJV\Cyf~Ho;șRPE:;S9"QnZϮw;_x9 ?}au9]3o)_^Jl@ ct^h r#t 6q_M!3wmWo0_34O&݅ATnc4l =8G5u9ѾW C7EM VEZ$ 7veW cWrսa #CcY a$x=^PޠPxŋ1Ɋk63k}DIiB3 ? UߛkJˣߤskmWΘa1{8eoW^ r} sH!3~@YM8noYӈ8*2:Ysm;;yvƼEr >5%]L"=]E3_Äz(zc[c_ )ќ2J< " "=8Pjtmˬؚ x_؅P474"ŃKB3tOlֿ v쥨uZ/)И2fJŞڒ%h s6q<\p 2 HH65B+2Z;81u9[7!'ۣT7$;ii4wsǁUPr-zd ."!tLq"8`De9Hn~q+*;Tёyrq93,U{d?mUN)x6ʇme)?P# @76ͳi~r2vDuFL6fDv ȀY#ĜL(6\vߔdjxr{.c}j*ҋ,]B_g{+yxJ!!V$ϼF rZv]  }"l(m5Kl׊+g3No)qHt$d+{cJX#G5VbXRT0V&H>[(!1E~cRhƈт LU!y5Llrf5"di,WZc`Ķrň{^Ȟ^Wz K.p?Iz%5;Nh|FXNXO=O̷ ȅ(ҟRR3=a>r.Ay{^?Z*2V6ϕ=ߖK#nPyt.EA?S9sSyd,&M"'RLLЎ9(Dx7t eZK;UEvc]x.z.vY.HY/ $A+ Fܟ2RZ $JYvtfcMfJo?S:FV;nNS>}6\ó{%GE nMv!0a{n!W$Oy^~ȗSKmM a`YMktW qIR;X>q\>u7me^n#cx2*zqFglR$ tD"=u:&- (v#Ф=~.符?G"q@]p1oo:h) ^h۫Bpޑ<.a6nx׾$;lILKuLm` mIܧBOm|E]V #F] F fץ+ZN=/IG I{2el]м@ f'9O8u5ZHuLm` mFǽ=y*_-QH9׋FdL~С\9:B=-A҆tk}1;OM laU| vuR ~~9Q0 T0B*XhO֒?eښ?3JzǑП/&2ʾȚQȾ˞)IńV{ޏmj*ck \޷\X& ٚS\Cz~-$])OxAӝ;ꘂ> 1d$㋯u) ʾ @MM.͊^"])S[ if*:>LXhJ΍SHa2^FsԽlYjW; j:2tGO}x7}iE^Qac gQ*qёR~%^Β჆>HڒPPAg4++7ˤ?,'yð^>~A*xpǚLXNAdFjPW&F9aCgr:_e 6c1X7_tF!kro{JgVE>:a6ǀq7 !${NJ9PPUR"Z,"]8SPKJfoH]jWIz=- Coᅼf {:X엍~wQ`\cl?l1%}QXۢM6 @U:f0Z8WY m* mG/8t? zt?vF:s:C}G=mބ=,R84{Ei*Ien=#_~R'!r?tR)p[˂`kxq)b$vA|HiIީ*wnaрڞ_=eħãSXu& aaO -7%9=!ʯʏϛWMZ@4XZȏt[᝴@w8풌qzVb+l;&__ uW׭U|~r qgvq>92 >B[2\fIZƼF֝<4зEx]pzF`6Cn=IP Cas=r!ToΧC$q71;$$b~52Q#g -^gO"]Q,_4#[=df$Y}.~o~%l7Q(aPcX TG[R I-tUڲd?_ N:-z86U/4.)#Uy-~L2,#t0mRA)G *yuh mjaߜЁCp݂da_*Q޺)zPM=au}|(w9;#ni_~~yj!GҰlѷ#$ܶh7b"M׵!(eF6}OYYmPa{--VunyaE3j4|X*o^%f(Ra F/) [c?梒 P;T6T?s)ݵm-,;u`IL*]ڸ~DPT3Pڻb#L(w|Vn0ÁߤxJT< .cbDrZ H߳,m=z!U5NB 4l='Q "T(֥z7J%j؜%ke{l4fo P}r<9dH~dJmx5}ó5땾_'QлGVAdT1ɰdV%DAgl&b#`ܽiMK*(Ed~Vyqǘ63ReK8Uy?yqry흆dk& Uȧ*ZJMkZ$Ovt4.ֻph2 Y8kmt\!1dj;D&$e:(Mȸ37R(#+uG!R*v$-CZԖvzvG2p<-JlQ|[w͜?X>RF8bUM>q,w,6-' ,<њ o uM8GX^C^m?B!tOs9##1]A3R 1Ol8>͐"!vC2a;`@exyz"fcy{zue([[O_g7 :]əG4`Xώ i#N|SZBcoSO+òYBz(O!].1_w-o|39nh :'FeTdgn^Q >Ea*>aԱᆝUQ GoE+ᇅǃ諣,ȦBf)n;BX+|њ؎0xi'/'ι@%p8ޞ㲇 !1yl>hjma&p~ `ʅ A@i5O(WC>p?>Xbхm,YѸP*d-p = KRf`4\m3ĩkBzs2f%o$X Seop&3x]ߋ PJnMSc %ޅ -YDJ^uQ qS]m?Hc@7@T5 #.bǕ:5IW0ۦ(i|>ZH̕u`j-rl5a+;/.X"FfZapr b,K`6K5"b/)L /;\/ {,ko+Ta?0೷en{ An;:ѥ;1`3  ts^y珊?H#Hk"D!NY70&CPm-"5TM=bM=bXhn^- -XI`,:U6gS\F˚5Rc0v(~ѽ@Xo,'|;!$."YrGA#x rs7*}m}S= 9ɢ|kK A`n )a*0&mU1WS |);yׁ"~b3GrQc.눣r']6͕قhkttz 9|z4:A%PRM$ǜFJ%?2o,zb5ps|{tP(Z[ 4 aRp'P S6i3nE]U,f BON=nk<yzv"E -'W;zل٬#s$S4ua0ۗWr"g.u>c֍uy |FB r3^5Jv܉bC5K} [1q-B\1RO%FưkwwRRSAOۑ.Wm}ȡe(9ݏTVS>A+S2Nm]>ˍL_-t>(">1 /%Nd{xu~m]LG;Wr%?gT5{a54wa@wYzU`N@ /3~;?o!˔ XC'Zκ9Qc8 +^SjF(uQIqs&L~ D:Ty )$!fG.uRJa]! 3[Lg `(U `| fT].(5>ĄH9oLҔ=zQ}ɾO+ -VK&ښbkl؁Ʒ}nyפ~5?-YEg11ϛB#8w?\7#;ӘˈۀQhGɘzMe4E} ~(\[(;>'Acy& irR"0U6ܱ ƒTu+^dƶM#ZX|-OJФSe Fidl.Iv#EnJAfS_u,úݫD”JDioi0'WÜe}ΊGm]f )`2;kp[U~L}I1m.J'И3Lxt a@}tTMڞӥ\MY4rw!|{mѪO ,%`{UDEZr27%Qoq\r(⁘"ͻL':PBึ(O(=WIF۳;uWThM sڏC:اHm%rF| =,B"[M>0t#,A*}Zڋ ~eՋFoFf?4(NcB%VLBg]Zu/$y>פDӟb.:T -N`'S8pvBn\kcs{m8DJw \;SREayXAfPi1`o>s (,_q[%i*y? /^q atwf ] @&NU5{^MT; _FSA8rKG,Vխk]@Oet0N[(Z~4.6F\=V9OP`NFq %z vD 9̩c,…իM -΍{IѢ(uz;TN+aFA{h:܏Ay0՗eJGKj3;+v~D~RAZd+1Ɛ'E lM,B7G4DN9G( hL'IaŞ>w 5vm:YlT]NX^&;~_^H<~8Epxł7\kC€W4!x!xyZ!0gYشuPt"-x.{e׼xҧEQżvvsȳSB^&وrnoQV92&{4P7tPJOzyF~QRXb wMR_=?JQpg#+t\_0^kg_j"n>ҵ9_b.RH7LeH `y񹘿1w-˸"SsؑO,0a'J2;ť-,8ӶK AyoPlw8l0aBMjF2 f\H@i/ke%&; #uֈ!}]PBsDef0AS<9[Z2!~ "'Iu1v(ms]=8mQ3n\`_-|ȑ8wJE±t$Y97*) p<ʿf8G>>55a7lRZb HFP䡥ʷT Y0ig)MG  }(zLNλEh{ fo5Z]wGysN9"Vuo}y(خN(K(Qԫ +GGK:”bm<,%RAh8iC_3In/ k}±٣yjfN aU jJ|nFoN̟FFKQHU1tya/AWU3dbm)Ie$7Y_ҧRB9V +2y(U(|`2>p$?V9%擒l;Qn_TE)ŹpA[iXlU_tj&vOcZud\w=%:ҥ D.涂~oqDzh2H5eӣav/p d~{&eua\|(>#SX:9)M{GR1Mњ=a>r.EQQ}_< Ŗ˝@.h̽9kkk9oإq%>#"=Ԯb2&4yCRץs:XO :^-4@wZݐAY&թm 7g*B Oq Ca;'Xo@Qa6:%C>0#{$`wdӆ%D?>x_ V* P.`ٮ"{|IZy}Ee3X۵O&<Ɨ8tSfotI.ROCaLğYB4>ShKwry/ PQ8FӨGA5cu m-c:\kUUpymoOuDՉLWCwN4(t͌-5YYqIě`Z\Q켳 ?M+@vwuõ{5C{ikl; #ќ4,'naLJ)|zQ]ɇ@Zpҩ= bnna_c 7Ro{բOYlł;Rj߸jf,T ϫ#8v\u~C $QF)NS^jubGZ/A.D9)k-JB0w>MХ;dWbX]:1UUd. b J8*m%J]Tg,Vt5m!MDK*mm^b[,̣fxÝ}Jlؕ77Iå1 ƢzAМqYC{jl3ÍCsZ&L:,تE9$=6<8d).~wv+?v kbuNѲq5 bKzϲ+RM>X[J=^P,?Od\vKr6) 1HT7_hm.a+0. HO&W٨D)gQk}kX>tɢF#ΤMw.*ʻ\łC sXkxF*. D5 %tH2ErvQ+H_Q^[vvXPhleb@5;pYGj;j;`jmx&j-swm^ϛCVjSa;RO*j._Ѣ%"Wh@Mչ=DA8_ JY)jBf[n`(JDǛGe'KT}QwL6Dwu5]^T1Ky%+x"W7!ȫ&+M66eOYӎLNdWc ,,!vnSGwpx=ř"aK؉|j84cѭa~NV <&5N!BjGgEs >;d89kz̭hjAb\gJZ҈A;o;Y{Kn1~P ό[5/N4V?$iqRUOD`U=YxfǬf羕ҹi1i|@iާKaWu26?14>8?k&R"V I?];pf3E&?gx9Mqac3r/i=B8c D:m|da5 ҂'sd8K߾XYpRH:8_=l#1vp+#5{rqEMA) =XPɒ+Y WDG`n'tcR$-K߰}n]bINWú)U:/[n3\2ZN3gmuv7VPq|ϓߖ-rZcns\)~1& /8ib!MQ /0 *=FG(F#kzI<=פ;b*֌6ԔzǭĔD:J ™du1KԪWVA{~xz!)j!5 ȟ*lm?Z[3[h{@0@?mTE Mf=xcLȀM@,]z0񅇡~@p5KlfبhD %zJP63xɋLB.tvSfgڧvTq㍜֛ݴp7L(=KB)u*:Fui?o@d$ͣ4Gf\UBN:m0I+;Q6wlDٔ{Ũbǚ&iEÄ-}yAbST}00{Œ `kW`/ɜ8Rxs$nN ^ї&ᴭ{>R1xM=C@SRHrSp)j_fxF̿!mBCVto -fI4/d:ha@'eRQF՝ݑsjZC/%D쁣t vwBkMG{Ff )oo'S[4j-e-$xjɘrnfbD4pnVrKꁿvBcZV`RmW0'kkow4gNX՘\ښ 6]^^^eVj9)iת{x)!׈[*[Q$̘NN%7Vp exё=O/PJNa_fV3׀Ov@5.o?V ;ARBikE8~u ji7lCR9Y-r>h2q^r.\a!*ql鉔ᴵhYzQ23m6Mxf' 0LeP5Ο 3}.PqZ! jAi2Ɨ.pf%`~&qni+foRqx@w -H6\WSCR ^l,xh}cןw!M<Yg3ubnlL#z.#2>e أdS<쨶{Far K?Z>wqK{C_wy-moB$E°Q 5#Y1b2 4p{h.Zvҽ}X@>u_薪u";LFkЉAnk"1E0$[QdힴCB c?k҅))EgX<'!AJ\1O׫osRyS6 4Nh$ Cfjato1TJ!/b0d]b5oid:蒌-pu\kE5 z1mL6kN D\v*Mg b ރAhTHhA)):?'u)J'rAW,"S+ }KM&h_K&_)C3.U``tܢ\6=>a9%Yض +JvbILm)_ܜzqa?9(Xb:XjC(JQR{!ܥB.:wۨnd ~]ȐaY|pcenZhod!be'X\r.G=B qRCiQwLqCTJ+t!ryP.*9Lq;\x[fMe 1?5($`LυV8QOڝ豱wW{dHFX ۔N')5~*UBhK5-~7Ў_PHAeQvAS&O* "%93QvzٮU[`vEdE]7HZ_U醃戢@SiaڃZ*٨'P9hPXtbnI{-b5IM?j7V>#CMGO51F_xI~[f{)1͖VC#Zs3u&_K22"z OgQqNhQ# 'ziiLDZ䵒:ji=ٱ\؈d^~&oNRQdB/Wb y]D "b:Z#56Npml5}P?HJSXX}~nc2k..$1:#6c}wU%N?pqSl% 1 AIPnֵpeW1h{xMʰĦ,%)VG1w0de}"^o,bGqȴdw"ɴ -`^h_nJdBNy-Bғ 22)  z+K.a}K(r4rc[ J'/:o5;l\p}at@HbbZ{y!A.N1{ O1R2]Mңlg3'̷_Q2$&ZLsV!}ށbSO!x!xyu3X#zNioPIOA_2ˬo56j\~h(Ǡ^G*C?MiV8Cm]GeX_upq̖idrP*v?SHP{jM1K# bܠ 6oujjQsJ!e2# fǻnN #ѷ×X9Uw4΀uA4eئ\xs`wQRjsSKje}α_y3yzJ+eQ%}4VE0y dz !6Hg9Yqf0;VVx,%X^*3kKUocrŏIf,h`o`~q=.7T;mڵ]gF'2J2\R fpYɢu{j%Iu8 Tfd#& ‰βr bwrg=ઝJ2WDvaxRatO|Uf]O YBIY5 wbdJChT(D nB*9'ĽcgEМKO6/,iE½~ZxL^qPP[A+2 qSDr>P޿OLdJsb&*fro2Hh`d1nu_ڇ9knXxL mǙ*FƜjhs &|I9iqN7bQ2h;O^M+x _w2֪pȓK wz|LUi7VXa;+".hG%p \.̗\U^Rp0^Sy0|dOH]oM$!RsFٖ\[%b7æI, j02\3#etF_$SnD@Mv'  f*[^?bO|j7yK2/dZD]2zi&:÷i^JXFYVشoyvd6q:aՎ5]/a]5'}' 4D™5׏qG22zcv5 a#[*V2|.dymAidF p9_j0y~_d 7fr_,Vq-Ԁ8,1~&fH7HhI e m6(;4~zH2@N0דN.o׮h_nzDd<>f\A2ȑjcha6&Q]HM! >`PI5ΘxeFn 0(R ]O@pV.Pav@_ǿ ;_'u $6;rUj]}bO,Z-|eSq8L6TE ȺKqnvz/BBa*!2a]GlDk`crTwl].5ˑCkn!|`<:S>c&џ eGZ q] 6:HLqfRYs[R)%"%ZӭBGe,/CDzO5-[0]_r)Oe` 1Qܨn5k@~(v!j Ȋu,QPXݤďײwO_7OcZZf[>5MTNS<5Dʣ:YހF$ a5^I[VP2z,bD}DbuVe 0sh*uB8`t B7Q\"l?{_+32'9v+%Gns^v),AYw=̗&r>+̸̿ӉO! r(l>N`OWl&Դo8*bkY:ZET,#r \8jִе6R^0Vs$!XUhNS&h,i1]Ւ69F)Ҟ 2=ӃN!d,ȗғa%<&}e/`ZI-ܬ+N^sdu a6&J3E9;{ΎeķL90jՍ66)GG q`o$y)6rUg}VI_"u:8|iI{!\lyW&L} LYs"[&Jgj=p ΁eF%| 呔pų0$9P7k/P'Ea]{jDԹ*i 3v*n̝X+XiJ]z4? 0<LEǶSfrG]geV`i![Шl5wn:`5:z_ dǷՁ[[%HI/E;wL:EC/Rv5GNN0pCS)Lnx&{V!dX˨!ٸr]˳2-<)JaD`u4z{7}Xj#Ɇ \ݢ[t%Syk#nM_>KxՀ+ a4ߖ.Ż.K% *@oEK',r;-UsO>S4 OYʷ'Okۻv.Vy ZT$3rweD`Qw;a!_ %øhΞ31H"Lfj[!kۣkkX8g.zk& SَedRʬәXꉜY2ܺ  pG: U1ܐr*&";~LE@  R#:PB[WO>e? ̓Hc҄^Pq㘞( V/yZkaYm }?aO5D%I{m՟>IEoᵈITL` +eLD¼1g#z&(Sl}B;`Do1 jEB tmiRзo6؊gI7K 8 iBu!A m]f4D@"u(T'z=[fv%R3p@eͷI.M#[Cª 93H/ű6Be )zkP0^hhz[KUPR5J{H#~t!l8*jx-Wdc)$h|Gq\rE;rxb+ kc'7<2)-w꠵;[fXcOLUѧ#p0M*OOc[{]ZDh2]%áyݠ؈aC enrMKTo7FgMұL " iމFK8az:$RY4V1ljȓ0[06܎+b^|[RҜ:D`D_;-I5MF,IFa,$&D@ \h A.u:Vn|0=_3qֺ|:N#ա#}Jp0TdVtiG"elCr=P 旋󋺥rf |&T)lea{8:?IV'FM& ODNtҐ;&B0}|6`f#&`_n|YE?]lE :7+@e ~ R ڱL)eD,__19Dnk%(W:f U_g~_sfQA Dā£odr\(%`8GŦK/پќ]d|."{H6zmrdYFL`/x0P(,DEPUXK'~m P`srj=fW;R)6K X{ =QrHhn3|0>Sb@&K*4dpo&lIj"? 借\k+W{ ĶG.Q@L99ا=}?vP YT6@Ѡ}Q4 h|+ͥiLÒ0(>Ipۏ.D7*g5"-,xC1-@_G+DŽڅhˡ W(`¥H -n T8\04yY՞s.yx_VB$ִTC Ҍ7uٕ^O&zCz>@q5>%FMSp`JBd24V&㈖3PF)1INj~-%[i'aؽ7L%|N.t`"I0e{ͪ^3@܆.?f3@\aVguY08^/ڙ p"DvzažeSΖm  &^ݫT @EH]OKR|iU+f4`^L׸_fdD~Yh$,N$ =No1d9Ed:PIV;$jRz*>5MF$9ꐤܬx7 0` yV,ofGH$DpkǫD(fy丘'UxI3 +lZ-NF)LJz0W2wpTL}T n=_#+`}w(zL%pnj+hWdj>u&=*,-}/Z~v l(l1ՈP"~^k_d!æ ?,W?9է*GQ sh&AqLz5_SؿJTXNw0cT`JVB{LuUo <<~qZ0ϡZ+/c3<7{qT}tz`=, eCl:9ye 4r b!hK'UQI1-&,x|Ӟ؄u)pk9FAӢ#r`!n(%5$lxj⎉h#omU.Ң3keZ54;GXF  ȊпODIaB4NQ)L)[FȲmttM;}}—.پBRrفj=FҳluvGInn]b[~YeiSUHmF"-%B N{6$qf~VCjı8 \FC$egB&/u/^0nSQmpX2$00DU+[ܚnQ0=w=@}'tg$Z8g#"?E_}!eC7GOZ}Cs38#%gġ#JEgӚ¦`<3u<1Lh_+mOL_▉iKZ&&[i'ƀCy^O1.FRFІ 2I*y*MOkqޑV (XO4!7}.t߀*hW4f﹁a݅svI!=V{Q:VB|( g |'HǬM@#0o+@Ϳϲ.||T\mJR:+WmՇ$54뗨UVZ|qB ΉW>&#, 8~"z&Pq[ S mn%͞1Ln>66R`ivUcvf5MSʅ7xF'sZ$Y~ G#U. t?"[]%ґ|`cM-z;.Vcpt띪zzQFqhHo`3S1E>܍8T#W`FIi cy8[3YεJaj>ξBy̲[uvwr!|?s&[f$HKH "H4BhT(be;@k| Lӣ y Y~wqݻl'm@!&~O WM^hLE>ދPk^(3J0XSyڟ н3߮](,TebqLK-aT~\ETJ4ΏV?ƣ͡*oH+*4!$?b~COݜW =p\kv7#~m(FqB"kA;B?*D`%p,!yp>>xusȧRꝡoFZ E~{eٗQ~'f8!Dg1b7mZyG#ؤ.e| }>zq͸ԕ4%L oIf~@G(%5NJ?SmD &Qc]T),Q7NQ!m\Mݦ$]mNW*1):Ua"I:Ob $(L"loN3=7x΅)c⾼z;}:T0S#%%0\Mr8[nj8dl ĩ\nEo|Xp U1C&o8J~=wX9 !cM8CTxG̙ү N@/mAQ@е0 9׫ߵ4TɆxj)s׭#Sݽ)c& :L^i9ڬgY!-gJּ]gs <һqL{Aږ݉oUsTp[ƤREvR7~㏔ z:h|^н+r\ܵէ(iyPaLxw e #e HK "!#d6WV{o@XtҘh#pMN RIuUkXcD|t$q9ōfc!5 _alMvu8(T:weD/Ό!+yE-Dus(;s~] x8hw<L "iG2Xz[kj0(m-9Ѡ0 w ۠ o97@ u P;&E OOiq~؞gbۅ+պ QهP,nqhOq0\Nkb(rU;c XŘV=`EY! zC?I(J=N0Xz NDJujN-reWH"ؤ,.)s Sf1@B})"w.&&ģau,wv{8=N6`Y!B!srn,ijxcyΠyuVv?a&3ShD/å[0;h%/ ӍsZ GR?"":r''cIjNcK]fl"m?\W{H֗W]P_{c;sYWFh UiD5 K8lAo><^n9^y>KDGm TZ{ ]c͔I5}>hQҧެ= }2mUbƆ*`~Kۣ?۫ fKt3HAي^}1ֱ,_H!g2g,<)ӁQ3K&s^JH)A8-Nh?| ?!:;4%] v)[s.e_l5ö+r}:? @-Z4{ Ќ T{fCFmB OL <|#cBM42b \V'wC)f%S[Rfڜq6}rH!Šo@!~H=-@;Ҿ|DPQmVW;Yni8cI:FBu)2nQ ÞFݶ&J[DD #4֥m); = ,1*[+KmDj*)w6 mA<a^b1Xl!|0 kSp?TSuT^. o$é sУ- {"v;p%ZEU{|A lNͻk( q\^YlF_Z3JpZ-\~x@+P0rZ2|fo'G)n& is(Qu0Yl֛DP,]S^c5"":XkCA' W( i(-u㛺ZShj dv[IdKO4_sn!o}*;7ͽqȳʪ6Y_S3ۙ/M̌tr/l NDdczT - -4c6- m_tHTc1a{-R|{y&{O]X:k4Q3׸UoG\Fdw@Ur'/ F7zi؈hQBj[H_X(/8g%co ӍknCOg\iFDEA8{D9˯wrtHߟ}PMG}ud1}8ǯ)XI ;^+? kUg|Hf-/_} ;FO,F0s* 뽨 ۹]~‹W5_+{k'~lv9 7/ӓbm.؇¬n6EJQB>>{e{Rd|7%v{?ڝt^uLu^,&#NĔeǨ8>$o?P xÿEx3O<  Y8 m{eՆڄq:[tXS ==L)@AgZi(Yj勼E뿠 r̦{cKXakMRjd !o&"7 8$#QHuQΙHMbw{3"okmtW6y+(ɖg B[ߺ5* L8ì`r^ t  ʺ=#%%.<bXjE )n!0 u櫫J~HxHFրf|} %}bxvhDVsOU']/g:̸^R!FOx#Y*@7r[9W֔Qm_u2Ji|C&zVߡV=#9:>?Z#hM,G̓ `:3BA̪yp ё]O,Rv~(e[4qBe$ w~)/o|$Bj%$HS/S!y6zz8=28b)Ds.>:~{,H^`{lڵ2 zvO !F@Hjt}cohQ?\4[gOnʇY(Nq٘>CnGZuX/K]i/KQRad?wKb>]Tl8<  ^l5*A֕NU nH$1P\sK]w>7yyQΆvWt5@fGgV|=r }G^{N.wy8hsTy\G ZZ'0GCKumq+*uYs0~dRp `**c0TҌ4^%` K{@ꬉA` 鑹I=(X35|MFK(Xϗɳi_]}UsJMC-=xsauDN?zs+ (d@"* @{^O~w @O.t_25' &\hE\q(+ Q~ab)\ =p6i:S%,nAo&EG~; 2o\ES@4}'Ǡnh GL6MJ3 ;l 6u߶PO7B*]+RË >5py, r'..@8Ϫ "梜:t:rؙv$s,5FZj+u(xO[6qՈJfY^Ά\NOU&/g`cM@S;9]>D.J>[Ti)@tS,G]BLTEaٍLtr$`?D)[G^%FDC"T ue'%$bOjE+|❞!}@0J{d/g_5؅+|Gb>S4-#PG-3kSo^ht68/g-3 jkBn!ӗS4Z]e M8op|T]ģ0қ`f1IPo(yt\G0K5$PA()[⛨z/%kddܣӅD=mt_'̍|q>v:șfh:?Nǎj;D¯V dF*RɩqV F/ԟuruils$8MuI%$a'^%jߎ#s]ݿ,{n˂{nf7R74GٳXI'"8`Z?nݎ8'9lww)QK52e!31rB }.UQTc%]p*O} W2pg]Euv*(&w<|Bmسfkrcұ݅Y:gBsBhw/N'I[{sHޖ 0]5v/w?t5\L /1h% Knٱ`E]<8$,c1U:0>ƅh]gFp$'c[/w;c+#cc# xY'c'3"ۜ|yߞC=rE [~N`2-@T(ydu euXZ՝z!h'*\Pniɐkƞ\afᏔ̰)ffBvn}֙x83I(U0\³.*$+o0x;XQ# I;o|*K`{sPpa4Ȯ&Z'Rϭ'F-$G?h71׫fh}Iv# ޙ&D(2rӵ/(7rC1\5Do .?*qQD&kvGg5<_H6I lxfv-=o^Q 6Ji؀{N4B\$Wf1Sb׌ܑ͢q_ [vÆ6`ZѾ?YJSR*LKl(li7^ 0gf`ou9^TZ _-daiH)"sJh|Ӓ, iWi-ƞ { Y$ği0unsm-^hjeI8Z'6QB 5f$KeaǮ(B#0~>WIY_m3?7F5DcŚ I[o3Dk0 v@kIq\HJ1Gc+#S^&97SŽg*,8N`DTd̆l/Ui0mpP6'Crٮzj~$rlepւB'\TywL1A"ۙJI+=G<@-yx*)\L[Ëqt )z Oޔ #P̄nap{^U]9^@i z8DP /ZӦ,q6,'\w<4Ǽjܵ^qkp] *g*)$@{}4:K{b p.36C#;*b7` iAJQ| UZF Mt}BvK3[oH,9TNVkzjRmߤ˘s< X׸#dqM{pNkxfSeқ80"wk1hl֍U`#Mc2-a@YQk<,TNb*>uQFyXGn锐*LB[pLT;Lh +r#Zvc%/Ƭ`oܴ1 Fz xY8h xE@yePr29!{ԟ>u惣zv&VA[|d6*PrGcW}%,B7F#oMA:'OSDnq  fM|``J,KmxJ%㵁< beHoE3UA5P{i9{H!] 0BG\ NPmґeǧic܆+(Uj;3W9CޤgX{u@pߔ/Y$ʍe؏D [=>˸Kw68ld3E(_uǪp򳝄iI24jE,ln(fPU[B3m0 Q}]^Q+?: crPXiCСx֐ۋk' ܻXzŃp /G BR%&ǂ1ג;~N"YuZ:*~P=h gL9WO dL'r;{_g~,bwْx’~Tq,f('āH7o7*Z MIwXG)i$cS1Z ~<, AJb z⺩p$?jMM/8R%,W r5ԲCa MUrm:7C+'0k`ëMu^>$1OK;`*D'&"i3zPZå'gDI'q)!N y/BʉėSpxnzVʳ93([BKKjpek ^ ve%#5+H)1tn a)z"wj!RGbB^-{oҙ(;5QnIPc99TeqK%~2 PfY&~WU /bQ>k9SzW͖PlҼTkn $ޗu8,6uL- Ǚ*r,Q~w Xb(* DwsKur\5E]SuNh&mlQl"Loםvma179'p%ʃgUIŐK QdĊIlVTH17 v% *0 ^4~cqr4kH#M{| @۝!E>;BszaJ-<]6cko%/Ͳ6Kd4e#h_ղu\#/2^L0Xob׷ Җ@zxmUډ7Qm|(Z}t>Eq:Hlz9C,8r-3abar#Udp?.|DgVTV>?On6wJ ZDP-5uUH)YQXT(-^bBAj\3"Qf]#Ū 7%d|;Lc0chX1KkQ M!ǃIb)"yіP+#Js*dyH eu2}csi%8 ?+AZ~UCnkjf,l8K+kuqfZ pBO(Y',=q  x 8T7m1ڕY8!Vwh&ǦX%8GRiJ^N]ːiG8.-߃$0(Nrcgj2o7xyhdUJxSdBhzţ!32gOgiѸkp{GäV.cV#BvsXTAC_Jg[ LWY_z $>g:t!N~A^jxuE c#%me!7HA>^adRIџ׆x? uTP*d[$<[eҝ% : yci@tKZM=ckmo[!IjV_GzJSy+4G#yNqEîƻcZpNevT$Zf6#*G٢$|:ZN/vWB͍AFNB>G7  E ”57 n h곗yXqimT[KNN9BItP 9.L(2Ks6_~C>6!}O[w1PgIGQɄ~!$/|B[52D$3 dt|h!Q+Ex}5,5<( rl`Z# 2: G]AIFҺN5Y>*6HU'{nR}tx+3Z֠}lY->^ΆOyc|~=)es"n'pFjA@WE>23g[g6͔=]-Pz(~5D)T6=!päP\9;][̄WݖmM ch򮈃,a2haGy'Ok*mJA_YQ vO{رR"3`T=bOs~KO9&2̎4+vVgJrX_ԡ͘# f̉C_1+|g/^tVuw=GG)VFQ%>WU@ ~*Xy].G") 1;ǀ>6Wש.ӫ,z'"BQh.ɑ(l7N*]]!W9_ Th` _?xa۱VfV5aIy6U9Q+PjKkV能(N!6ߴF]1h-N+>3UUrxkUꥈbeԥ`2 Ɏ|l,р/anu6'㱿}OЁyBÈSM܊vkAu ]]9;$x$ wK)?b0RBSE?u8^#_d3Yj?c,!^8z5-'p+3?`Ao>8(17 d|7\Z#Z"+\+o Ed?w iL Jq-V5 &IX%GQ Pt@MSTч0,7 j)M0?>ԶaYOo.ȯ^F:ȸ?ᐍ0ͫXYx>Վ4NٽϷaCy$q`V; Lv6t {ljN7GաQ6╸LO:̊jK;M ɰ#E("BJW^XN+mHx )9wj=I#;CG,M= 2&˙bThreֺ;/(3k^ KSQdeJlB8$!`vE價s6RG$h ZYKf A/X\eݞmG #% 9xDw0Ol`s`K xTg ]NŀCG5txB5./WQ:̗8Hy[ifbɥHm[Jg"~ [_ rԓܗ,YL^w6g>CދƳx`3QL*(1i֦O"ŝfv5iI]ҀU(Ffٰpʌ^CLUMn/%iko&wKdWʫbS ȃ26լe-yCRdRqu,8;Vkv8tDhk8%JRiТB8L#c0{!4u Tt+|KnP=b"fm/9@4Aly^LY!Vra,1+{001%0v*#av@4)([8,RQ rW1|%:l7}d(_D F+KDŽDLt, ==5ݧxØKΞ~Hi5C32!X#Fm~/yK.D؍.f4n fUJV\ٸ25Kvޡvmql?c'J*·"'pЯʡ!/z x{Xmf`^Lrd!3=$htܯW{$$m:/pz /l+KݻlZ ##AmTb7No9kHz0bo);6O⛎`o522- us~bEHEwC{;6M!6Fky,sqIA<ʼnэQ6SWtFKTu_Vb21ZHGDM2@O]pϛ^zK Q[ߴ @H*=!|^ey,g$SAZjgy!vv `MY ^>Q"Z0I3acכ3CE;3>[%mziW)FLԮ -(zm_s9 )2pn^n! EG`bk[ )ݳQj{˨_h~-Nqw@ƣXNuzF{'>\]+IL_vqGY➏&fL &6HԆ1;/ɦNQd!xaZvY)~^^;}2䳬H Te};{8~AX_ ?v1.Hw^f&W܉/Z3!3`*nҋ2 (#Ҳ%:'0x F<7 a[Q]rF-SQE'c 9~cԪGڟ::lcŌD_N_y9xhɆE5o&$MiPDXBAF v ȑM^'OjsDN%CI{+v:FT;X(yK؁K'螓8sp bztU2IyߢvhuSt2't쁆Ukby$)|n'KL:lti7#/(keeHTeL}ix1%|O_j|! Z#u3Tʭ:&\SrkS@}8Ʀtϵaܾ-NJݧ6rV6~kP?V&n6xeDWn6h> *V?L/gIcUyz,r/"P T/K&%kE> NiMJWrLGרEōS^lobYlsgNp:A*>~ՠkW[CMz h%sYVZOCڥoLz9QY˸Mapjf@ 窮6&`9ϟ BiM>bOL@kmr"7cs>W{ˤ|V(Ǹ0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/n022023l.afm0000644000077100007710000007661007260330360015414 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development Comment Creation Date: 12/22/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName NimbusMonL-ReguObli FullName Nimbus Mono L Regular Oblique FamilyName Nimbus Mono L Weight Regular ItalicAngle -12.0 IsFixedPitch false UnderlinePosition -100 UnderlineThickness 50 Version 1.05 Notice (URW)++,Copyright 1999 by (URW)++ Design & Development EncodingScheme AdobeStandardEncoding FontBBox -61 -237 774 811 CapHeight 563 XHeight 417 Descender -186 Ascender 604 StartCharMetrics 316 C 32 ; WX 600 ; N space ; B 319 0 319 0 ; C 33 ; WX 600 ; N exclam ; B 246 -15 463 618 ; C 34 ; WX 600 ; N quotedbl ; B 254 315 582 604 ; C 35 ; WX 600 ; N numbersign ; B 137 -62 589 647 ; C 36 ; WX 600 ; N dollar ; B 131 -92 582 655 ; C 37 ; WX 600 ; N percent ; B 137 -12 591 611 ; C 38 ; WX 600 ; N ampersand ; B 132 -16 527 519 ; C 39 ; WX 600 ; N quoteright ; B 207 314 468 604 ; C 40 ; WX 600 ; N parenleft ; B 335 -124 583 604 ; C 41 ; WX 600 ; N parenright ; B 124 -124 372 604 ; C 42 ; WX 600 ; N asterisk ; B 211 250 586 604 ; C 43 ; WX 600 ; N plus ; B 131 32 588 530 ; C 44 ; WX 600 ; N comma ; B 110 -145 371 145 ; C 45 ; WX 600 ; N hyphen ; B 131 258 588 299 ; C 46 ; WX 600 ; N period ; B 235 -15 386 116 ; C 47 ; WX 600 ; N slash ; B 99 -81 625 668 ; C 48 ; WX 600 ; N zero ; B 156 -15 571 618 ; C 49 ; WX 600 ; N one ; B 117 0 492 612 ; C 50 ; WX 600 ; N two ; B 84 0 572 618 ; C 51 ; WX 600 ; N three ; B 110 -15 579 618 ; C 52 ; WX 600 ; N four ; B 141 0 545 604 ; C 53 ; WX 600 ; N five ; B 113 -15 584 604 ; C 54 ; WX 600 ; N six ; B 184 -15 631 618 ; C 55 ; WX 600 ; N seven ; B 215 -1 606 604 ; C 56 ; WX 600 ; N eight ; B 143 -15 576 618 ; C 57 ; WX 600 ; N nine ; B 142 -15 589 618 ; C 58 ; WX 600 ; N colon ; B 235 -15 450 417 ; C 59 ; WX 600 ; N semicolon ; B 114 -145 426 417 ; C 60 ; WX 600 ; N less ; B 131 44 627 518 ; C 61 ; WX 600 ; N equal ; B 95 190 625 375 ; C 62 ; WX 600 ; N greater ; B 92 44 588 518 ; C 63 ; WX 600 ; N question ; B 231 -15 581 577 ; C 64 ; WX 600 ; N at ; B 139 -62 561 624 ; C 65 ; WX 600 ; N A ; B 13 0 596 563 ; C 66 ; WX 600 ; N B ; B 47 0 591 563 ; C 67 ; WX 600 ; N C ; B 110 -16 635 576 ; C 68 ; WX 600 ; N D ; B 47 0 592 563 ; C 69 ; WX 600 ; N E ; B 47 0 619 563 ; C 70 ; WX 600 ; N F ; B 47 0 640 563 ; C 71 ; WX 600 ; N G ; B 108 -16 636 576 ; C 72 ; WX 600 ; N H ; B 57 0 646 563 ; C 73 ; WX 600 ; N I ; B 117 0 603 563 ; C 74 ; WX 600 ; N J ; B 100 -16 699 563 ; C 75 ; WX 600 ; N K ; B 47 0 662 563 ; C 76 ; WX 600 ; N L ; B 67 0 585 563 ; C 77 ; WX 600 ; N M ; B 15 0 700 563 ; C 78 ; WX 600 ; N N ; B 46 0 678 563 ; C 79 ; WX 600 ; N O ; B 102 -16 616 576 ; C 80 ; WX 600 ; N P ; B 47 0 587 563 ; C 81 ; WX 600 ; N Q ; B 102 -115 616 576 ; C 82 ; WX 600 ; N R ; B 47 0 594 563 ; C 83 ; WX 600 ; N S ; B 96 -17 602 577 ; C 84 ; WX 600 ; N T ; B 152 0 648 563 ; C 85 ; WX 600 ; N U ; B 136 -16 676 563 ; C 86 ; WX 600 ; N V ; B 124 0 707 563 ; C 87 ; WX 600 ; N W ; B 122 0 696 563 ; C 88 ; WX 600 ; N X ; B 44 0 662 563 ; C 89 ; WX 600 ; N Y ; B 153 0 665 563 ; C 90 ; WX 600 ; N Z ; B 103 0 590 563 ; C 91 ; WX 600 ; N bracketleft ; B 254 -124 570 604 ; C 92 ; WX 600 ; N backslash ; B 250 -81 474 668 ; C 93 ; WX 600 ; N bracketright ; B 132 -124 448 604 ; C 94 ; WX 600 ; N asciicircum ; B 192 354 567 615 ; C 95 ; WX 600 ; N underscore ; B -61 -125 564 -75 ; C 96 ; WX 600 ; N quoteleft ; B 388 343 544 604 ; C 97 ; WX 600 ; N a ; B 93 -16 546 431 ; C 98 ; WX 600 ; N b ; B 26 -16 591 604 ; C 99 ; WX 600 ; N c ; B 121 -17 596 432 ; C 100 ; WX 600 ; N d ; B 102 -16 630 604 ; C 101 ; WX 600 ; N e ; B 104 -16 570 431 ; C 102 ; WX 600 ; N f ; B 109 0 663 604 ; C 103 ; WX 600 ; N g ; B 105 -186 647 431 ; C 104 ; WX 600 ; N h ; B 55 0 556 604 ; C 105 ; WX 600 ; N i ; B 96 0 513 624 ; C 106 ; WX 600 ; N j ; B 112 -186 547 624 ; C 107 ; WX 600 ; N k ; B 67 0 578 604 ; C 108 ; WX 600 ; N l ; B 96 0 513 604 ; C 109 ; WX 600 ; N m ; B 15 0 603 431 ; C 110 ; WX 600 ; N n ; B 57 0 546 431 ; C 111 ; WX 600 ; N o ; B 111 -16 577 431 ; C 112 ; WX 600 ; N p ; B -13 -186 593 431 ; C 113 ; WX 600 ; N q ; B 105 -186 668 431 ; C 114 ; WX 600 ; N r ; B 88 0 619 427 ; C 115 ; WX 600 ; N s ; B 108 -17 558 431 ; C 116 ; WX 600 ; N t ; B 127 -16 518 563 ; C 117 ; WX 600 ; N u ; B 127 -16 569 417 ; C 118 ; WX 600 ; N v ; B 114 0 655 417 ; C 119 ; WX 600 ; N w ; B 114 0 655 417 ; C 120 ; WX 600 ; N x ; B 55 0 611 417 ; C 121 ; WX 600 ; N y ; B 22 -186 634 417 ; C 122 ; WX 600 ; N z ; B 115 0 563 417 ; C 123 ; WX 600 ; N braceleft ; B 248 -124 528 604 ; C 124 ; WX 600 ; N bar ; B 257 -124 444 604 ; C 125 ; WX 600 ; N braceright ; B 175 -124 455 604 ; C 126 ; WX 600 ; N asciitilde ; B 145 212 575 348 ; C 161 ; WX 600 ; N exclamdown ; B 222 -216 439 417 ; C 162 ; WX 600 ; N cent ; B 175 -13 563 630 ; C 163 ; WX 600 ; N sterling ; B 90 0 541 578 ; C 164 ; WX 600 ; N fraction ; B 84 138 645 470 ; C 165 ; WX 600 ; N yen ; B 161 0 665 563 ; C 166 ; WX 600 ; N florin ; B 74 -93 643 618 ; C 167 ; WX 600 ; N section ; B 91 -62 624 603 ; C 168 ; WX 600 ; N currency ; B 127 95 597 489 ; C 169 ; WX 600 ; N quotesingle ; B 344 315 492 604 ; C 170 ; WX 600 ; N quotedblleft ; B 221 343 586 604 ; C 171 ; WX 600 ; N guillemotleft ; B 108 0 626 417 ; C 172 ; WX 600 ; N guilsinglleft ; B 108 0 397 417 ; C 173 ; WX 600 ; N guilsinglright ; B 297 0 585 417 ; C 174 ; WX 600 ; N fi ; B 14 0 615 624 ; C 175 ; WX 600 ; N fl ; B 14 0 611 604 ; C 177 ; WX 600 ; N endash ; B 131 261 588 302 ; C 178 ; WX 600 ; N dagger ; B 208 -63 561 604 ; C 179 ; WX 600 ; N daggerdbl ; B 154 -62 561 604 ; C 180 ; WX 600 ; N periodcentered ; B 285 217 436 348 ; C 182 ; WX 600 ; N paragraph ; B 152 -62 648 604 ; C 183 ; WX 600 ; N bullet ; B 253 141 449 337 ; C 184 ; WX 600 ; N quotesinglbase ; B 110 -145 371 145 ; C 185 ; WX 600 ; N quotedblbase ; B 73 -116 538 145 ; C 186 ; WX 600 ; N quotedblright ; B 170 343 635 604 ; C 187 ; WX 600 ; N guillemotright ; B 67 0 585 417 ; C 188 ; WX 600 ; N ellipsis ; B 57 -15 557 84 ; C 189 ; WX 600 ; N perthousand ; B 91 -9 598 614 ; C 191 ; WX 600 ; N questiondown ; B 105 -175 455 417 ; C 193 ; WX 600 ; N grave ; B 286 490 429 639 ; C 194 ; WX 600 ; N acute ; B 388 490 577 639 ; C 195 ; WX 600 ; N circumflex ; B 263 490 554 639 ; C 196 ; WX 600 ; N tilde ; B 258 516 579 605 ; C 197 ; WX 600 ; N macron ; B 273 536 564 576 ; C 198 ; WX 600 ; N breve ; B 280 489 574 621 ; C 199 ; WX 600 ; N dotaccent ; B 368 511 470 611 ; C 200 ; WX 600 ; N dieresis ; B 258 511 581 611 ; C 202 ; WX 600 ; N ring ; B 326 480 516 661 ; C 203 ; WX 600 ; N cedilla ; B 181 -173 356 0 ; C 205 ; WX 600 ; N hungarumlaut ; B 263 490 576 633 ; C 206 ; WX 600 ; N ogonek ; B 258 -155 408 0 ; C 207 ; WX 600 ; N caron ; B 286 490 577 639 ; C 208 ; WX 600 ; N emdash ; B 60 261 659 302 ; C 225 ; WX 600 ; N AE ; B 14 0 690 563 ; C 227 ; WX 600 ; N ordfeminine ; B 229 279 511 574 ; C 232 ; WX 600 ; N Lslash ; B 66 0 586 563 ; C 233 ; WX 600 ; N Oslash ; B 34 -43 685 605 ; C 234 ; WX 600 ; N OE ; B 62 0 690 563 ; C 235 ; WX 600 ; N ordmasculine ; B 243 284 543 577 ; C 241 ; WX 600 ; N ae ; B 36 -16 630 431 ; C 245 ; WX 600 ; N dotlessi ; B 96 0 513 417 ; C 248 ; WX 600 ; N lslash ; B 96 0 524 604 ; C 249 ; WX 600 ; N oslash ; B 47 -43 637 458 ; C 250 ; WX 600 ; N oe ; B 50 -16 630 431 ; C 251 ; WX 600 ; N germandbls ; B 47 -16 539 604 ; C -1 ; WX 600 ; N Udieresis ; B 136 -16 676 762 ; C -1 ; WX 600 ; N Uacute ; B 136 -16 676 789 ; C -1 ; WX 600 ; N Scedilla ; B 96 -179 602 577 ; C -1 ; WX 600 ; N Tcaron ; B 152 0 648 789 ; C -1 ; WX 600 ; N Scaron ; B 96 -17 618 789 ; C -1 ; WX 600 ; N Rcaron ; B 47 0 594 789 ; C -1 ; WX 600 ; N Racute ; B 47 0 594 789 ; C -1 ; WX 600 ; N Sacute ; B 96 -17 602 789 ; C -1 ; WX 600 ; N Otilde ; B 103 -16 618 755 ; C -1 ; WX 600 ; N ucircumflex ; B 127 -16 569 639 ; C -1 ; WX 600 ; N Ohungarumlaut ; B 102 -16 672 787 ; C -1 ; WX 600 ; N Uhungarumlaut ; B 136 -16 676 787 ; C -1 ; WX 600 ; N Yacute ; B 153 0 665 789 ; C -1 ; WX 600 ; N Eth ; B 47 0 592 563 ; C -1 ; WX 600 ; N Dcroat ; B 47 0 592 563 ; C -1 ; WX 600 ; N Zacute ; B 103 0 590 789 ; C -1 ; WX 600 ; N Uring ; B 136 -16 676 807 ; C -1 ; WX 600 ; N gbreve ; B 105 -186 647 621 ; C -1 ; WX 600 ; N eogonek ; B 104 -155 570 431 ; C -1 ; WX 600 ; N edotaccent ; B 104 -16 570 611 ; C -1 ; WX 600 ; N ecaron ; B 104 -16 577 639 ; C -1 ; WX 600 ; N Ugrave ; B 136 -16 676 789 ; C -1 ; WX 600 ; N Thorn ; B 47 0 566 563 ; C -1 ; WX 600 ; N eacute ; B 104 -16 570 639 ; C -1 ; WX 600 ; N edieresis ; B 104 -16 586 611 ; C -1 ; WX 600 ; N dcaron ; B 102 -16 774 618 ; C -1 ; WX 600 ; N ccedilla ; B 122 -173 596 431 ; C -1 ; WX 600 ; N ccaron ; B 121 -17 596 639 ; C -1 ; WX 600 ; N cacute ; B 121 -17 596 639 ; C -1 ; WX 600 ; N aogonek ; B 93 -155 546 431 ; C -1 ; WX 600 ; N aring ; B 93 -16 546 661 ; C -1 ; WX 600 ; N atilde ; B 93 -16 570 605 ; C -1 ; WX 600 ; N abreve ; B 93 -16 574 621 ; C -1 ; WX 600 ; N egrave ; B 104 -16 570 639 ; C -1 ; WX 600 ; N agrave ; B 93 -16 546 639 ; C -1 ; WX 600 ; N aacute ; B 93 -16 546 639 ; C -1 ; WX 600 ; N adieresis ; B 93 -16 571 611 ; C -1 ; WX 600 ; N Uogonek ; B 136 -155 676 563 ; C -1 ; WX 600 ; N ugrave ; B 127 -16 569 639 ; C -1 ; WX 600 ; N uacute ; B 127 -16 569 639 ; C -1 ; WX 600 ; N udieresis ; B 127 -16 573 611 ; C -1 ; WX 600 ; N tcaron ; B 127 -16 593 618 ; C -1 ; WX 600 ; N scommaaccent ; B 108 -237 558 431 ; C -1 ; WX 600 ; N Zcaron ; B 103 0 604 789 ; C -1 ; WX 600 ; N ecircumflex ; B 104 -16 570 639 ; C -1 ; WX 600 ; N Ucircumflex ; B 136 -16 676 789 ; C -1 ; WX 600 ; N acircumflex ; B 93 -16 546 639 ; C -1 ; WX 600 ; N Zdotaccent ; B 103 0 590 762 ; C -1 ; WX 600 ; N scaron ; B 107 -17 584 639 ; C -1 ; WX 600 ; N Amacron ; B 13 0 596 723 ; C -1 ; WX 600 ; N sacute ; B 108 -17 577 639 ; C -1 ; WX 600 ; N Tcommaaccent ; B 152 -237 648 563 ; C -1 ; WX 600 ; N Ydieresis ; B 153 0 665 762 ; C -1 ; WX 600 ; N thorn ; B -13 -186 593 590 ; C -1 ; WX 600 ; N Emacron ; B 47 0 619 723 ; C -1 ; WX 600 ; N Ograve ; B 102 -16 616 789 ; C -1 ; WX 600 ; N Oacute ; B 102 -16 616 789 ; C -1 ; WX 600 ; N Odieresis ; B 102 -16 616 762 ; C -1 ; WX 600 ; N Ntilde ; B 46 0 678 755 ; C -1 ; WX 600 ; N Ncaron ; B 46 0 678 789 ; C -1 ; WX 600 ; N Nacute ; B 46 0 678 789 ; C -1 ; WX 600 ; N Lcaron ; B 67 0 638 576 ; C -1 ; WX 600 ; N Lacute ; B 67 0 585 789 ; C -1 ; WX 600 ; N Idotaccent ; B 117 0 603 762 ; C -1 ; WX 600 ; N racute ; B 88 0 619 639 ; C -1 ; WX 600 ; N Icircumflex ; B 117 0 603 789 ; C -1 ; WX 600 ; N ohungarumlaut ; B 111 -16 616 633 ; C -1 ; WX 600 ; N otilde ; B 111 -16 586 605 ; C -1 ; WX 600 ; N Euro ; B 60 -16 634 576 ; C -1 ; WX 600 ; N ocircumflex ; B 111 -16 577 639 ; C -1 ; WX 600 ; N onesuperior ; B 249 259 469 612 ; C -1 ; WX 600 ; N twosuperior ; B 230 259 514 612 ; C -1 ; WX 600 ; N threesuperior ; B 245 251 516 612 ; C -1 ; WX 600 ; N Igrave ; B 117 0 603 789 ; C -1 ; WX 600 ; N Iacute ; B 117 0 603 789 ; C -1 ; WX 600 ; N Imacron ; B 117 0 603 723 ; C -1 ; WX 600 ; N Iogonek ; B 117 -155 603 563 ; C -1 ; WX 600 ; N Idieresis ; B 117 0 611 762 ; C -1 ; WX 600 ; N Gbreve ; B 108 -16 656 777 ; C -1 ; WX 600 ; N Umacron ; B 136 -16 676 723 ; C -1 ; WX 600 ; N Kcommaaccent ; B 47 -237 662 563 ; C -1 ; WX 600 ; N ograve ; B 111 -16 577 639 ; C -1 ; WX 600 ; N Scommaaccent ; B 96 -237 602 577 ; C -1 ; WX 600 ; N Eogonek ; B 47 -155 619 563 ; C -1 ; WX 600 ; N oacute ; B 111 -16 577 639 ; C -1 ; WX 600 ; N Edotaccent ; B 47 0 619 762 ; C -1 ; WX 600 ; N iogonek ; B 96 -155 513 624 ; C -1 ; WX 600 ; N gcommaaccent ; B 105 -186 647 668 ; C -1 ; WX 600 ; N odieresis ; B 111 -16 581 611 ; C -1 ; WX 600 ; N ntilde ; B 57 0 570 605 ; C -1 ; WX 600 ; N ncaron ; B 57 0 577 639 ; C -1 ; WX 600 ; N Ecaron ; B 47 0 619 789 ; C -1 ; WX 600 ; N Ecircumflex ; B 47 0 619 789 ; C -1 ; WX 600 ; N scedilla ; B 108 -173 558 431 ; C -1 ; WX 600 ; N rcaron ; B 88 0 619 639 ; C -1 ; WX 600 ; N Egrave ; B 47 0 619 789 ; C -1 ; WX 600 ; N Eacute ; B 47 0 619 789 ; C -1 ; WX 600 ; N Gcommaaccent ; B 108 -237 636 576 ; C -1 ; WX 600 ; N Rcommaaccent ; B 47 -237 594 563 ; C -1 ; WX 600 ; N Edieresis ; B 47 0 619 762 ; C -1 ; WX 600 ; N nacute ; B 57 0 577 639 ; C -1 ; WX 600 ; N uogonek ; B 127 -155 569 417 ; C -1 ; WX 600 ; N umacron ; B 127 -16 569 576 ; C -1 ; WX 600 ; N Dcaron ; B 47 0 592 789 ; C -1 ; WX 600 ; N lcaron ; B 96 0 593 618 ; C -1 ; WX 600 ; N Ccaron ; B 110 -16 635 789 ; C -1 ; WX 600 ; N Cacute ; B 110 -16 635 789 ; C -1 ; WX 600 ; N Ccedilla ; B 110 -173 635 576 ; C -1 ; WX 600 ; N degree ; B 257 346 553 636 ; C -1 ; WX 600 ; N Aogonek ; B 13 -155 596 563 ; C -1 ; WX 600 ; N minus ; B 131 261 588 302 ; C -1 ; WX 600 ; N multiply ; B 143 100 577 464 ; C -1 ; WX 600 ; N divide ; B 131 25 588 540 ; C -1 ; WX 600 ; N Aring ; B 13 0 596 811 ; C -1 ; WX 600 ; N trademark ; B 90 243 710 563 ; C -1 ; WX 600 ; N rcommaaccent ; B 88 -237 619 427 ; C -1 ; WX 600 ; N lacute ; B 96 0 572 789 ; C -1 ; WX 600 ; N omacron ; B 111 -16 577 576 ; C -1 ; WX 600 ; N Atilde ; B 13 0 596 755 ; C -1 ; WX 600 ; N icircumflex ; B 95 0 536 639 ; C -1 ; WX 600 ; N igrave ; B 96 0 513 639 ; C -1 ; WX 600 ; N ncommaaccent ; B 57 -237 546 431 ; C -1 ; WX 600 ; N lcommaaccent ; B 96 -237 513 604 ; C -1 ; WX 600 ; N plusminus ; B 76 0 597 529 ; C -1 ; WX 600 ; N onehalf ; B 82 0 627 612 ; C -1 ; WX 600 ; N onequarter ; B 74 0 619 612 ; C -1 ; WX 600 ; N threequarters ; B 70 0 619 612 ; C -1 ; WX 600 ; N iacute ; B 96 0 535 639 ; C -1 ; WX 600 ; N Abreve ; B 13 0 596 777 ; C -1 ; WX 600 ; N kcommaaccent ; B 67 -237 578 604 ; C -1 ; WX 600 ; N Omacron ; B 102 -16 616 723 ; C -1 ; WX 600 ; N imacron ; B 96 0 564 576 ; C -1 ; WX 600 ; N emacron ; B 104 -16 570 576 ; C -1 ; WX 600 ; N amacron ; B 93 -16 564 576 ; C -1 ; WX 600 ; N tcommaaccent ; B 127 -237 518 563 ; C -1 ; WX 600 ; N ydieresis ; B 22 -186 634 611 ; C -1 ; WX 600 ; N zdotaccent ; B 115 0 563 611 ; C -1 ; WX 600 ; N zcaron ; B 115 0 576 639 ; C -1 ; WX 600 ; N zacute ; B 115 0 577 639 ; C -1 ; WX 600 ; N yacute ; B 22 -186 634 639 ; C -1 ; WX 600 ; N uhungarumlaut ; B 127 -16 576 633 ; C -1 ; WX 600 ; N eth ; B 111 -17 582 620 ; C -1 ; WX 600 ; N uring ; B 127 -16 569 661 ; C -1 ; WX 600 ; N Ocircumflex ; B 102 -16 616 789 ; C -1 ; WX 600 ; N commaaccent ; B 159 -237 322 -60 ; C -1 ; WX 600 ; N copyright ; B 57 -15 663 578 ; C -1 ; WX 600 ; N registered ; B 57 -15 663 578 ; C -1 ; WX 600 ; N Acircumflex ; B 13 0 596 789 ; C -1 ; WX 600 ; N idieresis ; B 96 0 568 611 ; C -1 ; WX 600 ; N lozenge ; B 149 -11 571 575 ; C -1 ; WX 600 ; N Delta ; B 43 0 557 563 ; C -1 ; WX 600 ; N notequal ; B 96 94 625 464 ; C -1 ; WX 600 ; N radical ; B 88 0 773 699 ; C -1 ; WX 600 ; N Agrave ; B 13 0 596 789 ; C -1 ; WX 600 ; N Aacute ; B 13 0 596 789 ; C -1 ; WX 600 ; N lessequal ; B 56 0 635 535 ; C -1 ; WX 600 ; N greaterequal ; B 71 0 600 535 ; C -1 ; WX 600 ; N logicalnot ; B 160 168 621 438 ; C -1 ; WX 600 ; N summation ; B 90 -127 616 563 ; C -1 ; WX 600 ; N partialdiff ; B 111 -16 580 581 ; C -1 ; WX 600 ; N Ncommaaccent ; B 46 -237 678 563 ; C -1 ; WX 600 ; N dcroat ; B 102 -16 690 604 ; C -1 ; WX 600 ; N brokenbar ; B 257 -124 444 604 ; C -1 ; WX 600 ; N Lcommaaccent ; B 67 -237 585 563 ; C -1 ; WX 600 ; N Adieresis ; B 13 0 596 762 ; C -1 ; WX 600 ; N mu ; B 86 -200 569 417 ; C -1 ; WX 600 ; N .notdef ; B 319 0 319 0 ; EndCharMetrics StartKernData StartKernPairs 998 KPX A C -41 KPX A Ccedilla -39 KPX A G -36 KPX A O -35 KPX A Odieresis -35 KPX A Q -37 KPX A T -34 KPX A U -41 KPX A Uacute -41 KPX A Ucircumflex -41 KPX A Udieresis -41 KPX A Ugrave -41 KPX A V -78 KPX A W -20 KPX A Y -35 KPX A a 1 KPX A b 40 KPX A c -26 KPX A ccedilla -23 KPX A comma -47 KPX A d -17 KPX A e -21 KPX A g -27 KPX A guillemotleft -57 KPX A guilsinglleft -57 KPX A hyphen -35 KPX A o -22 KPX A period -70 KPX A q -27 KPX A quotedblright -82 KPX A quoteright -102 KPX A t -33 KPX A u -23 KPX A v -59 KPX A w -27 KPX A y -63 KPX Aacute C -41 KPX Aacute G -36 KPX Aacute O -35 KPX Aacute Q -37 KPX Aacute T -34 KPX Aacute U -41 KPX Aacute V -78 KPX Aacute W -20 KPX Aacute Y -35 KPX Aacute a 1 KPX Aacute b 40 KPX Aacute c -26 KPX Aacute comma -47 KPX Aacute d -17 KPX Aacute e -21 KPX Aacute g -27 KPX Aacute guillemotleft -57 KPX Aacute guilsinglleft -57 KPX Aacute hyphen -35 KPX Aacute o -22 KPX Aacute period -70 KPX Aacute q -27 KPX Aacute quoteright -102 KPX Aacute t -33 KPX Aacute u -23 KPX Aacute v -59 KPX Aacute w -27 KPX Aacute y -63 KPX Acircumflex C -41 KPX Acircumflex G -36 KPX Acircumflex O -35 KPX Acircumflex Q -37 KPX Acircumflex T -34 KPX Acircumflex U -41 KPX Acircumflex V -78 KPX Acircumflex W -20 KPX Acircumflex Y -35 KPX Acircumflex comma -47 KPX Acircumflex period -70 KPX Adieresis C -41 KPX Adieresis G -36 KPX Adieresis O -35 KPX Adieresis Q -37 KPX Adieresis T -34 KPX Adieresis U -41 KPX Adieresis V -78 KPX Adieresis W -20 KPX Adieresis Y -35 KPX Adieresis a 1 KPX Adieresis b 40 KPX Adieresis c -26 KPX Adieresis comma -47 KPX Adieresis d -17 KPX Adieresis g -27 KPX Adieresis guillemotleft -57 KPX Adieresis guilsinglleft -57 KPX Adieresis hyphen -35 KPX Adieresis o -22 KPX Adieresis period -70 KPX Adieresis q -27 KPX Adieresis quotedblright -82 KPX Adieresis quoteright -102 KPX Adieresis t -33 KPX Adieresis u -23 KPX Adieresis v -59 KPX Adieresis w -27 KPX Adieresis y -63 KPX Agrave C -41 KPX Agrave G -36 KPX Agrave O -35 KPX Agrave Q -37 KPX Agrave T -34 KPX Agrave U -41 KPX Agrave V -78 KPX Agrave W -20 KPX Agrave Y -35 KPX Agrave comma -47 KPX Agrave period -70 KPX Aring C -41 KPX Aring G -36 KPX Aring O -35 KPX Aring Q -37 KPX Aring T -34 KPX Aring U -41 KPX Aring V -78 KPX Aring W -20 KPX Aring Y -35 KPX Aring a 1 KPX Aring b 40 KPX Aring c -26 KPX Aring comma -47 KPX Aring d -17 KPX Aring e -21 KPX Aring g -27 KPX Aring guillemotleft -57 KPX Aring guilsinglleft -57 KPX Aring hyphen -35 KPX Aring o -22 KPX Aring period -70 KPX Aring q -27 KPX Aring quotedblright -82 KPX Aring quoteright -102 KPX Aring t -33 KPX Aring u -23 KPX Aring v -59 KPX Aring w -27 KPX Aring y -63 KPX Atilde C -41 KPX Atilde G -36 KPX Atilde O -35 KPX Atilde Q -37 KPX Atilde T -34 KPX Atilde U -41 KPX Atilde V -78 KPX Atilde W -20 KPX Atilde Y -35 KPX Atilde comma -47 KPX Atilde period -70 KPX B A -15 KPX B AE -16 KPX B Aacute -15 KPX B Acircumflex -15 KPX B Adieresis -15 KPX B Aring -15 KPX B Atilde -15 KPX B O -15 KPX B OE 5 KPX B Oacute -15 KPX B Ocircumflex -15 KPX B Odieresis -15 KPX B Ograve -15 KPX B Oslash -14 KPX B V -37 KPX B W -15 KPX B Y -58 KPX C A -14 KPX C AE -14 KPX C Aacute -14 KPX C Adieresis -14 KPX C Aring -14 KPX C H -34 KPX C K -19 KPX C O -24 KPX C Oacute -24 KPX C Odieresis -24 KPX Ccedilla A -8 KPX D A -47 KPX D Aacute -47 KPX D Acircumflex -47 KPX D Adieresis -47 KPX D Agrave -47 KPX D Aring -47 KPX D Atilde -47 KPX D J -38 KPX D T -47 KPX D V -50 KPX D W -20 KPX D X -60 KPX D Y -71 KPX F A -45 KPX F Aacute -45 KPX F Acircumflex -45 KPX F Adieresis -45 KPX F Agrave -45 KPX F Aring -45 KPX F Atilde -45 KPX F J -100 KPX F O -34 KPX F Odieresis -34 KPX F a -52 KPX F aacute -52 KPX F adieresis -49 KPX F ae -25 KPX F aring -52 KPX F comma -172 KPX F e -61 KPX F eacute -61 KPX F hyphen -72 KPX F i -51 KPX F j -59 KPX F o -68 KPX F oacute -68 KPX F odieresis -54 KPX F oe -26 KPX F oslash -68 KPX F period -196 KPX F r -37 KPX F u -6 KPX G A 0 KPX G AE 0 KPX G Aacute 0 KPX G Acircumflex 0 KPX G Adieresis 0 KPX G Agrave 0 KPX G Aring 0 KPX G Atilde 0 KPX G T -31 KPX G V -1 KPX G W -4 KPX G Y -22 KPX J A -14 KPX J AE -23 KPX J Adieresis -14 KPX J Aring -14 KPX K C -50 KPX K G -46 KPX K O -45 KPX K OE -28 KPX K Oacute -45 KPX K Odieresis -45 KPX K S -16 KPX K T -18 KPX K a -8 KPX K adieresis -8 KPX K ae 19 KPX K aring -8 KPX K e -30 KPX K hyphen -66 KPX K o -32 KPX K oacute -32 KPX K odieresis -32 KPX K u -33 KPX K udieresis -33 KPX K y -72 KPX L A 9 KPX L AE 9 KPX L Aacute 9 KPX L Adieresis 9 KPX L Aring 9 KPX L C -19 KPX L Ccedilla -19 KPX L G -18 KPX L O -15 KPX L Oacute -15 KPX L Ocircumflex -15 KPX L Odieresis -15 KPX L Ograve -15 KPX L Otilde -15 KPX L S -31 KPX L T -59 KPX L U -36 KPX L Udieresis -36 KPX L V -71 KPX L W -31 KPX L Y -60 KPX L hyphen -1 KPX L quotedblright -76 KPX L quoteright -84 KPX L u -20 KPX L udieresis -20 KPX L y -50 KPX N A -10 KPX N AE -10 KPX N Aacute -10 KPX N Adieresis -10 KPX N Aring -10 KPX N C -18 KPX N Ccedilla -18 KPX N G -16 KPX N O -14 KPX N Oacute -14 KPX N Odieresis -14 KPX N a -23 KPX N aacute -23 KPX N adieresis -23 KPX N ae 7 KPX N aring -23 KPX N comma -64 KPX N e -10 KPX N eacute -10 KPX N o -14 KPX N oacute -14 KPX N odieresis -14 KPX N oslash -11 KPX N period -87 KPX N u -14 KPX N udieresis -14 KPX O A -33 KPX O AE -30 KPX O Aacute -33 KPX O Adieresis -33 KPX O Aring -33 KPX O T -37 KPX O V -40 KPX O W -8 KPX O X -47 KPX O Y -61 KPX Oacute A -33 KPX Oacute T -37 KPX Oacute V -40 KPX Oacute W -8 KPX Oacute Y -61 KPX Ocircumflex T -37 KPX Ocircumflex V -40 KPX Ocircumflex Y -61 KPX Odieresis A -33 KPX Odieresis T -37 KPX Odieresis V -40 KPX Odieresis W -8 KPX Odieresis X -47 KPX Odieresis Y -61 KPX Ograve T -37 KPX Ograve V -40 KPX Ograve Y -61 KPX Oslash A -31 KPX Otilde T -36 KPX Otilde V -39 KPX Otilde Y -60 KPX P A -87 KPX P AE -81 KPX P Aacute -87 KPX P Adieresis -87 KPX P Aring -87 KPX P J -90 KPX P a -57 KPX P aacute -57 KPX P adieresis -57 KPX P ae -29 KPX P aring -57 KPX P comma -161 KPX P e -47 KPX P eacute -47 KPX P hyphen -52 KPX P o -53 KPX P oacute -53 KPX P odieresis -53 KPX P oe -18 KPX P oslash -53 KPX P period -185 KPX R C -32 KPX R Ccedilla -33 KPX R G -31 KPX R O -29 KPX R OE -8 KPX R Oacute -29 KPX R Odieresis -29 KPX R T -35 KPX R U -36 KPX R Udieresis -36 KPX R V -42 KPX R W -21 KPX R Y -36 KPX R a 0 KPX R aacute 0 KPX R adieresis 0 KPX R ae 27 KPX R aring 0 KPX R e -22 KPX R eacute -22 KPX R hyphen -53 KPX R o -23 KPX R oacute -23 KPX R odieresis -23 KPX R oe 15 KPX R u -16 KPX R uacute -16 KPX R udieresis -16 KPX R y -20 KPX S A -28 KPX S AE -28 KPX S Aacute -28 KPX S Adieresis -28 KPX S Aring -28 KPX S T -48 KPX S V -18 KPX S W -23 KPX S Y -39 KPX S t -25 KPX T A -34 KPX T AE -35 KPX T Aacute -34 KPX T Acircumflex -34 KPX T Adieresis -34 KPX T Agrave -34 KPX T Aring -34 KPX T Atilde -34 KPX T C -36 KPX T G -35 KPX T J -88 KPX T O -34 KPX T OE -12 KPX T Oacute -34 KPX T Ocircumflex -34 KPX T Odieresis -34 KPX T Ograve -34 KPX T Oslash -34 KPX T Otilde -34 KPX T S -50 KPX T V 4 KPX T W -1 KPX T Y -17 KPX T a -68 KPX T ae -38 KPX T c -83 KPX T colon -145 KPX T comma -116 KPX T e -83 KPX T g -76 KPX T guillemotleft -129 KPX T guilsinglleft -129 KPX T hyphen -99 KPX T i -51 KPX T j -59 KPX T o -87 KPX T oslash -60 KPX T period -145 KPX T r -37 KPX T s -70 KPX T semicolon -119 KPX T u -92 KPX T v -98 KPX T w -96 KPX T y -108 KPX U A -26 KPX U AE -35 KPX U Aacute -26 KPX U Acircumflex -26 KPX U Adieresis -26 KPX U Aring -26 KPX U Atilde -26 KPX U comma -80 KPX U m 3 KPX U n -22 KPX U p -5 KPX U period -105 KPX U r -47 KPX Uacute A -26 KPX Uacute comma -80 KPX Uacute m 3 KPX Uacute n -22 KPX Uacute p -5 KPX Uacute period -105 KPX Uacute r -47 KPX Ucircumflex A -26 KPX Udieresis A -26 KPX Udieresis b 17 KPX Udieresis comma -80 KPX Udieresis m 3 KPX Udieresis n -22 KPX Udieresis p -5 KPX Udieresis period -105 KPX Udieresis r -47 KPX Ugrave A -26 KPX V A -10 KPX V AE -19 KPX V Aacute -10 KPX V Acircumflex -10 KPX V Adieresis -10 KPX V Agrave -10 KPX V Aring -10 KPX V Atilde -10 KPX V C -39 KPX V G -38 KPX V O -37 KPX V Oacute -37 KPX V Ocircumflex -37 KPX V Odieresis -37 KPX V Ograve -37 KPX V Oslash -38 KPX V Otilde -38 KPX V S -41 KPX V T 4 KPX V a -65 KPX V ae -37 KPX V colon -130 KPX V comma -134 KPX V e -56 KPX V g -57 KPX V guillemotleft -83 KPX V guilsinglleft -83 KPX V hyphen -49 KPX V i -65 KPX V o -60 KPX V oslash -57 KPX V period -158 KPX V r -51 KPX V semicolon -121 KPX V u -20 KPX V y -24 KPX W A -16 KPX W AE -21 KPX W Aacute -16 KPX W Acircumflex -16 KPX W Adieresis -16 KPX W Agrave -16 KPX W Aring -16 KPX W Atilde -16 KPX W C -14 KPX W G -12 KPX W O -10 KPX W Oacute -10 KPX W Ocircumflex -10 KPX W Odieresis -10 KPX W Ograve -10 KPX W Oslash -7 KPX W Otilde -10 KPX W S -29 KPX W T -2 KPX W a -24 KPX W ae 6 KPX W colon -93 KPX W comma -71 KPX W e -10 KPX W g -11 KPX W guillemotleft -38 KPX W guilsinglleft -38 KPX W hyphen -7 KPX W i -48 KPX W o -14 KPX W oslash -11 KPX W period -95 KPX W r -34 KPX W semicolon -74 KPX W u -2 KPX W y -6 KPX X C -52 KPX X O -48 KPX X Odieresis -48 KPX X Q -48 KPX X a -14 KPX X e -36 KPX X hyphen -81 KPX X o -38 KPX X u -39 KPX X y -57 KPX Y A -31 KPX Y AE -34 KPX Y Aacute -31 KPX Y Acircumflex -31 KPX Y Adieresis -31 KPX Y Agrave -31 KPX Y Aring -31 KPX Y Atilde -31 KPX Y C -60 KPX Y G -60 KPX Y O -59 KPX Y Oacute -59 KPX Y Ocircumflex -59 KPX Y Odieresis -59 KPX Y Ograve -59 KPX Y Oslash -59 KPX Y Otilde -59 KPX Y S -62 KPX Y T -17 KPX Y a -67 KPX Y ae -40 KPX Y colon -145 KPX Y comma -116 KPX Y e -81 KPX Y g -84 KPX Y guillemotleft -119 KPX Y guilsinglleft -119 KPX Y hyphen -96 KPX Y i -63 KPX Y o -86 KPX Y oslash -59 KPX Y p -39 KPX Y period -144 KPX Y semicolon -119 KPX Y u -50 KPX Y v -44 KPX Z v -54 KPX Z y -64 KPX a j -93 KPX a quoteright -60 KPX a v -33 KPX a w -23 KPX a y -44 KPX aacute v -33 KPX aacute w -23 KPX aacute y -44 KPX adieresis v -33 KPX adieresis w -23 KPX adieresis y -44 KPX ae v 16 KPX ae w 16 KPX ae y 5 KPX agrave v -33 KPX agrave w -23 KPX agrave y -44 KPX aring v -33 KPX aring w -23 KPX aring y -44 KPX b v -17 KPX b w 0 KPX b y -28 KPX c h -6 KPX c k -12 KPX comma one -148 KPX comma quotedblright -123 KPX comma quoteright -142 KPX e quoteright -43 KPX e t -34 KPX e v -28 KPX e w -20 KPX e x -5 KPX e y -39 KPX eacute v -28 KPX eacute w -20 KPX eacute y -39 KPX ecircumflex v -28 KPX ecircumflex w -20 KPX ecircumflex y -39 KPX eight four -65 KPX eight one -85 KPX eight seven -77 KPX f a -44 KPX f aacute -44 KPX f adieresis -26 KPX f ae -17 KPX f aring -44 KPX f e -58 KPX f eacute -58 KPX f f -46 KPX f i -40 KPX f j -63 KPX f l -31 KPX f o -65 KPX f oacute -65 KPX f odieresis -31 KPX f oe -23 KPX f oslash -36 KPX f quoteright -62 KPX f s -46 KPX f t -10 KPX five four -56 KPX five one -90 KPX five seven -78 KPX four four -68 KPX four one -73 KPX four seven -99 KPX g a -14 KPX g adieresis -14 KPX g ae 13 KPX g aring -14 KPX g e -7 KPX g eacute -7 KPX g l -37 KPX g oacute -12 KPX g odieresis -12 KPX g r -4 KPX guillemotright A -50 KPX guillemotright AE -46 KPX guillemotright Aacute -50 KPX guillemotright Adieresis -50 KPX guillemotright Aring -50 KPX guillemotright T -128 KPX guillemotright V -80 KPX guillemotright W -37 KPX guillemotright Y -119 KPX guilsinglright A -50 KPX guilsinglright AE -46 KPX guilsinglright Aacute -50 KPX guilsinglright Adieresis -50 KPX guilsinglright Aring -50 KPX guilsinglright T -128 KPX guilsinglright V -80 KPX guilsinglright W -37 KPX guilsinglright Y -119 KPX h quoteright -52 KPX h y -37 KPX hyphen A -29 KPX hyphen AE -23 KPX hyphen Aacute -29 KPX hyphen Adieresis -29 KPX hyphen Aring -29 KPX hyphen T -98 KPX hyphen V -44 KPX hyphen W -4 KPX hyphen Y -95 KPX i T -64 KPX i j -146 KPX k a -12 KPX k aacute -12 KPX k adieresis -12 KPX k ae 15 KPX k aring -12 KPX k comma -60 KPX k e -34 KPX k eacute -34 KPX k g -43 KPX k hyphen -104 KPX k o -35 KPX k oacute -35 KPX k odieresis -35 KPX k period -89 KPX k s -14 KPX k u -7 KPX k udieresis -7 KPX l v -86 KPX l y -96 KPX m p 19 KPX m v 7 KPX m w 13 KPX m y -3 KPX n T -48 KPX n p -8 KPX n quoteright -50 KPX n v -25 KPX n w -14 KPX n y -36 KPX nine four -58 KPX nine one -84 KPX nine seven -75 KPX o T -89 KPX o quoteright -41 KPX o t -24 KPX o v -25 KPX o w -7 KPX o x -28 KPX o y -36 KPX oacute v -25 KPX oacute w -7 KPX oacute y -36 KPX ocircumflex t -24 KPX odieresis t -24 KPX odieresis v -25 KPX odieresis w -7 KPX odieresis x -28 KPX odieresis y -36 KPX ograve v -25 KPX ograve w -7 KPX ograve y -36 KPX one comma -99 KPX one eight -94 KPX one five -76 KPX one four -127 KPX one nine -81 KPX one one -69 KPX one period -128 KPX one seven -147 KPX one six -119 KPX one three -69 KPX one two -54 KPX one zero -102 KPX p t -20 KPX p y -25 KPX period one -125 KPX period quotedblright -114 KPX period quoteright -133 KPX q c -4 KPX q u 37 KPX quotedblbase A -6 KPX quotedblbase AE -6 KPX quotedblbase T -82 KPX quotedblbase V -85 KPX quotedblbase W -24 KPX quotedblbase Y -83 KPX quotedblleft A -66 KPX quotedblleft AE -57 KPX quotedblleft Aacute -66 KPX quotedblleft Adieresis -66 KPX quotedblleft Aring -66 KPX quotedblleft T -46 KPX quotedblleft V -18 KPX quotedblleft W -8 KPX quotedblleft Y -46 KPX quotedblright A -67 KPX quotedblright AE -76 KPX quotedblright Aacute -66 KPX quotedblright Adieresis -66 KPX quotedblright Aring -66 KPX quotedblright T -53 KPX quotedblright V -22 KPX quotedblright W -26 KPX quotedblright Y -43 KPX quoteleft A -87 KPX quoteleft AE -78 KPX quoteleft Aacute -87 KPX quoteleft Adieresis -87 KPX quoteleft Aring -87 KPX quoteleft T -67 KPX quoteleft V -39 KPX quoteleft W -29 KPX quoteleft Y -67 KPX quoteright A -145 KPX quoteright AE -154 KPX quoteright Aacute -145 KPX quoteright Adieresis -145 KPX quoteright Aring -145 KPX quoteright comma -201 KPX quoteright d -129 KPX quoteright o -135 KPX quoteright period -224 KPX quoteright r -150 KPX quoteright s -144 KPX quoteright t -118 KPX quoteright v -112 KPX quoteright w -108 KPX quoteright y -122 KPX r a -26 KPX r aacute -26 KPX r acircumflex -26 KPX r adieresis -26 KPX r ae 1 KPX r agrave -26 KPX r aring -26 KPX r c -26 KPX r ccedilla -34 KPX r colon -86 KPX r comma -104 KPX r d -18 KPX r e -17 KPX r eacute -17 KPX r ecircumflex -17 KPX r egrave -17 KPX r f -24 KPX r g -15 KPX r h -24 KPX r hyphen -125 KPX r i -34 KPX r j -42 KPX r k -34 KPX r l -51 KPX r m 27 KPX r n 0 KPX r o -24 KPX r oacute -24 KPX r ocircumflex -24 KPX r odieresis -24 KPX r oe 13 KPX r ograve -24 KPX r oslash -24 KPX r p 21 KPX r period -133 KPX r q -16 KPX r quoteright -44 KPX r r -20 KPX r s -29 KPX r semicolon -75 KPX r t 11 KPX r u 11 KPX r v 17 KPX r w 17 KPX r x -4 KPX r y 6 KPX r z -23 KPX s quoteright -51 KPX s t -17 KPX seven colon -154 KPX seven comma -146 KPX seven eight -86 KPX seven five -91 KPX seven four -116 KPX seven one -74 KPX seven period -169 KPX seven seven -69 KPX seven six -104 KPX seven three -79 KPX seven two -76 KPX six four -52 KPX six one -68 KPX six seven -55 KPX t S -40 KPX t a -25 KPX t aacute -25 KPX t adieresis -25 KPX t ae 2 KPX t aring -25 KPX t colon -107 KPX t e -43 KPX t eacute -43 KPX t h -8 KPX t o -45 KPX t oacute -45 KPX t odieresis -45 KPX t quoteright -100 KPX t semicolon -86 KPX three four -58 KPX three one -82 KPX three seven -75 KPX two four -97 KPX two one -73 KPX two seven -79 KPX u quoteright -43 KPX v a -9 KPX v aacute -9 KPX v acircumflex -9 KPX v adieresis -9 KPX v ae 17 KPX v agrave -9 KPX v aring -9 KPX v atilde -9 KPX v c -22 KPX v colon -75 KPX v comma -118 KPX v e -17 KPX v eacute -17 KPX v ecircumflex -17 KPX v egrave -17 KPX v g -14 KPX v hyphen -30 KPX v l -87 KPX v o -23 KPX v oacute -23 KPX v odieresis -23 KPX v ograve -23 KPX v oslash -23 KPX v period -143 KPX v s -22 KPX v semicolon -66 KPX w a -9 KPX w aacute -9 KPX w acircumflex -9 KPX w adieresis -9 KPX w ae 17 KPX w agrave -9 KPX w aring -9 KPX w atilde -9 KPX w c -12 KPX w colon -75 KPX w comma -75 KPX w e -4 KPX w eacute -4 KPX w ecircumflex -4 KPX w egrave -4 KPX w g -6 KPX w hyphen -4 KPX w l -53 KPX w o -9 KPX w oacute -9 KPX w odieresis -9 KPX w ograve -9 KPX w oslash -6 KPX w period -99 KPX w s -22 KPX w semicolon -66 KPX x a -8 KPX x c -35 KPX x e -30 KPX x eacute -30 KPX x o -31 KPX x q -33 KPX y a -20 KPX y aacute -20 KPX y acircumflex -20 KPX y adieresis -20 KPX y ae 6 KPX y agrave -20 KPX y aring -20 KPX y atilde -20 KPX y c -33 KPX y colon -86 KPX y comma -122 KPX y e -28 KPX y eacute -28 KPX y ecircumflex -28 KPX y egrave -28 KPX y g -25 KPX y hyphen -29 KPX y l -98 KPX y o -34 KPX y oacute -34 KPX y odieresis -34 KPX y ograve -34 KPX y oslash -34 KPX y period -148 KPX y s -33 KPX y semicolon -77 KPX zero four -64 KPX zero one -91 KPX zero seven -82 EndKernPairs EndKernData EndFontMetrics libwmf-0.2.8.4/fonts/n022023l.pfb0000644000077100007710000012656407260330360015424 0ustar fjffjf00000000000000m%!PS-AdobeFont-1.0: NimbusMonL-ReguObli 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (Nimbus Mono L Regular Oblique) readonly def /FamilyName (Nimbus Mono L) readonly def /Weight (Regular) readonly def /ItalicAngle -12.0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /NimbusMonL-ReguObli def /PaintType 0 def /WMode 0 def /FontBBox {-61 -237 774 811} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5020947 def currentdict end currentfile eexec ߤ `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXm>j U/M9l#hv|hikg}; ss`i78}!q_ոO}2L,jMkPU^O6\۳? Gcw%U߄* D.l+hfX˽84;9 X,}\ `,( JK%b2M:VIzӪ e@rs+&=W2vs.Bރd7#{`KEUbjףtYϳ?T 6  ,ۈ2\F- \Fߴ_˄p6/LٍEws'Dfw nZ>qs7r]N5|[jQsy"&V*#>Rs>NӲ.r-qƘSÉJ%ssMMʈ- dȯz` V6FVy.@*zFmR)@dSuPm,--CszhVK)ipb9[(z+ q2_驀y񐖹 r+;I 钂,z̥ Em}~ˠ!B$W*p1|gN،h8ƌUxON.a`#b2˽X;_ b's3Vqmʛ qQf򉩲΁4C~@e+*8Eshr d-seCarcJfj]x'^",AlshHS1USû@EGS=:l"]4;BV] $?v'$;W V=n_7,D|Sd0;(&N]esD(Q3Xu4zD=g#*\>iŵ|rSx'6thu>ԤfPY13yd]R-ED-q""k}'-`'A/B[ooY/ު^IPmQ|nsqiGOxC`u!X]t 0p|PGH?N)pm& z%UcȍYK/UtVJqF6ty>H4LyRO`t)WAMoEYZRK't::q4D5 D\ AehXK<mM<y/&*M9fݵ)1Pk>S38"9LugKNUƸk@ V־RK mo^( 3^_l 5gE ܭgP`x~%aa ?swr-0I%X][j1%~n4FvȑlLaB^[X(ڦ0fR^oQk)3j 冠a ۵d ][uQ^keQ= Uya&=ɠHUNh }M"jXx֠n;@i𢳒S';SR̞2?qlP8V[NI)k|?pL`S=l˭.ǃ'Kq#Fu8q߷;\ى YȪ@8U]yb~7 }37vy-5[QԱܗ&M^5ބ7jY=dc5v3bOv4ckY\J}hgGW1m^^jTN`Rwsqv&A<}nKJ(AssL  aOcb4G:T&Twԣ V^pxGx+~fV\+ Wooy o]ɾye}pn*? U>+M ]b,,Bd!PͿ\&69dW:E&Hf+ixp1CQAU=G]+jR .K5)cKtDX*~S_3à>s' EsDu1TVE) K^ֿCz?n]kӪV۪M$ޙEVãX֝ VUE$ t[c)qoRRи[AfߤC\L%)}6n|tDOqӽ35|H۞`,EFQߚZ_^jC҇-۪Y(yZӝ%BPٻ[^YU=\Terw cs ^3?i I/+R[s>uS<90:]LE/( #/ܴZR?~XA}iw_մ2w6+.ԃP[G2/*(0Z}s7~zaX ,'Pa 0E̵iTgxҀssg`IE*^:]o4$SmG?V60q(ҴaQ۰:"mT'xU>vO݇!~p bmW`@sóM`iLcZ<| R*zy @" SmQV :@~^HXNh&q!>C pM.QϦ("|&;wFw/ݕ$i3g<"WWo͛J =ʾR2Κ"\4LKo,P', `o;&BȀ, },d/ᕫm;#݋*b>ľPWJe.pp;5b>y8gmDL ; $9ړh5MdH38g AK1[3@/ctKl)w]`UŪ$vy{(Dۓ}>RʕMfL*=+?;TfM10AHuy+M"wH p  xڀSD-\>޷ۄfdqiȃ7;3jf~_MjU+ 69gqY$wN1..\Ifq?s*b=Lލ$}ߢ6b8mu0SiYϏ,i7.72}kZF4U3£Fg:1,z!=/>w\ є?1Q- ސ疽m-+WQCE 8*`z950uFk%W79Y ¥k l^XpA%~O(KSCrc.[qܕZcP_a\:Esb.>;iW-0:7^ ȡy!x85EM_;ؿbk<}8ȥ zͭ+Ǖ-s'+ꖸɸypyHǠ/,h Qx'v!N\Ӈr'a9kg5"& #rxW!^A!)PhP^|MWH& 3%̰ bEQHf+cQkx7Soϖ\9zd@@E6xlQ8>/GeO\-9ECL(e41Z޲i&b)YĖ/^̰U(64u؀alX%6oFJp)_ABuBH5PӐ7Wq( '.FIi}LRMk퐌.$d.HA S.ȐG4"d\TQn9!C,Sɺ8c /N|ɀ!Rpà~x΂.-WZdGT~3,GXB%lFV]FzoN"*n覆#-NrZyGCuیEW&Q.V4i*#5oJ ^s6ϸ-+svu)KpL"_)S𤱮VR7CFH63w YH P!#VG6%8SoM @s:)q|aEl`'̈j4ɦZT\ܷ}j9m8ܬVDiٴ\9'=1_5y4,Me, "+L1zsF"T>RJxq)?EX&u Xkk#窬v",kx^, ²a .cZʷ휟&TL)NlQoMc+CWSS4خ}$l戓13cQW0L.T:ISڼ0UwW@zƠݡ6 ȔU)4S=psL&s0!" t/dc;uPg'jUASk )ǙC*vj~8ZOw]8=Ѱ+K=t&̿8k&0G yP -Ir~ 1e hFNNCi)@K 'U}ŠFEZfxJ ܶ<&SOojE*.M`2BQN":5A#1PehÚi7T=d;f[Y]O reFNJ\<_ϰĜݝgQw}uƐ+U<*W|}X< wTlZ)c3+k"XcFPޅ]g*9DCb1|Cܴ{.aٔ:2SAS!bѸ)Z^uQm4|k2z0;v;ʛgw m>&Usoh{TMJuff\f q:Jr?{vܙWI}nrOHϬir4ZQi4_D>v0f,<&NT ->gNmqKxہv2PĩI&&۠?0~Z(`v()ܴ}AZ5V2c7;SzI:\AW!h3V ENQȷiJO;!k#M,rix6JΤL[`غjYrLa`RdF#E<!k[m4?T7K3W1ʿzG+wk62 sƨF(\SRI{hϦD۬Ý9n->}'34[[2D+GӧeqX謗6#PExؔc(R5wrNp~J*ق"{\=e;o 5* 3%.crta#ՑcNuTvǥኁ#60;!t\>'.R⪱t_s ,bru<j쟕Auxta)(w$cA&u)wOߔV3p7(7? "7&jӳPte}3RV,&!ɂ@_,beo}uF+ IhI?W99?􋫊l$ ܬI3$A;"'&M5xG\C˧Ӡi{E2,9K q6kAyIu>?r%/Ӊ R%v;ʃzo&) #7nʶ[Ɛ98;ӞB/谖8ȋCA]Ӧ <ӣỳ0AD3|]D'v$q41ˋ0,kxLQV!>΋;HNd;{mu!] L̑68$|@m-R'_nvGFq%<|[;pcF'tx^Y)K\{; .wv*~a:\13ʶ)cy`&#[zT(ga+ ڎ^ߝ:5PsZM*N) X4ydzVo#6[+ψV_ePAZV"~g(O_Rͬh_jQIA.eD^-vzLoxn뇣k+Y+mP} QwCْM+.2a8l$Y?~oHofk⬦ǐD6"5$fJ's&pBB$w}}f>~8{Tho>Wv]@g!#"w7?/- SNX\ĪDM͓|>c4'1X䗧LV)I^Hu(2qۓQOyUpE(QhmQRtV,]()J1/g޽jVB~oP j v*мgX2C݀ t%~He?ع[>/6|`kglYl] _]LΝ^S%ҍJ¶b֏90v19MEDGBT@ę`hAE~Cqà{y&ue4m`j6ttbx_tXy(l u._P}l۶xyD&A!ol8]N0عv6K8˹#VLVn%u>hH4 8#2&F1jS' ڲ.N&/=#h(@00 {,~u73A:KMԼC-Ǎ9mhoӚl7HH>FMSy ZAW~nu'}'Qi]rTnlQ4%_-֠v w?ںYr<z+?1{XepFaQ1Z/eNn\*ےn̛ c)8s꣛]:98tM~3 f[;J ̅n1Zo3$|m[rgJP i+h<^4i|0fmϼdk)VTʄ EB%H^9̘Ч RAf6-_k$4ZϦ_N}- wjI FlP}f'lM8p³'qDYwe 7bPSi9Tnd8ݳc Dsm"5Vl9kV#!q͎xhY&ûFer17*&?xB ) gkD҆Q:v?,n)SCW Tk·Dx=VlUkb2zG9sV y2X6\Gn(F]ojNb 3 @3*[:ɥN OnzO#D4UIX{7:>1AؓFk'=50j>15As>*~M'g0z|HܧwўBDF(E@пFżtT^'j>lgѱNB9! g5]\ 哘 VL)/pIOȴwj J"Vڬ h"Jw5.,b9AU iěo/ jB?9!-OAX(уppQ#?R+h}\Ѐ{ֶR. J'{f`~ϴ{^|);/jc SW".[0P4W$ZtnаL ShkYD$륍](WXɞ8b*n })'e7l!MEJw섡Q=aNJinRnUC("&x+7J倶c@=mQۅX v]HaX\Ε2 29/B~ SgFVRl#HCw7)J^R6 44i Cq! 9ܓ-^Eui6uz%wSQRf| 8§Xr{0kǗG拔~ aKIikNN=_/vVITgjuFa?:Q!H$xXgF5'½eO+C1mW+BQ#ì!УNcB5"S%ap(A\47FrAUt՛29P˘[4-TIrv.M*xY&%c턛)m"k*j(}+*la*_<_Kh^ dijWBٽѣvRN0߄Hs]?OvklɅm vs̈́aa[W _^#ю%DNf-¦Z -DlE I5)ݬ}7wetӴHmp(~|_CKJs넲fP->QMweиP]HЖ;*>q>ewoUHa|zI WR(ɱ)d̗kޖ|ΜudnZ[26*R"=tiCМSl`cr.:zerxQ A*-r ;$a?`D>B!ge‟i28.ޗ*{Ͽ$ 8c OՒ+2MöO⚼bˁ۵Zt>:ooq;#H tR ,flb rZ[D71xVnbd޽Ye 2/lyƍίZF揮9֩q'ZF׶v!SA,:SsDv= q&7"\^95|W[At(5+d8r,r?]Gj;Tt>@}!ه|}?όN\jFOF];HW('96G:+6IT}  8uHUtEa4]hAQF2ߣGi}}F,kUIY.'b<;s3e)8K̋NuLuKt[N2!j?gOI T9iaӓN1|$Ot>f.lzYkŘ3O}*CIэoHaYh=?!~ly|<ǿ;|1Ϻi c{XGvhc Ғm5s?@RF*S9tG(,rdQx<ťqG mrRF_J#ϙL;[taSӬ&Pl"c=;ߠ`, rU*3.8b\d_H Ŏx=&ƞ6ϩ8x轌]mW ۮK!f]$"" wnҷ!/쌌w#^ϫ7̓Qvc0R(0EA!M"s U{¡]~TDW`ˡ^X?#P\G9Psؘ 5}%N:o!yes6JQ5UG_!TIh;M3*fm*?k}{ b+b=~ 2.mPmS/OŁhmӆgLFG 7 FffY &'7WW.!8GDqBaRit:TcS}#̨Yɛ|npXX*Nꔵ( *b6lu&mt8(l@~]J8pX,{d +b鮳ʅ2?ڝ1 &f0DNh\FU#f,.t<5=Q@;;ty.C@#k.\gp^;|z`T_OкCfn{9>ԟq#d=aR~C ch?wO5c ?\@~-%gZ_`r"³%+S}+'C)Bu{:ɴGp=8!R ;)[wkD(c %Н& M! .y(-ױw*pi yn7QΊXInYZz3K[@X`5=.cl:Rka I`&XgΔd,YOvAÇ?n7WW' o@C7,{`i:rͷ2(AҼ}9&=ԮLᦆ ,H1$5f.h9q4St^O֥us# Sgx k %{?A,}N/۳k:>D&F*4WOAgYgm*f+rm/@%3.R3 la5/lowAB_JxVI,QarYe=svZMZKaZj^DhIMW5x3! Pj tc0Ț/C{/=zػ%LSv^2&/cdA0s5fc┄Fb;Lů@$1Kܤx| iމ- =7Rhu.nV9Tf0tUSOROjrd~5;9$t㤈eVD1f)hUZHRjX@fd #xi Mp!2'IXע `(!ZNR}̺ycS[fTMD9޸t?ö*Y稒8rQQ>š'ǝ7D:PM̾.9;ܣ݂0Wf utlZwu\ލ*KTXƙ4cs&=< S.2 ̣X5[ $(x|GӀwnkQ8 680{׿\dNSydG,S>2VCn9]wǦ׈#wAi6W؀|^f}5fGnL"0'h)QP. )=PXfkZ#-hcv͆<2CHQ:|禑 f p6+ώ { ó`^I1XFDm~:?L2`gX,U:@+L;$[Ru{e^h6ȬkE0^.MSu(-oȏU)4mӽqqvWg5$uu Th;pײ;+9z.>Vat~@ 2S?[^?0'x7f|e@Mkj6cPk8G mʃ.JnteRL'<$am wJi4vV4L`e"Gk(_'ddFMPm$s*Jhvr>nG`Eel@xs31@՚Әh ª! &ц7h2x{_TE=C!'`/%"IT_`$0N4s/1H8&մ- N9Ȏ16 㴗G4sqG&s $a^+ 37wblՃd;#yܖdjF](Px- d'CHQzZ~cukz~$Fp,n-[^1 -Jve|yd$Mv ᮐ˝KG^ձ29LjηYzu#;,axT_<kACbp+ЖcGu9 \4^ ׾wxLVR+uN$ZA[ +ll v/PS\IC`]:0Zt{oZ%] ")kV^,\_z`DDsaw/e4:U+q&U4( YdDSB#r ϓwMBZ0c-J-с:I1Vu<ʽI|gp:ݶϖ0ݍm1K4;ս^Xo0iY&vKT TRRQ0 o|Zځ G2i( jޅ0 ؤ]'G >9jftj 8-)|愳p|"0Cٹ*aɂjE-0\TԼ ?RèhIuW>a"5JOV!32\ h1xuUcN r5E48ڳQ#iuMs54(YeaBip-lKy+C*$H*XӪwC$hJ*O x{s$wWeNH.Ko1 H1$hY̵F~w*xehxvl ğc'C쾝Z<}/#b ./iۙ&pf Х 3FJ1ӥcU-Uh=6%t翊{M|lqkא<BTaQS1nq CYidr^ n{Ӎ2^jlK^x3)EQę}bF=U#\[i 쫂'> qM@>;{TIFnA Es9%peDSoIh՘ܖniGd/$%kY* 1{i@G8jEPOTQߚAԺ_L‗O ,ȉXpxL7̈ (}A<,Dq] l"њRNx cBw^F=374ZBPCqƾQ3QyNgc7cʛ^s:JF缗HlO37%J>=<,GbY̋ܩ2EbBk0)b\e=傈N:4'jC8Ns=99GCDP8lEdHGS7s^BяRW+{FZX&6\mq bKЅvn{Wu~2!;0,y~o0I]|m2 XIzfrIy3 \ ZZvKA&=`NS {kIbE۾jc—W1(hf P[`"'O%B5ǔKütY.ٺ&5S1PZ8m9S]`aav>WDo)лn z<<''c6РVgMJB"9nu fdMً`hpٿ=֍Р:mRTEᐳwk,hL)VPz;pZZs5<{V4eB?fN$U9P^v؁Nc}Woy'#D%ZN5gv2?E?"(.G'9}EgqaI?YFh/ܤ-9ߕI9,Ygd.f?bZ ~ P]u6IG~@*ϟgBb]%.ۗF/+Y̜ܴشQa~VC/ rF^# OReT6] /y}#= 8Oji\7>8$|m'Iw9}4T.Fxd4dTE\ }h\B]XCtƆxʖ`.1{R)>(uda솢 B:AUCePF- [ [N }jv"j:;h%MgΎ'fBjOS >(doD~"YkGu== }Ӎ} *2߿>0>X"2_qۼ.hR$Ge{4dJ< r͂< ;;vh{BOI7o2=Xo1]}*C Ι7l)SCU/B,%8ޣ4țTwiqΉhv}c΢IgL$́mS?:&ql~jU /]v vup ;<(v(;ցVQz1@<>,̓MLV"4 VK4H-] nR*+ݍ9~2~'HHB .$ | ',k;7 0ZGiU]:)-(9X ay'C|qmeevIjŞt^eo-F`M_A+7*'^eYW\JX993Bq|Ry5HȅOltdWN^RulO-Ns$ tbWAJuƾ,CpB镩c{d-h.~h1$_a3Z Ş7N_̒ _  c^2+x!)헼Z kh;.쨵@~WF,{$ҺQRpc_GObwww>'/+,Ҁ.w2&Hڠ$T0_tnSoa Jv$&c1D?SJ_tnN}](LZ`SΪ`k%#^xe*L.>kYhlonRv)LeM,vAGFymk86?  '7I1>P-Vk) HCr*vd6wg9ZX!MOO{<tȕހy10V!3Y44ҤlDC3ԌivsD@ u5vlTKuU#tm_/H!.K.7ZthѰ'iJ?QN4n?̫Lt?٭28wqZeM566>3C&s fD.*Sq}x11Mzp|!T~ѷ텾?K jx߈19tENY4 Kdc&֣Y;}k~&5 ,SȌVWG$ahOJyzO TjG*`i:d,L ~@3X%,jؠ׭)+8Sv}:xZkw%ꅖP5_RfGb#R:e%Os qhqJ6; ݧ<; l>FHzM=y g׷ZIh>SG^[G-4"UX:)qc{ ֖CغQ嫚XU傫EE)9)[zІZcw4Vb}G]WT(|DeA&6YPvKiP<5Ek"|UĬP63?dk@=)0.2K+X j{ ] p\CEd=HrX~tO+B]%,Yb+]qP1 m)n3kubUSLJG?ܱo X4ptr n4E5ynj0AiBh;U0$-Y.m3%RN{oeB6G=3^&yoReO{;OMԐ4 p0>*dL) q;Ր8> 1M(G.E{`dpP80]a"j3g2Ͱ%Ts6Hoܜ(Mǡ7"yA:/6 ztm*ՙEeȔ,K!f(fi -wVOqآ܍FDsUz(}hR8wx&n/̆ d]{ M \ ڀ"qePk0+x89D%&2$\~܎ A2bkNkc9*cy `1ڵxћ4QQ${MſnHmEH/"û.[.|2K9-My:OicJ{n-Z4>LȜGVᘅ& (%:k{F!,z:$iqX'O*B~,FP 0H Par K⻮؈('>i AFgFZXXZݡw*0 }1[ ~NFm6KA&' /TɘF"rp HN2*WCG^u/9Ē)d4* )]l6JFh>őVfhݰwnȠfb&.lg2Y67sѡj*eQ˨vgLjg42M|ƛUSrkΰ*ږKu3 wܓF -8wXutMd{ n7:XB6wD5UHQQo klٗڑY{pyL[Gzoh<֑Nk;uY90sCIe lT/ɹ65mJnkǪeT6Q INdtM sKR:^Q NB>~6˩@BϔNKRz'iĔL筁B4#53۵jRSO{zԮܭs8@M?yeEYȋfA>#'b-̏6 譵R,K*;sj>/u \ ^L2v3P)𵨸UxKieWWq-WC@ 2T}ȹ.wbUa,aKזsO( ?^|֯CԔ ȱۮqޱVD$OD|vrTd麇|IJ"=Mӓ4T}S H C9/`Zy9אeL[yq.DxG=E}Jzi6b\Bf5?r/<NuScxk;P9 v<(o7I \ʚ @]a-1S0nM|ŚhG{?*v;芴kEr0RWĐ|ǔ'ؽk}*x#Ԣ0"(*zdָ.qû";0@b#L˫?#Ϥs^&9~&&)ڄߣ~ݧn0.RsU`ܑu퍞 vEޭ̋YnˮG2Hflrr/T1C)Iqx+`  ő W:|IHu{iKOyR̀$c NQa9ہL"_v cHnfSFl)$3|HDQcRWýjHIp3ZHD"I@Cm`I] gAgJư"fkE2I Jh7zpU߹t8g peeQsBߡI $]1mj^lk oGd4?ڭ -R,՚!Wˆ{J[ Z,g fENIn8],mu)F}isn_q9. @辙9/$yVi7TIKl?HuaTL>(A{!,^}g"[7*-k:1MQʣ Pu$Ш|]]s6 LCÓ/tq@x "më3|HMt91~Z'U2 trN؁fFLBQ$iDQ,?HQ>QY?%=8-j؈ ywSe=9q̟T "[xrb_{3>&d֡4d?1xJ1'-<-Wz&RY1v 0\ːIO12cRDV$jו \@a0@<1hdƕ}Оj&\rzs+ZAjeckq[+M1_Bt+$F !ڿ,7Tx5/6u8_NP1'N$`Byd|rD\v.HQBY^pIjCK|:喇{dT..?ɜ4تEZ UFK8k*"9&Km[tir|5-w0c9$v@![t\Ti ?q S:g+)edC|2 +F܂C!l/#.+TrR3Vij_Ur"{YѽJ Mюa< vM dELܞ^;}4eCI* %'oNpǬ]lC)y 9$ʇ';Wח/Pf|$#nטZ^ƙ׷ӎ.?4'+W'oGT 4d+p77c:!a帛OV~74͹7rFĆN%&e)@to!ߐSeHHM0ӸNGK$3FÓS@nGJOۂI++<:Tmj5E@P羃C8܊)+z?,35!/7z'#u 6.(n;iN)@6ʵ4䌍Ax1^.KDٛ3T4 5fNr#3}— [ j=d}n8ݥ0{6--)7 .Y'tX\SHqز]IpUWރ$(ml>Gp0]d8@ XMY5<pn#f"&Y؆?tO;兺 BLu~>M'?5PC5/ukDj!&Q˿=6ruL\bvHFI/ W̃tȺNJVp$sJE_|aJGŽh l[K_uǟ%WyzHQZB; TߙRi,VX1KZu$r\b~`[ i۴Dz:6?ΧJ.6mp ]|te_rh73Llz)r%{؛Jvwhx@0·Lm[z$48&QX"Ea,u%jV$X k~v)替:b{9|T`S籉k8z.-uJ7>IG,6r'3V?>`ss:CEA=T pD:#=y8iuXn\!aG'@$\y {jx{#h_anFım&JK%K7[jA/3hH‹fLrV0h5CH19` }U6U~?Q:LW$R62RV?k +{ xѠYή,O~3,v c EUƫКˆcY?[uZJIKB sG(N#L$!w۽Wd9Eq{ɉP5x4N,V,cRsX?UE-nOL"^ed7 dcޗc$ ->JEb'7 8#~dJspw"_^b\r|`/f:zl*GϗԻ2ZE:'l'99 0@KCLO-]7t؄ a m*~ڂ kқ/`%E|(<n˛WRV9Z> ӏ8$U38V)!!wElG7j=[4 gSMEe&ўTI+框 -eNg&[DÆ}mHE;[.Д܇i%}3btD7MFWg(adhzserVJ<"uEIZ1+avKsH<|0ot$@Q /9ukD2TtA[8#P{]Fat㛥#,~qkNv:"&7#{z)LҸ 2mac$7|I.@Q!@x*t~5틱9A -3:Dùa0da PX7}hox go޷(r܉&P9؂GFF³:a2jd8_$v`c-+>/Gr]oP lK]ljjǜD4^Phc:?B%4Y64? `5cV꽁%?c= <`\21%qt#KFv5T< BT$jECz v: yi"v.$0UPY rըڞhcP3HwйRLU- m^uGQB䫷XYl9 0 (M5- "7yž~+U1' g X:+ ud7'ę4CE*F0^OH1I[;Z-*Jz[d5lŽ:ETf ẉ߳ƣ?-aAV_1>jTLE:um1_e! _d,K5$:J޶)|z' iכ}93VۜW>CKER^1_zXK\ppHj$sc |~R3%dקẗϵ-RؓSƂl*2Blx:\@N+$#i1ojJSfcц;o,:)<1SGu~Q:DM%鑴g@^>5Y"7 L?;L2Gi32Nߕ3f]TݝVNQ{ePhnV:gXQnI.HrK*WDɿXtpᐤJkhxRp *r<-99Ӽؤ~sOT=m,9W9>S5Wl;KL+ɱBCO ͽh&t bĉAMS-2BE?]*#[?]u..N*FɝQ%xb`<))S0VfSB>s2?463P'(f5.@CiÂ<~ 쵌ey"&5_j:]=7-A͔OyGM3OJܗsHsFnHFj,)߫3bt̄;Orx)OE2x&.fHhV{vGI6N?R=L H"ߚ#30ԹaV2\Բu'A{HAI!pb<Ȳ!m6_ $'M͎Uhm4]w4ϝN0* U&tiPHI1Gz< 85`x) z}$/nݡ^L(V BDw _X> D &U;xR3vVCڼ<SKGᏀ`MmI2#EE8SAӚU-]]Pҗ2NdƄ(.nTKd h_^ Cӯ+/ ŧ Pb3mR63XOL~R}%i DLO1EcOp<\ECNe(R Wr`-~z8-&Y"dc}jJ4YX}?!590nh̻t(~ ,Z*?Ϋw<zv\n|asGSsLwO?ĞuW!Tib{_2I3*qL" ɁB:?s-n-O%X cn?k|S#* (Rc4];.z=1绾=!ؒ G.G.9Ո\B2QZA<LJUeāI b,2>U5\o \'H{F_^V@qqd?B3E{R>;NK^q=3C1jo&CfӲQҲDD%sH݋Șrӌ]Lt ] Qe_ # ]1_mI*Nzl )tZ*+:߄NP\=XB;v9ۆ/lb`D<U=Qt[Z/zFOS2£DEעizL)j@+^n =<=_M&뇱Fy/YCS1Rd`Moo̲*|Dϵ;1NCj{LʦK֞ઑ}iPjh*`ƓyuDd ʄ;XOxiv |쎁}nEe~fEeFt$#(lwy۷P4\Y>jQ\tQW@2_>Y_>> NE6G6n6a串8l0jz0 iܯ&w n 0[6bcn/,7V[^LqQ5Ik&k [' Њpaf \}]~HjN))@vʎ4iM Zn-~QXJ!'Z-6 kʎfLj%hM?̿ЄO}wdŜ-X_PsxkЖޣ Jf{P Ae@IPihWҕ3܅yXys("7Kͤ,D1z:@6zsነPoZZD<'|7hBR ;"$B02%MJpJuq0f Q Pv_},f@iPĤ6 'S~lՓk"a唓@\=6΋I{#E|OD:SY\8?}Ƭ\HW* O!FxHT xgq:̛{"xJX4Ge3 ~Z4-34|Z1>82>Ө*12,ifM]ŐDK`g*qY1$^݃:9!C-< V;-LBJMX.;?>;Ӿ`#8x:l^)s8ﵮPTXF Wd$\iY$2L0.%f}%ϣ9}oB s8{ r/@ќ/θGSD˓<2KS秿Al)#v PX^)$PYfArzfvU?MӍ(SZcHxJ*l j0i`~-y>'Ls>RF빆#hςl3[%ޅQ -uTS(j}/gL[{{Q¤C(o9S#XLP@0LU^mN!HV/[>,*3GDeVWW밀ٌ\[R%ץKO#nwv:#}{)r u%Zϧ ‡dL% M\]i G2܁L陂v=30SǼE!ؖ9]&Є:8lbQA5ٻ^ӻ,̿<,&!/Lc,)@`78"sr(oH޳;ʉG'wk+ȗ`㲦59v"Ri7]"PV +߮Gk^ "/2f[TG BxBM~N׭?H Z`;]7tf艹ELб2N#˕ΒxE{IvWxFU[?퍨:fC:Kd:זR'q/bFG0!?? b+ŰD%4CG.饴AˆH4`pFmS^ NЙ8z1v}Ue *6J( NO7Ԕ6FlavN0Cئ'7OyB+awqoI@?tG'BC áL1 Q?Ó}E3R8ʀe(Cq@^,_CbpRq8;`DyE_)b B]?2Uroe:͗@I"Y7cZM) 1)vM @#=䵄 _]S>a@yxZh> d\~v(7 d.OD"Pf=nw/wz'=,NxH܍[E/EV W@ա}l=ޫ^XyHQX1π;P W(;\X0'JT/UGKi6t_ G}4&CV{k&\lw1,3*U1]O%k96)*=].H'քt[v,+`u#>49,$C`lUf <`~vN=\xn`D+lgYkw r %.E[ːԉ%COA&_ʳAKɛJc`DYd+q{ACeKSqȹ8ؗd\( a}˛"ŜZ~:߷I|.0ŹW)NA3 )=LvQή'l{ƅ-gF Úxb&^ÝZ[Y`$T>*N;WE0>fφ'pN/QL^ޮU{^CPwKͿr#Tr7m>4!"/FM_Z"{sJKnJHű eڜ|MuIH]6p *Gs2+t-fQ2QRDGqym}z۠t4 7$i'f Cۋ*2:1_l@+@'m5h`dv}TLh˻|ґ(S4 9+MS^vA[Z]~[d%zVR宸*R}}[?ɚ]Mr% k\AT $:I&I]\(;пԤcĉ&'z$or&⢶E#_<ŋlWFR:2BG8"'~a0w=-8+`-ZۼVitUG| pS?Y[ނX̚V?kC)*-/R)qNJ=PA38$<P-sNg[*B8abC^2)qFί'$WZ\}Ju]u Jm}}\:]H2=NqkD^^ o7SpKo,v'?LGud}*~ʶMGa- 6ED^Dh<`| n냛|+(Dcؐ <=[ 5!NkV1ԙ.Sg(rJ @/n(i=v_Ña.Xt#Р8pĶk;(y Qܘ'm?e( +9*Cnmmq$[h/>΍ \<3`#ahJP~<,ysx1y)W~bX$Np_`=h[8_+L{7E-ő =aj?;l Uғa%<&#e6 x,+:3h7bEƻE"/ {JdD#ZҊ]8]&Ũ#`j9 @%;:5I]Iux!'|ֵP_[Jp|ճl:>1mDu;Q P!"2xDx@nklb8Jssk8hDo\3C׆t-8̗|n|Iadh*fK+!V XC#KWv*_Z13C^~n#F+/wg~HKp/Oe}* [&㸸P@9&ivg2 ũN[ݣ(#ֶ}Fىb>M2漏\gJrx~%>,3|ߚSmЛ|ؖ.w?rA:Z(4R KI?j/ygbUJ/xls] SVO%JZpY7s[=eLchH>I>Fr<u",.y=8`MMucI 7*{^.vLCiK;I D`_.ۄXb0Q$uwV(t)kRƘ1ϕ i;5Kìs +Gr ګO*IV|.)Фl_D 'Q'靪&z.7XIU܌1$4;W5OJq6XRɗϥRTElOM6155z2 =eAUBY}gzD'(-?/%X({[qawdbmJ8\wN6*< !٠5NNyGnyjoXʼ߽HW 6GL"ca#!v7$X9ф2)jBRՈv`$\gslދ-N"w6Wi:7ll z:mͭ$sI ~$(&w3)/dwvPDJT(6%Ɠ?ŋ97o~ 8WIsYLQF]PA̒hކ?[5 J'!́Ƴ_o$kzQ@Q!h1ca3/UxH^ $%9+7GzdpI-m\%(  RoEje iNWEk |-2ܮW"JS"ΏBbpC}U*ss9]ʩEhڪuؗHlgBqZi%%;:T1p(/Q4 +, uޒ#"|`\vC&j7uCg뽗9M`ƛ'/.{b  ҎPbPtln (".bkҿ# T% MAؗdQ_dQI2볱2dq*·b2>; z#se6p=~lX`)ה>L(ee H{SSyYc"T|F cQ Av;ϿLw$6uxb!ڠeAO>lm|K_lXB7yY%!O?}>/ݰ,j/?4/:͓F}0ִ+Zy{ ` ?ԓ{D.yY x;`/nSN Q˄-88Ot#"֋3;>FJ`]K > tw҄B+?[+-&m O]l ӥ9Duf^X~&,Cu#_7T#>P2c$©LJlV1Qt+ ~`\ᔃ2&N|˹AemNolX<}&ͧS$6i7,BO%S<=:zͱ!{H~.5<+K )%qcUQἔg[7,4`D$3`0)L+&bqÞR ҧcm>'ruD$_&-T"m:#Ҋ-=A7WO=E&r8Xk; (GGs Q.95n,mTXRü|޵z)@ej&T M0)Hku(/qʆˎzrsP{ܮ#3} +Ѭ֝E49Im`@M@(Xt6~[swP9#}3y}r!O-iў S8fn’89Qs$yʉJ&z<[ȌL=~ *[q;)k/=mQD0]b*:⨱-PF$b2RZPo%q׉ @*e@-}+0ᒵ=&:іsKE f+ %Tõ?%.BZ-W"7b6Eu Nyp vYq(+Jtq\v%vPeEcmȺ *x |=&eu,7a$Zmſ͖rV6V>fA[r}X.sP<04l{p&wq(+YsSxS!<p >wY0.[uO2B؎*Y|6PCg:7L$UgE>sȱ c[5uWL~4*,xh͓^jX:NRf7Rs`^lQ F3^ `$Hd (WŸ!WzdipmfK:Z?zӽC|iΠ6l%? 4- rM {N0Qa1eMlKzx5,*ЗցNT/~OX@`5dFDT`+U ӭ?>N$U>/RTHNӎBP-eB= \lj  hzf䫾ƣXY5.N~>" qs3?DA~\/= &vDk!Ӷ^RdY#z/]e~`(\phBިg.Dc1XaMYc/Lo܏0 ܆aApp-pt~1L>WOMK5nj7fwH0CXȳǟ~ZIYBf&.=I몆7s\["tUw[֝ů ddE}-RJP{-$ 0$AȚ~Utn>y/cƸ^Z*}( %uшh** 5)ha]͎a]V*^෉WViῈWTFMD5z(W[P苺*[. $?L;)1'GuTaZU9δR3.Ϫ+ˏ}kgjQ-.G [@ZfhS~=|)60^ WX }x2YR&3϶ %I|NI&O##M6I.߫ O|LG謵^Ć*Qi3K8WӃc"&1^?wP1Af6q(yTHy6w"8fn} X{aDl)OFһ%j~(JA3[8AviEokn aЀs Ȗ#ɢf&fZ {W;>@ֶI'e\*-FST(m\,-gb͓wKqcT-Kh9|zڴ+SMBbڃ(\ȣBW sS.<,Q[|а ~RTQ7LUDHApz(vd{@Vbw8dN#P[{dQ}ǯ-f^{*l zr;9g=X-X*F"/dWNY0 f~V9s;)T>vB+R6f_ 7Z6=(>D[ 2ٹ6MퟳL<)iH+и`;?l U0xjXKgsLT;h߶w`nŭ=ѣ"PD˝9䁅9+ aDT51i tlĬl tP~Gp.GI:ޫ``HRǜ3{6 ;|q©jt0P<ՔoCa'`|z"$Oۉco+SE>4סM%TR?Ǽ,^'c/e)>֢̖ɤgcU#"_!S<KOלGmdX*4w,|BLv"ϲ4>6/޽N`Ng NV)<v@!a $s"!}av:юYEm:IMl nj$Ʃ4ݱnXf;65uocEa?K߰3IFMUqݱMurRTjoFa#B4[!h-^?6tC" cWװ_$l+8Pp"m0bwRaVG,hlt.wXLWՌsH,0*ڻD~uD.B1$@uC no¤#qBjS"h#պb8.[+ZiPk󴅍,Z}8?Qqn)d=gnUVaBkqw^q=d>eq =ɽZ vY+g7MMPqT5V2Ly ;3g-:%$hgx)ջ0Ym^@OLRU|H*DюU F(t=ˍG>qNL=֛[ K2ڶJ0c 5s*#z^ ᓙl%;s _ȘP\N5N)C`KϚ < _JVZaD1}.Q~0ǯI Lvè@6J'RwgQ7[{j-h,^k櫋7u5 nu>à#WBuy~r~O7b$8vl?%]qu6`7׻5tZ{B?=Y+v 4U},>'Fg^3qosTkwl&tAAl"gۆn]s4Є?EŤi@&nl$ 삄/ラ8ZDdziOp+pb2tgUX!uYSM-kUmG/8t0j5s _;?ZHZdJ[t * AC0g 55-C^L&IiudB4ڬ8k1r"e!'kc}ax>x=AN4رN?ZO&~uS!'6IcƔU1\OLԙjJp4 O0ƫNb##>aAS!dh9X~8*,Q~o6XFΑ%\{>ipCʆS}VCƤ&2w)H `*h e č+ i%Go-7.kI>0dmnuxKP0˫PښL8Xui"8tC AbqW[ÙGW<ƋS,&Qi(2H*>%]7*V:c,lB')Mr--8,=ļ0)!C̏BZҦ7,Sx`2v7;\ѠN5;2ƛR>?Qc{+D] 7 ȟ!f3Y+<28n՚F20㽴(bL./kkr٣? eDL!ܜAR> ÙZ߄dFVOƉr8!Wz r\[p-S5Obƶ~߄@ ]-"61P|*HR.2?Θ\5|͢IE?OEcq]NaN Z?yh9E6yģuJ'r󢆑K5 8üG& ;j90im ꊀ7Y.` o8k`@!}lTq^/:kvk%4%cLZ(t!~ eSZGmHB%um%vuIj8htv1AZex~)h~+p8{O^heȬOKR^-'3J(0& 9e[Z8 W?c)Ϫ»VJӐ"62;ՊM(p2o$lVy(C"0]5Y3i~L kn Q*:vikhHdNc+}Rx"YehtWZPnjnG=gZ")@P!ҩvG6>h hS^`a+ zqk$M0?x5-, y-)_2Oi _C=?t6P֭,S߾T7n_k: Ǜ 5Owޅd $"4w qp+Ùض\:|km7WjEj@"w m 1vp]J$ ͺ=խ8[˜ 4+rwA]ķjXwqO2> ~~lNu-gMN. %Fpm)0jb8j_Ov6@SΗ?ny=YhdkP#M UȐ\gJ߮Pf,)OA]~+T!#|/sj) rCā?)M y][A?iljd/NnTvM tPm_}FaFzDsg@pM(%MbH%A ;gJLHV@ZkK ;!c%ٷayqX/77w}i6니l q4 XL͙1yZH5Cw؃fVTk0sdcØmb5w$p[uvOzvM+ Ƨ-Q'h5+ *sP(Q:G5"GKI}j\64xT@Ō1%Il޹t3[V{ HEnH7z.?^:8k=_Psq̀8<F0$#K0z 'L0Ey90R\"^l!P7z|%MM:{KK>t}W#3b֫/"nyֻIIPHV4uEy%)ů¾xPUS$Uh.#QV]Kro IF}5\<1Uɩ{ h'Rh֡>rܠ>r|=˷e ;molO]VgJ]͇J@{OK|' #PJQJ݅!E`Tڈkٽ DRa=^4bgq%ljϦPvqjٟaF}K0[V&a>1ܓlӢhZ'SW%{R~VNJRǶmZ `]F z2¿iӼGMÌCK'(Txꓹ ta]/g^X . s xr'x#A|+cpp.dr\s9Rl$Iꂰe蠯 ] Tuh:iH0^Z^}g(ĂQ3°Nh54.D繋-o_]*l8Kitȱ)9u2QO 4I3 $}=NDAI^8;ҹV>3o4V.{4V[ P Ji9 OFj*UeA ZaErB@وk}!& (ѡ2wL "-E &0W1yn0b'i}~ԎمДP3slPPb!=帥S!;x푥,P4@_1\<-U\Ddk?U>)ihl>x}{b$̼n'nmӧ<َ',e4[dTȭFRb*'[9x]&w`v\59%]'ecߌ<:=mqH'M?>#ET+8*K)d _ؚ̌Gۓ nԹ:  )oX7'-81?PUKnjeˎƱ Ip$V1/V һx4RsowN'{:Oٞe&ީS$D:j3u٩p5Rt^/&]>A9wgГ"a9ݧY=M(!9"@57Uϥ8NI*C͌wwٿo&Pԍ~1_Ez_f\rڇ".f3b/uI6/{rSe0A7ܲndb-m1ƶ)QnHgP1 5%pHNcmG`U5 uƹ-LA@&ģSv׀кz?vGt87l!v0dZ*eձp@ݩ}SsөkϢ5ǝ(Nt;h]D'H`zωҲv|8_2e8ָ"T"&q7_x2>o.Qrfl ŭЮlOeC\IE~A5D?4AFuoUR+H"z$:\'+Zzjo?LFI!l;]M,[ݦFѳ詪A#VkVX*Kf}91_sZ v+s-?~'zґ=VBr%zN>?&Y 2wC%+ -xbH[2BɋzJ:5յrn&UKQBG33ag4j[vYPIhEwé]GSGG3<(x{攜}X]ȌG(:Po :A Cs \Y[z^?],#%h"*QF?CنNM穴i 8;<0՘y Jgf=nEZ+0K]#)7twSlc~ Ku2'mt$co^mQ!) X {~_6aVB=RV}C=Ж"+ewl,FM}wf h32qo%c cg mm~ ’~-&2 &$B=DBq0z=A0td|j#s. A2Cg'wh8u+'H\EAmxKW4}N|Jf$Bz^1#iWS"@C~>(.vcd@ᶗ&O²u-X+_`gkubp _6*}M-Cx49~v1rO X5zS؅{JP`x)!Rn8./sYMBy($'ԟ2]|vԍ@jHߘx/HDC1HBCiBϛ֙J S`$mj3Zls@s(|Huh+&!{l8c[w&[uU3Ĺ@W2iko)kAIۖȯ4IAw%*౹h(I9#mϠP%*)):|[BD!ZvRpg9}T:DLwCAC_NcX4SB䔴4JbDe+y(M"]B>ӣuqgv'6e.!{CӤיj `'Ef 'լLIW\̻Rg6qe}W =,S S(#sŷ݋yt̙ZOni? T,{r qȁ351cf׾0jқhƏjf[K0ƟE9@\;m:tˆ5$qt|׿Թs}AH)Uwkbo ]>' SA c[H]3WwVp0|yʗ8)]M 5Gϩ$MY}79_n>KsdĽX|xPH7;I67rJl@{#OJhQkpe<tivG)ݰvX'IY^DeAӜ!2L' zucP,5B(eiAg(TuiP30 Գ+kV.ʾq-o)=:$0$Lr9U˦ny&h1E79 D'dD?KweVKCOd_Δ }NL"MRە+U|)~zC![X%7F 0'C3]J 3rA\cT\a 9L%Bpo`h}VXkiiB. lĦ:;֣iA=q m_OH/o"jI "be #(`w Kx`>̑a2|`;֐p#VdoWŎn_-g.wy#f p%:?XKֹ`n r]R!bI-d ~,FIr7nIzŠ 4H<$tcav oÃ[GC2F9x߈$Wә`Z]"9=ؐUp|C^A5UdiqIe.nDEY -= ǽPPT$+WK`3Jz߲C`l/ѴjLbVv|MaE H{ kUMkTU <s%Nʿy׭ϸ6Zt7Ǔ){+5Az! v"j"ݜl;~\r&kYb7J _Wp2SzP@Py֧F;.4WY;; aWM.apECG1i΋"bAavq]TDa[yH*,j w' .%@nAHGuFe;z#ok.݈3Ը/G=J>A@P?9ORG"pSTğF~5xrG}&Zz6;hmTڽ)t4g# o!ZDn5glϬèʝQ/Z}9q:9nG ,;.ڶ2]'Hxj0qߙ;L'׏g|'{R(+ :U7e9xXYN2Ùۈ)=SHrm( ]=/ܻcF,D겪|2\p@:H};6PLѴ>ȯhWUft.r?|GrKC ^/ߟ&(lܷtLYz9!0Cyp#\_dF}vV]o)g{G.9=6R8}&kO ؿc %\Ɋ FeɠQb42E/~\eY*:<5Κx=ƓroL{}viBK"CwfSrZJM-"W_lnTEU[E( =h!q}|OPݮ+{N}Y4!8@a+vi"\jkȜ+dΊ'hؒ0<>92,h,뜥d( W;ߊ)2Yj~6q`qK|$oTi[XeE^xD:t-kȋVmo3Hb/t>L("C!<@E] a~VW. r%J3u^f]kA#IX_.W۟AnrL%*`GL2 V LGy Wֲ7  AoCgpOF,h7# 6~Nb pG%oW&W@lg ۷=((܇ckPykYٸW7ЋW` ڕ-m`ݰQP!nW~6),}*܊2}U.@hrIN%y_Td]6w{oo\fzW5^LYŁ,dNCKˋ.uBfv6 Y^0nIP˚>loRϺ "5}qC3E [#?d`m@FW#f\U/Ӭne?=bs%QRL9 'g{I=LJX#iFHu;":6bLc&y"6B2Ň;oWljSc~.̄ @%(zYn5LISNN@u-nJɫk "c%!f]Zq]t4Yt@}i]^ϔT[۬~?^&֒fxD(*HޔcFZ)msv1Ċ1I=TՈ|5.L8Pfm =C$dV[VaX8>'!SQn@iHlZr,v0s?&uE{FtwXiX|Ԩѐ|\S2w=%m%]R;Qu:|GJ!nR-2Of:]RBiEyQ)W%^&8KuaH6Ԅ [Lg?c&PH*&.ٝ{,@>#ܦ-v;F(c/=da^T-hӋ) #I%R6Pb(i.ݲMqfGƼ}G$a6F8j<x~HJ毐#Wo,]eN{-Hwvieo1[W8+SP2&ڥ]OLf^K;08">-f;QWIh[ńϥ1@fLK-{|ߛAI٤:@1MVYǐQWPpSϜ浂 e*10bjG~-'N^Qܾmb.X=AvaV{h[2)=y^3Q͋\~}A ‡?[{K2 #jͅ&̲`"B/IHfkga#iYFEԬ@o[`("M٥#L1wR:"t7K&qυVNظJ1 ϞVCU֫OV8q,{^6j6[)R|?O2eM1p .vW?34?fVynź7񆙵5c[ĴI8 0`wN*]mW) lOEŒjFff*]z.~.K1֛:ҧCQָ rM+LvQg*{mWiʶVRnW| D&9:kV0 9 oUg7 Kdr&߰0Ж?nC@3:RD> gYZ(}mco?.OI=gB]nI9 p!M1$j(Se>e*(JTC4Ez;b? :kjV{ZZ7ѡ_u8N6kVS8za֧G40_̶+SĚCFRSF7Y "qi;fa)C{Ww_~W?y[dJjO'F  "S"/ 7>dF9M~֋~kz왷D1t`no5([8{خߞK5GSC' mFmV4 zUE!qe5} ɴ%gkr >7dPC"j{Y=Ce+dP30üI J;_EA!c 9!3&_8$Al~cg:8}B{_aؿpH n߂s cE+9ix#C ;qQ:s:s$/L ~Ap3ʳ1p=2j}&53BKƲaqF8+?_P0"r{q4=^OCT.A[In`ރA*Uo`l$(E bwUo4{/ͷ5Yze HiX~Y{BSZj4[6%QƦa`=Z!R:WL\*0ٕ:#tf0^Z,Z%]_B~9-/t`0YCmE݈QE-'+(^>P/a #!qJlB^=POTzN˜)'B|ąb0D>?*M痑;kt‹OC1ek}9 0{_87e1HwhWbj,;Wxt/Kd{>mEɠVacCba1@mrGQ< #E! .|Y~K_ǗD) ;Z̡7#5)B)uZD7aV'mHc=Z2ɕqhjk'Q􅷟etBS9mCxÃD{qߐ ~_}j _eW`|}Uswn(ep`T1ͬFQTxβn )JC..3=İgr7B~%X퉎f4t<p2IH:_jjN^vX ħv^,\2Ar^5P0ULZ);YKsPh` E*cMɩR5Z/e4JR Q0_L̗2^/V3JO$tg@28|/2F0:{o<Ҷ&~-i.<>9e{! o2^1m6C G[~RNCHQW`5EL.ƗD{Sqtk[hMeamJ-Gi+|gaZ=<Ԝ]8yULkbN8iSrgVF$J`l'Q)zVsǿ#IH,[M~^K3elDzle JJvW38Tk)8{#pRǭuQiM6|Τ&\'MOۆ!C<-p /牒ݯ' }^4+Io#-z.#8Ee@=3ZA(oؚ$t EtrqCl!Y݅#:|a WmpP}Z3GF\hxvH5;QRޱ bT^Bl4I$*]2R= 9u:hZ {յ#qsyA}0qz#ߙ78 29ZB] ڏldդQcY29Hݹ#҇/3!ΧdY+q0.e1S+Տ 'adC4!}ߵ}E)=&!' F__ Ƿ̋ngS6ɂ^0bl1(*qOAوZ У޺ } |!y{+ulm-Ұd-y,Kez|OR&U^Fp06_ZUG@!0hS#ɥv|GO3Ro@nB^ôO}BO;ZJkk?Ռ1LnKeշs BY0Eׅs ^_Sm0hcd0C(c mfJVOiK. -TМEyuI?0kbVjK:dnIC1cʼX>Q+ ,5R#d_, S +1 6&PR[ֵ{e}İzlp:^X$f$@gg93}4$$Z=ivj(xf_ Q#[)K#[ВWĀ܈%ZМj]ոh"B T/{by~6޾B;4l䙵{{"Zex>K$9&f2]MdLn Bs#Ls t.-@9E{KUQ`y!8Vۑ>Fh^z]ѷncPK 0m*r0saNb_3\2O&IJra,sC4Cfw&Ĭ*>% %|o%w"b\eIX$ley@xo]P\"OiUB4HWƪERO҄xpozh @9mӰ!\~ꦠDJ<^ʈ\uIˈ7rjjߏB?7ژ]]!ӉGB~φ5+úXoǍ E68_ٝ6Lg&!LN#m!=}{^)s,M/z%ɏIzN#l!|Σw@7ZҡO' %u TO8. OS53WΊ~/RHJv EBt4G蛝䀤NVq"G0gEgզY7nFmtdycמ!?4+J<=XK@z519]%c7wԪ8}/S= Bz'FQ,-jh#4 Z/B20tT[fjzc_o߶뵘"fJSIlpZLBn_Ve`_i{slF)X|S}zr\2/q36 w$I Z .{ )2[{3+Y-R8!ex`a>?>Xu^~Z.0p w&"DFZGh@Ŗ#P81wuɚM9K_}}On&QDJ6NZq}BbL$fpWJu*pL6ܓѓۿz vn*^re–66@Mbóq;H_'nj(? 0,„+jJX?̰ wh翢"cu~X<9@hyGB )rZ-ckAeX sWAJ?Ȟ5 CCyOq;D='I6Hۥ e1oR]pjPКrOX˟k"Kڴqc8 p%., 5F1j|}I\R41=p°S9J3ˮ|onu(:P߬>9GAӵ.ś.L uF,6 FOϦ-rS[9#3{;ҷKܺ#t!CtNm; k )I,*ZTv":Vm4kM.GD@Je-,Iwr:l`HbdΎU1L*vMi log 1nF?01l*|BUs`tuPo uy$kcjIgV 8, C-% >+7nBU-42|;+"Yrup:1ǖ%rX|$M>9o?g`z(9vu7 1ƿvF+,DnҚMR \T,BܶwVB=}bN죽d):N*^e=J>X-" H&Ku.pB@ģ4?UL%KowoqiӳxZ!1Kk"Vj, MX[-R7D]x唻,}ꛕ'qtsuQrثR_%Yau ƫ ^!#ɾ82%mȸie%>Y0 6Xh }k2yY~DHw† 8&~nY}Zg\\qY]Z>$LnЉtqcX\zYj7j~ǔe ^$00BTcf?+6Zᆧ/ʾtڽÎ{Mqz)#:)n&Koޮoo/R|Yl51\{# FRs=VKȺEM;B["n,aF83Ϛ㚕lS<ɽ]@2yU*GhX&QWlOͮDRMtK[C p`&Phh!@Dyl.ջ,ӼvDk_S:K:s ԶAqRk)o Ew\ ֑Q uc)l |vW~~z,; cVr>* Fj{Fx +'RH\IiCgvwxS=lnRIEN]p;(py Yw F%_`?UM$;5U:q2F_GyI"EHy\|]J\\PP( nG~l&uY)'B!\˸pY lq0Zik|'X%Kr>LK6e%X PG =vtzÄ/y4v_Kx ͛Ӻ JvWQvgpɞyjQ/Uާb;L#E͏fTD83J(8zGp{Ӱ)LezEbkϳ-]7tPQCY ʶ*Džo >tݎPh(KDei&pᄫfcߕ3%|)pG*>R11эPja#^w({;ѨVD%A @2X#׈q%ˠ_RNzQR%5 b1`rW<%ṷGmӑFW[A^r.K)[Rxfa=oÀa8 PL8gԋrX&fB0yW j!_LG4[c^H.u]; ϟ*h/W)ձMu9ς* *E#j0({a).2bQw[۹K KJḩ cEA)V~Jv(Z@O\=C*1o/t. 9bhK|IwO gFkJ;$ka2QrWVk@/>2}n0cpn!C^LM YHqIɌW|ĕ/vC"oǼQj<`Rb(qIeVt'ɞ18ʔ ١B)㓔1p >3 B/ Q2qLDXʽ} W#ϠKws^0l T1c'mLTN H=Q_Ӄn9Xwߩj2| %?kR ~GmOmrFY7F)]$SRYXJ\ܝãvO3o )ɪq0n]jJTH 9X}w*Bhᔐ4'mxine4r 8~c D00AJ=G BCߏO!gAFOF\@-֕<3511,IËl*a XeJli WD빻i-U _) Б-s;ISL j>֚G Ւ۹RۯNZ+} T :|LҬq`r^ϽjRK=,76@݄o <. dS?{s\l\mS܏un*T*2=TN70! c7rt/[("r{$w_Dɣpi29$=` %Ţ+jE0$ . wcЖlҺZњT/3=GyOz/CĦ^u%އE>U^E֕ګVFW_[E]C,,c]7iFU…{(<)4] z>4% 'RWx&%tsbt'j $1 smE*80aRvv 1g@Jil6H!Z4^aJIFmwl$7uO|Z\`{C+3hTnE+;.sFsQV<4YrZS]S<%se8 >Wzv@ C98^/F1%2ߖ$GEʯMpF1?<:2F9X 8Ҋ^CzCO <[#޾a: Ďl_z8qk*ś_^/o4+ g@ԎYj˅ Zl/Rm]͏yQgP2>a;22GeJN;z v"ț]]4[H-%_'n}+7%1}}"xPwّ7zI X² ?Uǜ&T李/P/Cv"`ZVḋҦY=kVf%9P"#T*5(w:U۠$4E)ek-ph%ĸ} K2[.H[39J;ax ە$ M<Wj[IASk` xf 2 ڱC-DžȰGŬ eSb`(+n "0`E7@&#瞔l: <ϊ}uI dvB)_;/%n4`59r`M}CErj;n6ɔWr6 QƖ#Lԧ HL&:) ,GF]O*xvOM$HXrEv!h gp[L'QpVl>徻~&>v<@ TN(}[?PYQIP3r\Ӄ&:(X?3wL+{bL[xjY + cوXLzEvŻuJhwۋ/"=ۖSl6=2ƹ 3iûG,˸j1W@׉C]ɵVBtDocFw@($ +_]<[4Ȟv :+0P]IOicsߋlvLE>&$@'~[aSRbTҵl;ɱhu[hf eWW. _bj p]ͧx>KFG7%K ɴě=-3>"gc^bdQyHL跢^π?O<>+_AQLw 9_H=-W?Dk_ ёD[T6gcU%u諥@amqYBYtTrP{0)}A(?X2lMRLP̀!M>bv5a}T2GGIsܼ3B> "'y_I#w,S},#GT]j$91?~_1ޝE)c-QvgƁ :I-?؇fNe;1b߾$%L+׌s2`pP<c|x+_ǎ'S U!<7`APɷ[>֕\%K%tMYrɶ mZ%cY@[̚uPL- _{aM~+OӏvYuQ1 ?u|92LpG-xNI̷ZʑfJKM݃%n"u?+[swł:!,S}|<6Bez\rBYv`}/H d6ݴ*h#!+xi9)]WՖKs|RHخ)ؗ\ uH}|FNхd}rg4 K8GGj_]$bj ĕ}}#jF2ztdvÇ$1ܺ8 *WՃ:(8WA/ܹ)q= w-?PP1PBgUR'CUXrpCזU,6 ՏBm6>6X-a$`IN;8BXtY\ۀe h3rFQ.0V8ԿmjF"a $Hj"/u3|u ΂1n.8󺍲D"koS>2ݘhn׬_":<3)D^H;1ejɐ+ |eD X5e`,!F:i">0g˜aK𚀣qX35]1w? >e=m4D-KX^fͿ?]f|K dp1_lA{Kl~A)j~ʝS4rz9>wm#BCJf"P"a`ơYjcL8s[;S8>g5 qI2@Ͼԓ…K՟Òur xI'SupN*A||~dD`qp U k0A:,cQߡY~QkEebzvkcɿϫILȎ3o(r |fsU%8%JB..+L{'ۉ/Jg.O0ߪ~9'3 ϚU0B> 2I|Rxx擫@ f_eˉl#X&hCtL6}LXңGja*hu ̀~+CZ?i@پdtv{N!;n[qI'ȕ5e}5;%, +Ҫ6`3(܇43)0z{3e&tpN-# %E*FOgQ8<~e{b-\ƖmLΘrӁ3qa>YM-\\o2XsFBxIݵJmI*+*- X 5_vW!kXYFkф >J/=jXWZ4?-7`Yhj5F\wolkxw=&8zrb{)FNu}=Ĵ#xyKP1uz,C<_J-mLEZaKyL0˃Uq G"%)P3Of34t[9D1rx?Jo΢=0+.w[.;o*3};^e,vN&woIvJĂh3@P/B;2PRƻj-]jne9\axS:5^0I#Xr!TFh/K ƚk8r- K⡽O;AN GNx͗%^)_q(re:Pis|Vꌸl&+hX̀bwU ,5K7(y`DK/"msOE_GwDĭ㾧K?oP Ld EuQo۪=R;|d#7FGfEPnhAsLz.IHc!@V{b>d)BMKR·}A2 j7됃s LM<!3[?)Yv< IZY_Mmp'B ؔ.!UMVާ O q+<$I-ַmlHXdW|p4uhaӠ3,)bx$L7I$mآb>z+?;\,۩!5 :{4q /Lj(p؇aGd[=M3?l yI׽R!B,HYr&Vlf53 :F+sR`2Km!xҤn3´xPzOȏF(#Setn6 nyk0nU\aG[:og vHm<PmR?(oU7C–Vb+M, bRgh_;e&5eO-Nńv[OmS{)<&vG|JU^bgǀ(Ss^|Te7hKR0\a1ܙV w*Xґ`ѿ$ ->+X0t%O<^a=,wV jϮ!e7/,{K1mlz;) D? \V`a߻!9F1}ʯqGBM.(U.Ҏ.:ԗ urCt_vy줴ɉrJ&\ 5<;zN1 BCPG(pIGX_L^1$h+\8LMO{m ~ڹʼe/cI |fKC!d7}vOr3wb½j!Dƣ>hti/ uQs\|{|@<`ku4yyСzAO af V7p`? ڙ(m1exb~QBS!dң5Vl'OBkj頷`佾^BI?:Jğ\4oms8JMks6PyK ޟFD~W&{)2W|Oq%_ɦzuMQ08%(@NW{|($+v Zu.GwֲĐvWI|O7)^{|oOCjy =o''g k"L_!6 YAcSPkF#SIVhSP! ZnU Ϟ(C`[$ٷ:e\V c /|UFNMd6ƉYX弼TCl#:.[?^q<*ilgF5sj,zc1'sܢog>.VY3Y/Z0{/!7DT.L͓*$nԤ!3&s{h'gk֦Q~b; J]Fp;dRA/!{S44*9޻ӤGFܲK/ hpId05x;ZbG0vQd]awyI`ȁ+QeHMqRPVYק#c5$NЀޏ -[@NN]5wieM2®x1hȩBdY2Trx0RmF4RQ)B-j~;ܝj4U G]H [89EYn&!VvY 迼)zL_"r7Rn9q5W?_-"jllr Wu'6)xٕp5ҕbO 2@A )?" ‰f n?n$7(sy}{:MHfHrd{CJ+='[sU{6}]V@ap&e d;E/rS*xI{T%Ly%t}#?s 7P:Fk6iK)z?,{TOGSxug *O"b FB oWw-{;|%O7;D?״x|i\g i!eGu? -3_,!|ԧ[wve!$]UHFѶlĿ Hբ[ R?ğ@M"G|'9sqK^v=bw_ {@b'S5{$s9eէ7g9;Jj6iuT kb)ljWƥReC-66{teSwS@ӒFizM2hd9U$RkT#t'c2uk|# =wUYaAM\2*3-FDOh _1~$MaWjo Rs3[~X*)l\~HXo(" OTG}ts㒗ANyQfmI'J3#ayh̤w-H*8 '4dL*U s \5 ;>NW}Lf7殳j:]>5fJFI7ET́|^\sfʺe;fI{FrN Z0ČT|ޮU'GSP{ƹT\Bv/BWҐ=\bc\Q|KW:M!X2%{p%Yi0PطHYT_@ciC%ʦ uI{^I^{5@y0+Mm?KAX0T|ny+ŹŠ\PxBz}tDa{?ņtM'Z} J,QPa0YiM]H1Aee- M2@c!h{âCD3:{b(ZC&]TػۀQ3=D`I,;duuY|{٫;Ɔr;]c4V?Q7s'?(jʂth,ܚXD` 6:RU6CQ}i>q.皞AU/]^qE(RyMq*A߱NǒkR Ձ)i$7t(upB~ aKƗ#:&HHYQL2OZpXiðk`086@)Lyq+*UY`p)(PZQ4'8$[?WdbL)k͘ e}=%<4y͓$`N 8{-O]IOhR)\# nEӪ[lvi4+rP`4=EIPi{Xџ`Mͬo\q?^xАq~mmvk"3LFsʞUY7Kq|w'F H-  o7 &L@Gz`cS> ܒ SiI-%DHH}@ V=͆.WQJ ldޯ?-Ĭ.[`>=Uu먗mҢ&,P.iRrNTUE^ΆPȑzn3O:_X! dn;k=+ݽ;7K0V449C-pu> Iմ ~]0yʈ| LDQ7C/obY]3[9X - ^fS~vn~lQ*G8 }]#*>l/.l KXhM'B6m#i8P*/ZN^j#u Jן{*1R gdTepGr2Dc R2'n QO9jz`iI[@amA+_}O 7ÚAcyܘpglˌOR<;tC^FTcD ? g=~IX9y|n"| 5sFRtП{;{;,vp@EH )`6fHC{奄{˂͜Kj`u)$߬ Y+W9Sq֪yKK*\+@&2n]ivJOR~I znV2;)'^UkiL13'l[:>JhB&~pǔ06*g),~?wNs4&`IaG & yy2uM YN,֬jB '#n֎J\0b7in3F%'GU;X Eh^`&~V>7n2ߦjU9Vwd% i_kI>=/LN*+K1'hs{؁vwf/ pmߩ g.&I<= ƺ,l^$b6ţ 篹~O8:\1!;g tWQKu[6Pmhk֝{oֿX9=[x^ST4$`|)5w0}dU>E@ټBu6y:fZ9LfSW,J? +ܿ2#jhYkΕ#ۈwpp~DRg%sۥ%u( c/MIbv^2ԁ<xߧ+"7/qHYlLNP~, W\Fo^ʄJ8U Jx}#"!1 o_u>`#Dv+*aGrp!-SkmS X޴KcRd#x6xΕs,ʶ?҅?a6Db%Mӥq ¿# S-ҟN\E><s(6eꝋya: \`y/(2:&|j-F傅Vp:B |j+E96sHӇ I ԏΔ+j%x""9v`` _{Pd>wR6MTC~l?jM+(W{m2}`-l~̭Hٚ: Ak1Eӓ鴯PLyDUFH=;e7vA}5`?%Zs_ĐP=cSDGO˲BpT1 `l0tiS͌b E9gYN囼OR'zqR@&!o7?3ujpXjFeeK[Z_8z(#fF:^(!=$Gd䀸36 z5 V t'L+rPNN),SwȲbpꋴ6ӳGjo1ʯcJHDؾkM GFP}tr+nd9JIV~hlBꆶ(fM>dӒ7tK1_{kZE_|(\rAPxEtdZcVsŀo%KΤڊ߭"]ck zDfl7].J &qKMYxK;{~9Vӑgt \îG gx.;'-]`L0|Wn)+kA6SzԠO%Pp¾hVMY$ťp(Ux$7{ Z} yi[TxQz)&M+]ƉK0ύ[-7`KR4!]?.Dp3ΕDxFޓ[^=G\dli١K\|6]z N.-%K S#Mw7{w o9NmsxC/I<}~ ,*P9>χr%zbo6F /z*t(IA]KcwHXZri9I_P$LY*15 a2)p%xqQ09ae(\M{|l-~Ch>c.m\ػs, 1ߚBռі!:р$yhDa;OSィwqNK6)j$b7>4aŪF`Tf?F>3K*05ht߉g\]5$k$o M@%Y5a-OmW43$zw^/Z=]nԤ8XHZEEs]:?-|,3ᔙ#*߷B!*lfkä'\(wP)ݧK^,h&w 4B;9O[5w2BoOm;16d@-88|ՇH&KH.[uH9Έ뉱>&T!*1kIh?xPKh5avpXj]*|,$k "+%mSh'(jfaM+q7H cl6FTQ~ro܀>S&YK]~0:˲|V,ðDmw;x$#iLz`PޓgL&ℵfOo{y/ņ]@{z+J_*V-̇sr3 AsncMz"8hL}E.5br^g ^oW猔uQxht-,b&0%356\}rLh BOdNM^W"ն^LFY߅I@sK ]^$ 93<S?SV>GjBm3ao"UG {4 V\[_chtfY, inL ^ qKĤ,jRj5LIg.sZR]1*96OoQMiM(]u3FP9 !/aOy]Qܹ%%vDM)D31u퐜5(5KP1#1yvnzDOLqt^͉J6 T9R,~T [LȹIFQj8:ϩȐ}<Ut= ?DC;9M.퟾;`8N J"೴;Qo=j| ҫܝ'䗓^GղU^Xosb :$P \YhM{`g}\s?P.} wHz՛$|`O\SBm.P7''v&GH_?y9@MfTBvTq5"jݸx:EI]o5N$#ͯ}Q|؜z7 vF~[.DiAKMޤ#tVUEK" h^G*7kTy |$|- A["GaTLKїFQc)П#7~)Ӣ()H1nX_˰ xczx)rlQ%r%6}g1r2N\&2_a^"V9me_Qv?+K VՌ]iE}yDNK))<5Zv+B3/] -J7@8VmAqع(8x~iGd"pUVh q3IS ZtWyisy7NNGx@}W> T|(e#tg@L:PNL"5e 9|bg`SDDئUR F()loq-Ҍ&1MSTXlǦe$8wLU G:6ݫ|rz&%lsN?jCZ,o!$LN`+KQ[#> ˎ uC927CxV+*܆[UX*\JA 77! !L0'чg&V}PoUǴ| ؏Vzŗ/Ɣ*bTaCyqC`9-GG +YpAáS0?.v W9 ՄBPMua 젮4 ~vj(OHDxk946hvp_Mbԏw,gZߍڍvˉaop47voX1贴e: ^yeSJɑuR#8A0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark libwmf-0.2.8.4/fonts/s050000l.afm0000644000077100007710000002272607260330362015416 0ustar fjffjf00000000000000StartFontMetrics 3.0 Comment Copyright URW Software, Copyright 1997 by URW Comment Creation Date: 10/21/1999 Comment See the file COPYING (GNU General Public License) for license conditions. FontName StandardSymL FullName Standard Symbols L FamilyName Standard Symbols L Weight Regular ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -229 UnderlineThickness 46 Version 001.005 Notice URW Software, Copyright 1997 by URW EncodingScheme FontSpecific FontBBox -180 -293 1090 1010 CapHeight 673 XHeight 500 Descender -222 Ascender 673 StartCharMetrics 190 C 32 ; WX 250 ; N space ; B 0 0 0 0 ; C 33 ; WX 333 ; N exclam ; B 128 -13 240 686 ; C 34 ; WX 713 ; N universal ; B 31 0 681 673 ; C 35 ; WX 500 ; N numbersign ; B 20 0 481 631 ; C 36 ; WX 549 ; N existential ; B 25 0 478 673 ; C 37 ; WX 833 ; N percent ; B 63 -7 771 673 ; C 38 ; WX 778 ; N ampersand ; B 41 -13 750 675 ; C 39 ; WX 439 ; N suchthat ; B 48 -13 414 503 ; C 40 ; WX 333 ; N parenleft ; B 53 -172 300 680 ; C 41 ; WX 333 ; N parenright ; B 30 -172 277 680 ; C 42 ; WX 500 ; N asteriskmath ; B 65 127 427 546 ; C 43 ; WX 549 ; N plus ; B 10 0 539 533 ; C 44 ; WX 250 ; N comma ; B 56 -120 194 102 ; C 45 ; WX 549 ; N minus ; B 11 239 535 294 ; C 46 ; WX 250 ; N period ; B 69 -13 181 100 ; C 47 ; WX 278 ; N slash ; B 0 0 254 673 ; C 48 ; WX 500 ; N zero ; B 23 -13 471 686 ; C 49 ; WX 500 ; N one ; B 117 0 390 673 ; C 50 ; WX 500 ; N two ; B 25 0 475 686 ; C 51 ; WX 500 ; N three ; B 39 -13 435 686 ; C 52 ; WX 500 ; N four ; B 16 0 469 680 ; C 53 ; WX 500 ; N five ; B 29 -13 443 699 ; C 54 ; WX 500 ; N six ; B 36 -13 468 685 ; C 55 ; WX 500 ; N seven ; B 24 -7 448 673 ; C 56 ; WX 500 ; N eight ; B 54 -13 440 686 ; C 57 ; WX 500 ; N nine ; B 31 -13 460 686 ; C 58 ; WX 278 ; N colon ; B 81 -13 193 463 ; C 59 ; WX 278 ; N semicolon ; B 83 -120 221 463 ; C 60 ; WX 549 ; N less ; B 26 0 523 522 ; C 61 ; WX 549 ; N equal ; B 11 142 537 391 ; C 62 ; WX 549 ; N greater ; B 26 0 523 522 ; C 63 ; WX 444 ; N question ; B 70 -13 412 686 ; C 64 ; WX 549 ; N congruent ; B 11 0 537 475 ; C 65 ; WX 722 ; N Alpha ; B 4 0 684 673 ; C 66 ; WX 667 ; N Beta ; B 29 0 592 673 ; C 67 ; WX 722 ; N Chi ; B -9 0 704 673 ; C 68 ; WX 612 ; N Delta ; B 6 0 608 688 ; C 69 ; WX 611 ; N Epsilon ; B 32 0 617 673 ; C 70 ; WX 763 ; N Phi ; B 26 0 741 673 ; C 71 ; WX 603 ; N Gamma ; B 24 0 609 673 ; C 72 ; WX 722 ; N Eta ; B 39 0 729 673 ; C 73 ; WX 333 ; N Iota ; B 32 0 316 673 ; C 74 ; WX 631 ; N theta1 ; B 18 -13 623 686 ; C 75 ; WX 722 ; N Kappa ; B 35 0 722 673 ; C 76 ; WX 686 ; N Lambda ; B 6 0 680 688 ; C 77 ; WX 889 ; N Mu ; B 28 0 887 673 ; C 78 ; WX 722 ; N Nu ; B 29 0 720 673 ; C 79 ; WX 722 ; N Omicron ; B 41 -13 715 686 ; C 80 ; WX 768 ; N Pi ; B 25 0 745 673 ; C 81 ; WX 741 ; N Theta ; B 41 -13 715 686 ; C 82 ; WX 556 ; N Rho ; B 28 0 563 673 ; C 83 ; WX 592 ; N Sigma ; B 5 0 589 673 ; C 84 ; WX 611 ; N Tau ; B 33 0 607 673 ; C 85 ; WX 690 ; N Upsilon ; B -8 0 694 673 ; C 86 ; WX 439 ; N sigma1 ; B 40 -222 436 513 ; C 87 ; WX 768 ; N Omega ; B 34 0 736 686 ; C 88 ; WX 645 ; N Xi ; B 40 0 599 673 ; C 89 ; WX 795 ; N Psi ; B 15 0 781 686 ; C 90 ; WX 611 ; N Zeta ; B 44 0 636 673 ; C 91 ; WX 333 ; N bracketleft ; B 86 -165 299 673 ; C 92 ; WX 863 ; N therefore ; B 163 -13 701 433 ; C 93 ; WX 333 ; N bracketright ; B 33 -165 246 673 ; C 94 ; WX 658 ; N perpendicular ; B 15 0 652 673 ; C 95 ; WX 500 ; N underscore ; B -2 -252 502 -206 ; C 96 ; WX 500 ; N radicalex ; B 480 857 1090 913 ; C 97 ; WX 631 ; N alpha ; B 41 -13 622 513 ; C 98 ; WX 549 ; N beta ; B 61 -222 515 740 ; C 99 ; WX 549 ; N chi ; B 12 -210 522 513 ; C 100 ; WX 494 ; N delta ; B 40 -13 481 740 ; C 101 ; WX 439 ; N epsilon ; B 22 -13 427 513 ; C 102 ; WX 521 ; N phi ; B 27 -222 490 686 ; C 103 ; WX 411 ; N gamma ; B 5 -219 484 513 ; C 104 ; WX 603 ; N eta ; B 0 -222 527 513 ; C 105 ; WX 329 ; N iota ; B 0 -13 301 513 ; C 106 ; WX 603 ; N phi1 ; B 36 -222 587 513 ; C 107 ; WX 549 ; N kappa ; B 33 0 558 513 ; C 108 ; WX 549 ; N lambda ; B 24 -13 548 740 ; C 109 ; WX 576 ; N mu ; B 33 -219 567 500 ; C 110 ; WX 521 ; N nu ; B -9 -13 475 513 ; C 111 ; WX 549 ; N omicron ; B 35 -13 501 513 ; C 112 ; WX 549 ; N pi ; B 10 -13 530 500 ; C 113 ; WX 521 ; N theta ; B 43 -13 485 686 ; C 114 ; WX 549 ; N rho ; B 50 -220 490 513 ; C 115 ; WX 603 ; N sigma ; B 30 -13 588 500 ; C 116 ; WX 439 ; N tau ; B 10 -13 418 500 ; C 117 ; WX 576 ; N upsilon ; B 7 -13 535 513 ; C 118 ; WX 713 ; N omega1 ; B 12 -13 671 583 ; C 119 ; WX 686 ; N omega ; B 42 -13 684 513 ; C 120 ; WX 493 ; N xi ; B 27 -222 469 766 ; C 121 ; WX 686 ; N psi ; B 12 -222 701 513 ; C 122 ; WX 494 ; N zeta ; B 60 -222 467 756 ; C 123 ; WX 480 ; N braceleft ; B 58 -165 397 673 ; C 124 ; WX 200 ; N bar ; B 65 -177 135 673 ; C 125 ; WX 480 ; N braceright ; B 79 -165 418 673 ; C 126 ; WX 549 ; N similar ; B 17 196 529 325 ; C 160 ; WX 762 ; N Euro ; B 53 -4 722 671 ; C 161 ; WX 620 ; N Upsilon1 ; B -2 0 610 687 ; C 162 ; WX 247 ; N minute ; B 27 476 228 735 ; C 163 ; WX 549 ; N lessequal ; B 29 0 526 639 ; C 164 ; WX 167 ; N fraction ; B -180 0 340 673 ; C 165 ; WX 713 ; N infinity ; B 26 115 688 414 ; C 166 ; WX 500 ; N florin ; B 2 -174 494 687 ; C 167 ; WX 753 ; N club ; B 86 -26 660 544 ; C 168 ; WX 753 ; N diamond ; B 142 -36 600 550 ; C 169 ; WX 753 ; N heart ; B 117 -33 631 528 ; C 170 ; WX 753 ; N spade ; B 113 -36 629 591 ; C 171 ; WX 1042 ; N arrowboth ; B 24 -16 1024 512 ; C 172 ; WX 987 ; N arrowleft ; B 32 -15 942 511 ; C 173 ; WX 603 ; N arrowup ; B 45 0 571 910 ; C 174 ; WX 987 ; N arrowright ; B 49 -15 959 511 ; C 175 ; WX 603 ; N arrowdown ; B 45 -22 571 888 ; C 176 ; WX 400 ; N degree ; B 50 380 350 686 ; C 177 ; WX 549 ; N plusminus ; B 10 0 539 662 ; C 178 ; WX 411 ; N second ; B 20 476 413 735 ; C 179 ; WX 549 ; N greaterequal ; B 29 0 526 639 ; C 180 ; WX 549 ; N multiply ; B 17 9 533 525 ; C 181 ; WX 713 ; N proportional ; B 27 114 639 416 ; C 182 ; WX 494 ; N partialdiff ; B 26 -10 462 753 ; C 183 ; WX 460 ; N bullet ; B 50 155 410 518 ; C 184 ; WX 549 ; N divide ; B 10 2 536 525 ; C 185 ; WX 549 ; N notequal ; B 15 -25 540 549 ; C 186 ; WX 549 ; N equivalence ; B 14 87 538 446 ; C 187 ; WX 549 ; N approxequal ; B 14 121 527 408 ; C 188 ; WX 1000 ; N ellipsis ; B 111 -13 889 100 ; C 189 ; WX 603 ; N arrowvertex ; B 280 -120 336 1010 ; C 190 ; WX 1000 ; N arrowhorizex ; B -60 220 1050 276 ; C 191 ; WX 658 ; N carriagereturn ; B 15 -16 602 629 ; C 192 ; WX 823 ; N aleph ; B 175 0 662 689 ; C 193 ; WX 686 ; N Ifraktur ; B 10 -54 578 736 ; C 194 ; WX 795 ; N Rfraktur ; B 26 -16 759 730 ; C 195 ; WX 987 ; N weierstrass ; B 159 -211 870 574 ; C 196 ; WX 768 ; N circlemultiply ; B 43 0 733 691 ; C 197 ; WX 768 ; N circleplus ; B 43 0 733 689 ; C 198 ; WX 823 ; N emptyset ; B 39 -24 781 718 ; C 199 ; WX 768 ; N intersection ; B 40 0 732 507 ; C 200 ; WX 768 ; N union ; B 40 -18 732 489 ; C 201 ; WX 713 ; N propersuperset ; B 20 0 673 470 ; C 202 ; WX 713 ; N reflexsuperset ; B 20 -125 673 470 ; C 203 ; WX 713 ; N notsubset ; B 36 -70 690 540 ; C 204 ; WX 713 ; N propersubset ; B 37 0 690 470 ; C 205 ; WX 713 ; N reflexsubset ; B 37 -125 690 470 ; C 206 ; WX 713 ; N element ; B 45 0 505 470 ; C 207 ; WX 713 ; N notelement ; B 45 -58 505 555 ; C 208 ; WX 768 ; N angle ; B 26 -1 738 672 ; C 209 ; WX 713 ; N gradient ; B 36 0 681 687 ; C 210 ; WX 790 ; N registerserif ; B 50 -13 740 690 ; C 211 ; WX 790 ; N copyrightserif ; B 51 -13 741 690 ; C 212 ; WX 890 ; N trademarkserif ; B 18 269 855 673 ; C 213 ; WX 823 ; N product ; B 25 -124 803 751 ; C 214 ; WX 549 ; N radical ; B 10 -35 515 913 ; C 215 ; WX 250 ; N dotmath ; B 69 209 169 311 ; C 216 ; WX 713 ; N logicalnot ; B 15 40 680 367 ; C 217 ; WX 603 ; N logicaland ; B 23 -1 583 476 ; C 218 ; WX 603 ; N logicalor ; B 30 -1 578 476 ; C 219 ; WX 1042 ; N arrowdblboth ; B 27 -19 1023 506 ; C 220 ; WX 987 ; N arrowdblleft ; B 30 -19 939 506 ; C 221 ; WX 603 ; N arrowdblup ; B 39 0 567 909 ; C 222 ; WX 987 ; N arrowdblright ; B 45 -19 954 506 ; C 223 ; WX 603 ; N arrowdbldown ; B 44 0 572 909 ; C 224 ; WX 494 ; N lozenge ; B 18 -1 466 740 ; C 225 ; WX 329 ; N angleleft ; B 25 -152 306 757 ; C 226 ; WX 790 ; N registersans ; B 50 -12 740 679 ; C 227 ; WX 790 ; N copyrightsans ; B 49 -12 739 679 ; C 228 ; WX 786 ; N trademarksans ; B 5 277 725 673 ; C 229 ; WX 713 ; N summation ; B 14 -123 695 752 ; C 230 ; WX 384 ; N parenlefttp ; B 40 -293 436 926 ; C 231 ; WX 384 ; N parenleftex ; B 40 -79 92 925 ; C 232 ; WX 384 ; N parenleftbt ; B 40 -293 436 926 ; C 233 ; WX 384 ; N bracketlefttp ; B 0 -80 341 926 ; C 234 ; WX 384 ; N bracketleftex ; B 0 -85 55 925 ; C 235 ; WX 384 ; N bracketleftbt ; B 0 -80 340 926 ; C 236 ; WX 494 ; N bracelefttp ; B 201 -75 439 926 ; C 237 ; WX 494 ; N braceleftmid ; B 14 -85 255 935 ; C 238 ; WX 494 ; N braceleftbt ; B 201 -70 439 926 ; C 239 ; WX 494 ; N braceex ; B 201 -79 255 925 ; C 241 ; WX 329 ; N angleright ; B 21 -152 302 757 ; C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ; C 243 ; WX 686 ; N integraltp ; B 332 -83 715 922 ; C 244 ; WX 686 ; N integralex ; B 332 -88 415 975 ; C 245 ; WX 686 ; N integralbt ; B 39 -81 415 921 ; C 246 ; WX 384 ; N parenrighttp ; B 54 -293 450 926 ; C 247 ; WX 384 ; N parenrightex ; B 398 -70 450 935 ; C 248 ; WX 384 ; N parenrightbt ; B 54 -293 450 926 ; C 249 ; WX 384 ; N bracketrighttp ; B 22 -80 360 926 ; C 250 ; WX 384 ; N bracketrightex ; B 305 -85 360 925 ; C 251 ; WX 384 ; N bracketrightbt ; B 20 -80 360 926 ; C 252 ; WX 494 ; N bracerighttp ; B 17 -75 255 926 ; C 253 ; WX 494 ; N bracerightmid ; B 201 -85 442 935 ; C 254 ; WX 494 ; N bracerightbt ; B 17 -70 255 926 ; C -1 ; WX 250 ; N .notdef ; B 0 0 0 0 ; EndCharMetrics EndFontMetrics libwmf-0.2.8.4/fonts/s050000l.pfb0000644000077100007710000010165507260330362015421 0ustar fjffjf00000000000000%!PS-AdobeFont-1.0: StandardSymL 001.005 %%CreationDate: Thu Oct 21 1999 % Copyright URW Software, Copyright 1997 by URW % URW Software, Copyright 1997 by URW % See the file COPYING (GNU General Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (001.005) readonly def /Notice (URW Software, Copyright 1997 by URW. See the file COPYING (GNU General Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright URW Software, Copyright 1997 by URW) readonly def /FullName (Standard Symbols L) readonly def /FamilyName (Standard Symbols L) readonly def /Weight (Regular) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -229 def /UnderlineThickness 46 def end readonly def /FontName /StandardSymL def /PaintType 0 def /WMode 0 def /FontBBox {-180 -293 1090 1010} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 32 /space put dup 33 /exclam put dup 34 /universal put dup 35 /numbersign put dup 36 /existential put dup 37 /percent put dup 38 /ampersand put dup 39 /suchthat put dup 40 /parenleft put dup 41 /parenright put dup 42 /asteriskmath put dup 43 /plus put dup 44 /comma put dup 45 /minus put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /congruent put dup 65 /Alpha put dup 66 /Beta put dup 67 /Chi put dup 68 /Delta put dup 69 /Epsilon put dup 70 /Phi put dup 71 /Gamma put dup 72 /Eta put dup 73 /Iota put dup 74 /theta1 put dup 75 /Kappa put dup 76 /Lambda put dup 77 /Mu put dup 78 /Nu put dup 79 /Omicron put dup 80 /Pi put dup 81 /Theta put dup 82 /Rho put dup 83 /Sigma put dup 84 /Tau put dup 85 /Upsilon put dup 86 /sigma1 put dup 87 /Omega put dup 88 /Xi put dup 89 /Psi put dup 90 /Zeta put dup 91 /bracketleft put dup 92 /therefore put dup 93 /bracketright put dup 94 /perpendicular put dup 95 /underscore put dup 96 /radicalex put dup 97 /alpha put dup 98 /beta put dup 99 /chi put dup 100 /delta put dup 101 /epsilon put dup 102 /phi put dup 103 /gamma put dup 104 /eta put dup 105 /iota put dup 106 /phi1 put dup 107 /kappa put dup 108 /lambda put dup 109 /mu put dup 110 /nu put dup 111 /omicron put dup 112 /pi put dup 113 /theta put dup 114 /rho put dup 115 /sigma put dup 116 /tau put dup 117 /upsilon put dup 118 /omega1 put dup 119 /omega put dup 120 /xi put dup 121 /psi put dup 122 /zeta put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /similar put dup 161 /Upsilon1 put dup 160 /Euro put dup 162 /minute put dup 163 /lessequal put dup 164 /fraction put dup 165 /infinity put dup 166 /florin put dup 167 /club put dup 168 /diamond put dup 169 /heart put dup 170 /spade put dup 171 /arrowboth put dup 172 /arrowleft put dup 173 /arrowup put dup 174 /arrowright put dup 175 /arrowdown put dup 176 /degree put dup 177 /plusminus put dup 178 /second put dup 179 /greaterequal put dup 180 /multiply put dup 181 /proportional put dup 182 /partialdiff put dup 183 /bullet put dup 184 /divide put dup 185 /notequal put dup 186 /equivalence put dup 187 /approxequal put dup 188 /ellipsis put dup 189 /arrowvertex put dup 190 /arrowhorizex put dup 191 /carriagereturn put dup 192 /aleph put dup 193 /Ifraktur put dup 194 /Rfraktur put dup 195 /weierstrass put dup 196 /circlemultiply put dup 197 /circleplus put dup 198 /emptyset put dup 199 /intersection put dup 200 /union put dup 201 /propersuperset put dup 202 /reflexsuperset put dup 203 /notsubset put dup 204 /propersubset put dup 205 /reflexsubset put dup 206 /element put dup 207 /notelement put dup 208 /angle put dup 209 /gradient put dup 210 /registerserif put dup 211 /copyrightserif put dup 212 /trademarkserif put dup 213 /product put dup 214 /radical put dup 215 /dotmath put dup 216 /logicalnot put dup 217 /logicaland put dup 218 /logicalor put dup 219 /arrowdblboth put dup 220 /arrowdblleft put dup 221 /arrowdblup put dup 222 /arrowdblright put dup 223 /arrowdbldown put dup 224 /lozenge put dup 225 /angleleft put dup 226 /registersans put dup 227 /copyrightsans put dup 228 /trademarksans put dup 229 /summation put dup 230 /parenlefttp put dup 231 /parenleftex put dup 232 /parenleftbt put dup 233 /bracketlefttp put dup 234 /bracketleftex put dup 235 /bracketleftbt put dup 236 /bracelefttp put dup 237 /braceleftmid put dup 238 /braceleftbt put dup 239 /braceex put dup 241 /angleright put dup 242 /integral put dup 243 /integraltp put dup 244 /integralex put dup 245 /integralbt put dup 246 /parenrighttp put dup 247 /parenrightex put dup 248 /parenrightbt put dup 249 /bracketrighttp put dup 250 /bracketrightex put dup 251 /bracketrightbt put dup 252 /bracerighttp put dup 253 /bracerightmid put dup 254 /bracerightbt put readonly def /UniqueID 5021339 def currentdict end currentfile eexec k `,i"[[5j5mTʻ^+݄fKitrޟm%9۩*++`[&NfA-O!J"|UY+; <Ԟ2?.P2QhnDtw=y0)n*[ Y]~ ΁RzYi[AXmv$zq }V]- l8 QЇ ʜ5R+ rMMdjM x0}"UC¡u#vL"BX=#ejˆ_5.T=1ݜ(pIŊ@sabY ZD򺽖7FMf>A/ <r:Z/$3Qdt:J8Awv#4Hw<.bLw[hrD,HImT˅}.Wȏ@(Cs/i/ kq3vajir2@}^|)Xb( Y*Q0b(vT%p/7p= 1k6yŅW&:e/oj-d}8'TZ!uN@:)b ?TN^\w$txƖF,טj\5iu׺Fhowrw>g/jǫVQws.{*7'rAX?Д\Do|Ã#蕸tds܏{iud@[0UfuiÚQ4#r֝/[)%UZ ݤXu, 6pVl)! "dCAūQ ESvi $ o\tݭ^@GEv&_ྞwcf#YߘvsgᶆKFq%k@8Í'm#H*/.JI3,` tbeEZ\`ȧɖ%B ;?Y!g-ot;n U@m Yu/蕸:*DZ^ǐ$ĩ!2`L5VR/S6u-LK^D!q) 尲+X9aImؤvu]UW"JKI΢wXHiRT!%BVYK3C?\`'JTF_VmOK^AY~_M bI+xpe=Kʽ8 "nP:8M\C@Yp] |%wP3ңg)CȒG5 58Etr}. @" ` pQ{Nj9atrX"1(:<6 M>ׅvŞu[ơ(I: (Qŕ>ꏵtlΊi(cw*]Vs;I)g3xCD R=;? u 7won?հb/8t02PxVHNH%q*|AFBW@IܢWFvy^2w=L &XV1?AfY0 0Nr/ɜ;m\ ߻s+%巳[grg*k1:ThFK}Z@ wy/i4Cyf66^#}q *߁jF)4H2ۙznt} L0x{ےEV#O,WBǷ0<TѲ5I1غIgG)W/fтAf frIyV6oA`>ԖvoQ~h 7OTU wiI}e9R`V nh= UnK.abȖ>eRc >FG@*k۾ip|txf쳁errr*"%LEC}8#iڪ=q+<VnLb0Uf90FylS?nyI.= xyCc$~'0vxȯկxu%N4]l+l97n q9-4NP.O-GAr Sy5u1Kݪ@вH> ib 4Zsy%{; v$;kбD/֖ Y)#:ibKli9;>9 /꫁ɳ13 x"I3.`F{ ߫ E%2P:̑M/!N%x{Gy7!敌mshSj\MM\ -;c,iEޜwǼ#oj3p┧h\!c 1FVKƻ#iݔV 3p쾨;WeB 5HR{jRr-{͐3It|ubPPEoe@sYonUcs(K 6U'Nbuo&eKSYvm_"Ivy~K+ :75D5hƷK q&a R4+ ^X S~Kxe%3VM~Zؑ yܣb7*<~t793կEZ{ ʒ{3؂/ybuqv)KɀQ~g· =#VJ[p/i( %c ״>YCME^[_~ypZS$1S &}cCK^C {kgӓwt/v#ΚȘ,Q t IL(7HsٜFYż%E߇lX9r9!NpQ·?U|q80h.:nQdrZS [> "و,Q:RuV`0fs:ߕ"^4UDsj^c8 휊' >g%g=q;( YXTd/$Ȭ(ݫKٯ,nHeC#L!œioGp m|.uY|]Q.k_ o yhWb&!R-oOüu/joG,ѓN@l wޓq2ӬL}H\O*w̐6s $hXr :b6Ak4eVcJ'S%C#OG<dWST@0xv*Kt&-w)i=@2_[.sPkCZLhhx^ H>YVg`m)nz&= r׼F3\\ )e% 3s&@Z6,5-ﯰg)U Q5N , 5n zS09iѣ / u$5q˜Ɗ nv1"D%O GA2T-E2giD&aXG2ng/|V U\f$y,OmZigt? wcn4U9=m:Gm)¦b4f8խ# 17^῵@SlfWP T%s++Rk}^a Ќ/?zS_ ~G+"EcQ#U-Ⱦ0ȧn[Z1qê t Ƨ64 NYh &O#p6RD{= E= =`66S&d.x~>55QEqf\ )d[v}Vف[z 7J? }ѡY?MH"@ L$9WTDŽť=8 [KāVu<$DZ* D0y8-Mye"lT0&#leaʹ%ryC/tO{m'2{g re j ӭD:3܂Lע1k& 6/D:] F'h]\7(Abz0Ysu\"i M# $1𬘅twZ$Y@SzbD;;enzaUmQ ϼky;Gp}Nx+7{[},} hA8N>om赂8sao`4hH :v?!uU UJ1h?8g{lo97 ft1..* N nJ~f n_׏dAP߸$j37l?!j$pО*paɐNZJ8Xd.q̕<~k6H,0T%8/dBjl Ao3JE{&,[U@^Njp6#) u>X_|F\z_ I21%^JU~~9g\ac[+D6F+{ J^9it+9۬4fp !ΗmBSDI*٦i25c\ e4?lIi-RKq_Rۀh U "cӊ̉kͲESG8BEbPhϱ7/5R}b˳LR5V]vVo.QȾ޳uI}GAl)>(yq]IbC3)H֦u+ġB ѺB¬|ݫAc#ofj3BS`.F%jO9 HcJ>ga -(ФXtRˏ:OsEWaP!>CF3},tx_(txg棵a?XS"$XJȪvg&_@>u cI\"bSgѬ]\%_05=N8 JN33yO ]Q~ (5-jtIqQ:\p}i  N@h'22T,.-<ŦBoާ[=9u6Es(H vte^z[ =_pâQ7jl9 wXҤlyu4#_: 3PXv CQfRҜ/˱ \rVӭM?{f3a! E+aE. Ջ((R8FA_%a_g>-#K4 1'+H_vAu&1S8ٗ: g"7\fp\`˗ tF!f)-T炢kq(f뼺ER*;9d>w7  III7/u ׈+nlfQ"" l%D< e1jfHcj`yGzTOIʨB)s[Ggð(Sʖ@*qQJh-ᷘdG| sX/ 0 Ki$i&sz)ED ڮ®;wl4`Lbzf-ċYŐIYھixL9sA B]jM !)Ji\1{yY#n>dhhA. }Rj.̼۝ 4>1FL+ E,v,LP&>ŪFdW  2R|,2dHJrH~Ԏ) `wh_sP<+LP]KQ؂0$/71K{a9Cqw:Q} 8ӪU2>_.[_ J2!vk ˑ%H@J'ph,MW-FOb^}QT$%蝣96_1=e>އ,!pqsX=5Ԗ+ݡ9u誈Mfᯜp}&zHZ{UƧM>-CXe{zvr}9a$na}z xncwuд"լx2YW_6ߨM0?x592;OxpR{--&3V;72[gڙbb&ʹԀvEXBק^_QR(jA6;T0'5Ж7`3aUtf<n%});L%" ߁pቱ)S/ᛃCCRrϨ>t-H3-S"lxX߂Vq{'@i bFw IЦ6?s"jћL#߁dm_00J4J6m@Mf9yo%iNJ-;\Qs~us4~z7 ʥVZj|bSBi'ENZZWɼ ގs`dB,Ꝃ)a<j '|5$L sԷ->}}Ǣ[|h1 ZH7,=ŵv=l%ȵq)6j_}I2 ;ݤW!xxFp-r6$l v8W>yHn~=D}bSoTDxE3Q#RWT봺<4i 2dqY3̥[be9y_ Q.߬ǚA)VSWZ;fukYba&z$] C,#mgwܘ@ u\t,f5@.(K[PTU4aEoSS,Ɠ5zdO/7=\v?^lHrw'P9]iJU47LG ӱTPOzG`eEw.*{V#a򷧠<<` 6mszJx3Hl;iZ #5EO9hU ㅃ\LQ"PI1"0&Uc~gKn,Ih^Lj$@we{"|v|q3pG,%BHJ5$ xLy-c }+5??\\B6|! iKGGœ(a.OأP;g_b{*.y])Ju 8ZBRe|6W+@^(Zt}y"n:NbIfO{Rc mh+KzMd,Mf-xbU.eL-彯eC #õӊ9UHKE_2 }E=)%32Xo&Tja;J1'nR"[78ExNAwT.(EhQ ֎"y0`%wZd $/nJ^@J#>mA=Gߛ_'|Uf~prb_}ef'Q?8 ]aa}zݡ56Z"?=ދr#+32'S(@]6np(x,|VJ'kmCE8,>a85vdc[[;67#r3 o2H)Kky8<#e 15 ui$<~aoٸ%t@z&qW <%X Mň|jlk=2ڳsSL&5ʔ@ea$KථzI`.]TRe6&j~['EҾ,Nh̅8bCӏ` e]Z+sī_?)\K>$jg_wIHb]^ޟ,JKBImvk u"ψH8,9˳9>G.m.1˞b޿׿Xtڙ8뱁+knP']sxzq)PqH$y߀߆kW39$<j6Ӛ@C!)qI8ߴGBA&gDvp9v}0Ҙ-ײ_l|3[*5p1μ~ $OAq!^ JV73NBͣS6pY)Vn1 }ƵdcJqʟҮw**۷}=MYe=+pp>;ppcǜ\d8g%Iᆇ2Ne.xW0.*9q$ ^}D_ސvޒEnUZ<e5ן,uNnG/ϙ79 Y }xۄb`eB!'BXhrěSM)?MphqUtҦ}>P,@Q꫾W**꙾ E >@Zw,IĬ[qs.G!/W"'3/pr8W ʃz@'a(7nqlJF3v7*Nʊ-c Dc S/T[5SVxy#rx-+Mx#]ܳcQkS)S ru Ǚc.Qt/+8yADvٳلY#7ENy"~Ff>

@@'[f9n;TWYy 5,A^a +*bsJ k:|AP-Rڏ떢4V_,&4P)]=)*utb[Lݔ= RHa euYOY- ".;[S*r/%LI/tMX }@+@g:E8nR#OL7\{Fߣ!xU\E=b,B g3HEޑȡYRb*7ѻHܤ oV舘Ha՜ZK„5C~P>5c@iGf;҇sl9pH9pȊ|u䜑3Dd >5v*I ?ȆҙU=3I忽=bGͪLGMbFh)\iRaB|UVmA;:}SӉtQkGI-v bp#8p%o_bm<#]'eSd1Gobs>t#$jWw~, ~Ώ{ײYB ߸㿤9pH9Z/FZ9po}n dPoVtz!>>~{RC~X&ah\27"PTNjݬQVI!C6>d)Qm&,ynkP`Dցl;zMӻz ~KHcj\aO,~) LqL2P>5_FFൗ 8;ްENY?^}ŋ( O4G_Ilu2$m P-cR`Dbz pk1u^k fL)R$tCHJ2h#ve7!^AKH$9ssHg5s&=|-"6R5_xIb0o~BcO~I)#p+EfHͭd-$=ݒrȼlLGj}5>ǂ ;P[ /ymZ #֙PΐA$m)I>V0B9plrsP$I(qa';Sּ^'M/S ЉIի JS;r\؀40<}2?$2Gԯk8H2?fW lr&tl^R-Ao<[u]ڸ$wp{*^U9hY"Kbd |Ӈ+x+1_JycrO^%yj\+}WCy@pE6P#eqKQf2B;.rDUp}5WL[fڭ E`Y1y&08a#TAܠRZ6[!DMƸ//aS1<1#IؖQbzH'%P 8A"ZhůlKNt:X:'XuDzHYfQhaT*01vf&Jb1{2W FhܾWA% < M#ܯfptH{pBWZ[ Pe#UlDžƁ鹷rfKшILQb|i 6  VErx d23z >_7 ԅHutxWY΁=!5L#p]؜ŵgv]Cy \rb%SUUT bun|$TbXJB՚֋%fY߻˥iۮQ']Y 3!Щ_P7)nTjZ{`ҧ{$)8o2l+C8ꤣ"2^zrSJ|atF"&k8ǣqsޖPH˞E4JIÎP#n#fz cv]Vxn)Qq#,S?1p'|0MJӬx0C\'uLE^=JoOC_8 CK7ae$OZdW@TT^4VOY43h3lX_\oebu C㿛Nr\ ̂B|4,=axm>::I垳VƎ2q -dz9ˣV8mˌdcT'sR){E2x–~91WQ54FNJ1΃%@qޡ ؟?Po&%VOo Xdv=>{ekTd?{;Mj+qt1P).=toURuNk? ?z@Y3s,_o`=Mcr\=|VCvXy5s"Pc O6;^BYkzqnY޵($QjKE1jSC?fhGXЏKUҴ= H4+{/\wԕ"ʉ窷M( ߜG 9ZcFe96۾q4qpM?-蟁p m!kQ14kc,>ơ0=e3 =P(ݦU=X10;~՟"rr!;;֢|;D{D,LhR_k\,i1!h/.G Vw`7"ڄIcYxa+<%5Kdy|ƨ|.]hdBvpjS'oo KWOIj .WB@تV}j> jFՅ>ԥ:3;cNe FaZUfjuVp:'phAGp1o)OJa]/qWչL#w2o H- 9ђ dq&E߹UZ{ |TU>l,dnxaR W]x Yݖryʴ\}K[>iiӠy:R4?tUö́bYU8jS.cGV>j5[7-*v>ygBp$ͅګV=:t- wU#Y,3n۪>aML|6+& Wr9bxi( /~-ܑYlJoAoHCr! Ks\ғ~DTSJ5>)/Siooc}:([rE {a[Rz0a\W%pfu@L0'9ZȵDO1eh( JχR\ίѢ8ZMJZX0pMa7OV>a#WMl4RX:7h#%p_^Z3&(VYzqš|,*AqX:JqxuԞ*n61hijw_1J r P?Lqz(zDr]ח8 Z^ޟ&C}KutE|y<([Ͽ|c"['!_R->B?V$J`#^nc(&1_Oǝ>דuexGY空.ҹrVH? Jo.r[ALHg8fP* +  5nx$$!9|bT;qJB zҶn] +FN1CmneaK澶 Cd3]fWd]UB-Hpª;d9 n0%_.DnP-x\==rڢXEn(8AQe%/Y/ygt~I^gS 2dEGycؑbTtO֓iZ=Ug{;譪bg_oe_[5s!tHȁRbuX@n?8|GᴄY #^܂6F&ppK3@4 p.spoGIaN$ }^o*QA%FVڍ6N1 okޟm9{#4AFN,3[ ؑ ܡcrl2-I='9ZQ[0ɥ@uR7x3~͙*/q*[dn+Y=4N_g!; TrLAw.a?V齳(Wg `0q<v<,ѕBA+UPXt?!}/RS= Fmܹ-)&m|Ο[vDe$M}MU1(3Hq`)}K7S*[!fN犰p.0aͷ\RK/U4faxFRJ≁R^j#.os*`%|]PkZ(0+V5:kJ 렏d ]$,} iG%>Lj bFake;=<],s-w_}/jz⨖ $(B~aduffۉ A}[+H-97/Jܒ'*5b,%9ٳDM6ȷ}W6\-Hx,!: 2KPD♷h|!'օ;7hq$y(@v4-i_D"AȗP2sRU~u7}ZW2@;#O?V#zmN~'IomÕZ!C >{AAWFߧoUbj0]/F B̭'{[E[;> ;iɓ[ /Ѵ¨B6]+ogҶP kod/ۅ m~_8Oz25tt|7>ۯEQ>e4XRl5.aο dʌ9µ ̠e'SCN[x!08:~E䝡Sg+D3:09O-rF3K)xeNBO4s`C,>WFn" gK{oVXK:Ke ژJ $7;)-޼5m苅2"0˂A~`,: @reSSM+T9TnN`pDi O;BOhXqPjg0ʤ@b/7oMpq2[湇03*m֍NBSUVBȉ2*$n7[4Ip^CEziHDи:9kդ,p$h=w]Jg6nǷai>ld ;d!hO[nө=)leL(j'f^%VMqϝQJ `wW嬓T9 _fayZ!. l,$2[$dLL =ܲ;}vԫ$9 ^;$ \Em%4$~N`.}T>b؇TV~lI}:fTJ<߲r"IbrNo{_ļE$ z+5\?aYrDyP~gh۞k>$.j _SԑQO_ӣf!_UFfs{: #ծoxpY4񪭛jQQ;sIORLC6ڪvhj ͜/n|]Һuܡ%d[tq v)'דJCLغz4O+K'UFchx 2s-YxBfڣHqfx]1 }>34yo M^q^2c~u#{ d?i TbpEc~P{[l8*.#x6|続) aTWKB@" ÀoivtsDP[%ç] WI2MJ2^f+jpo+a1=V?CxDPlN x ESI*,\Lj ,I*ĨitK$!^83LAx2 _t3՗ G7dmK_ŠF'n[F3ܞi> gP v>P6 12wOdIK;0 &65~fbrC&jdnY8Y$ykW%SV+9ރ˶M#Z+vgoQq&(18'L OP@EhSpj?anIwcŐ$zWQ_ux et] 5 tWAA2Z +g]F?w'Sx|f-$?F鋴RoW w 4k ^ԯmlc$nI7k +KYxۚEɝAiό0-=Oi_4EkrL>2' n9˂ۇԡ@ j`<-uQCi),ƶ-Rn"l6*0(8QY7T^ʸ)<98DN5Oҫ >1gG,_gUkKA<ȸ_ʙA*fvMt@1Y1U4.Zo5QO?CO85p3MD\:[%}m7u)FPTɤ2AruV`aT]YM y9)3ݱAra[ ~2O8|VdDI)2?О9{j nogs8㾟ȬɁ A/sX$6C| )h.}*mWmݾJd!AZd`zHp" hA3]_HLk݆>>dnHt(Ζ"4*-6w_ХYB3A/~rSG$eTGI]̚u˹OɾY|B_5`ۇQỤݸpve @al37~o;{qq`ls6&F  _NdK*,l*Q'c eO-B|@ 'fl`ۓ vu̼Qꍡ,d+od چx0O. yIe1?@+Lc3ij8/>[vAk6E_+v"q'"T1h;ʻqإyt?H;j>Ps ?\i.zt0{mH'Ü-!\O# k ֘.}*p6&\8]SLK_}r(FЪ1C"iy*:k*PmVIUqmO4@F7%x4?^sKΙl2KBc^*>ǵ8aڵYvB }d"bj?4HDMMU2wx*^Y6?[j$ŰɈMHLO0avO?zңzL.O"aU<! m9N/J,rvɾiʑH#ʢ q!2QGSz&(?[ˮaƨH='E JWv?[NN%ǸgvX;hPnF;evNr'8׀LM/TU)0o_t95uLU5 c $ڕw٫0Vq23Xиr{|~W60lJ~RbnՁ E߀\XBsJp9-bI/]b?_8]N:I CUy8abW@ het{8j!X ?ئRWl ڛ٭0z5$z "#]|5N o V=ycp騂5 s;ZP|54ᧃ,)ڎ:"ߙѫ  F }Q ruRdjRy*'#yd Y,L.K!ƨFcuhXLߞ kuDIseP{5UUfG96Ʒ#0JEQ)uf+蚑]J;%ql\8ZК;)`+p*, cLP< 3G59!x$: ]?ǨT롘,eP݆ݷJ'Ǡi-$|g}{Uy#NM%2m]F(,c8A-%(%%9/yinsKdX&##! ջq\3ӨR,-щR_IQ2k~mYC$gteOSиp;[?~ٴF9β$ FjUb<*:ycW#˙a[=YZkØZJ3%[tbToFCTjʘ2Xrڕ"K\|/ɓU!p$,*dOIlaBU Q w)mYOﶯר^ m;(B nr$ )Z2*}%px *{x٥DC 0pۻdUK9Tg~ i ..$R?k$wRݱ:= qa6/N[S!F7k& 4M)d%ٸnvG֙xAQ&[&1֪Kj0bb Sa,}ё˘'A65DFIZ4kԓ78?2͈RYTC@)@5Ev^xbސ=Jv\=e<ڙ>(AgXa#@¦O. Ŷ3Yk;1[\㤆SWV‚qit[EPZ{/,>V)HHs?#@ Tz^tgqϝaD,T_~ {^~4g.:b+AbW> جZaX* )P۸Hd[ مL)5lmAьfvk ,pvEU3Q7yi˟nE)!&%>jͣaׁ^\hT&n,#JbU/=G-;8r#Q Z Z0K- .`z(pκo;w'4¤o),̘[|= 2.4.0. */ #undef HAVE_LIBPLOT /* Define if you have the header file. */ #undef HAVE_UNISTD_H /* define if you have strstr */ #undef HAVE_STRSTR /* define if you have [_]vsnprintf */ #undef HAVE_VSNPRINTF /* Define to `_vsnprintf' if necessary */ #undef vsnprintf /* define if you have [_]snprintf */ #undef HAVE_SNPRINTF /* Define to `_snprintf' if necessary */ #undef snprintf /* define if you have vfscanf */ #undef HAVE_VFSCANF /* Define to `unsigned' if doesn't define. */ #undef size_t /* Define to `long' if does not define. */ #undef off_t @BOTTOM@ /* If any *printf/*scanf functions are missing, cover them with trio functions */ #define TRIO_REPLACE_STDIO 1 #endif /* ! LIBWMF_CONFIG_H */ libwmf-0.2.8.4/README0000644000077100007710000002011307366776246013407 0ustar fjffjf00000000000000libwmf-0.2.2 Release Notes -------------------------- While there have been some improvements to text placement and rendering in the X and gd layers, most changes are in the configuration. (It is now possible to build libwmf without any device layers, but this has not been tested extensively and is not recommended for general use.) Special thanks to Bob Friesenhahn, Leonard Rosenthol, David C Sterratt and Tomasz Koczko. Hopefully this release will build on Solaris. My apologies to everyone who had problems with libwmf-0.2.1. libwmf-0.2.1 Release Notes -------------------------- In adherence with the ancient philosophy of `It's my birthday and I'll release if I want to,' today, August 22nd 2001, sees the release of libwmf-0.2.1, a.k.a. `The Inspector General's Nose'. I was, in fact, tempted to call it version 0.3.0, but I've been calling it 0.2.1 for so many preview snapshots that, well, to do otherwise now would seem like a betrayal. The most significant change is the introduction of redirectable character output streams (i.e., wmfStream) which should facilitate the writing of WMF importers. - Speaking of which, CVS sodipodi now has optional support for importing WMF, requiring libwmf-0.2.1, and an importer for AbiWord is in the works. This has, however, necessitated a slight change in the API, and people who use libwmf in conjuction with wv will need to upgrade to wv-0.7.0 or later. Other significant changes are support for a ghostscript-style fontmap and the beginnings of doxygen-generated documentation (which will grow more complete with future releases). Otherwise, there has been considerable clean-up, bug-fixes and improvement of both the source and the build system, and some additional functionality, including: (a) The .fig export uses scaling now, and has options to save images as PNG or JPEG. (b) The .svg export now supports inline (data URI) images and compression to .svgz (plus sodipodi-specific workarounds). (c) Use of metafile size info., if any (a mixed blessing). Special thanks to: (a) Matej Vila, for helping to make libwmf more Debian-friendly; (b) Michael Cree, for helping me to get libwmf working on Tru64; (c) Steve Oney, whose help I have not yet done justice to... Thanks also to: Bob Friesenhahn, Michal Jaegermann, Anil Madhavapeddy, Jacqueline Signore, Shuang Wang, Sean Young, and Kees Zeelenberg. Finally, having just assumed the mantle of maintainership, I would like to take this opportunity once again to thank Martin Vermeer for all of his work on libwmf. Francis James Franklin 22nd August, 2001 =============================================================================== Amendment #1 ------------ This version of libwmf is now officially part of the wvWare project, available by CVS under the module named `libwmf2'. I have added device layers for SVG (W3C's XML-based vector graphic format) and MVG (ImageMagick's proprietary vector graphic format); the X device layer has not been changed and I have no intention of changing it in the near future, but it works. I have also added a device layer for GNU plotutils, but currently it is only a shell, so don't use it. The MVG work is based on information supplied by Bob Friesenhahn who did the WMF coder for ImageMagick. (ImageMagick's WMF coder links against libwmf(1), not this version.) I am using version ImageMagick-5.3.3, and I don't know whether earlier (or later) versions will be compatible with the MVG format assumed by libwmf. In fact, I am already finding bugs, particularly with dashed lines... Also, I don't really know how to implement fonts; I suspect ImageMagick could do with some serious hacking on this point... Martin Vermeer has added a FIG device layer, so now there are two routes available if anyone wants to *edit* the images as vector graphics: (a) WMF->FIG for editing with xfig; (b) WMF->SVG for editing with, for example, sodipodi (best to get the *very* latest source for sodipodi; the GNOME-1.4 release and earlier are colour- blind). The svg & magick device layers write all bitmap data as PNG images, using filenames provided via the device layer interface. The current version of the GD library subsumed within libwmf is gd-2.0.0, with my additions. This supports 24-bit colour. There is some documentation, but the best way to learn how to use the various the device layers is to read the source in src/convert/ Francis James Franklin 13th May, 2001 =============================================================================== This is my own (i.e., unofficial) development version of libwmf which I propose as a candidate for release as (official) libwmf version 0.2.0. Although based on Caolan's excellent libwmf, there has been an almost complete restructuring to take libwmf away from it's batch-process origins and make it as well-behaved a library as possible. (1) The names have been changed to protect the innocent. All global / external variables have the prefix `wmf' (or, since the GD library is subsumed within libwmf, `gd'). With very few exceptions: (a) functions: wmf_function_name (...) (b) types: wmfType, or wmfType_t (c) macros: WMF_Macro (...) (2) It is my belief that device-layer (e.g., output) implementations should not need to know anything about wmf files or the interpreter's methods. In addition, the writing of such device-layers should be made as simple as possible, though not of course at the expense of image fidelity or quality. As such, I have crafted a new interface between the interpreter and the device layer, which I choose to call the `ipa' (as opposed to the `api' which is the `application / program interface'). There must also be an interface between the application and the device layer, but this third interface is independent of the interpreter. Although this may sound unnecessarily complicated, in fact it makes programming applications or device layers significantly easier. (3) With very few exceptions, all function calls refer to a variable of type `wmfAPI' which incorporates all data associated with a given wmf file. A final call to wmf_api_destroy frees up all memory allocated during the initialization and processing of the metafile. (4) (a) There is no longer any dependence on temporary files; all processing of the metafile is performed in-memory or w.r.t. original metafile. (b) Metafiles can be in-memory if desired; or applications can specify their own read/seek/tell functions for reading the metafile. (5) (a) Xpm dependence & system calls have been removed; libwmf provides bitmap scaling functionality. (b) Bitmaps are read using code taken from ImageMagick [?? - are there licensing issues to be addressed here?] (c) libwmf now uses freetype (2) for stringwidth calculations, and is bundled with the standard thirteen ghostscript fonts [?? - are there licensing issues to be addressed here?] (d) libwmf incorporates GD (gd-1.8.4 at time of writing) which supports freetype (2), with some enhancements (filled arcs & clipping). * * libz, libpng and freetype(2) are the sole required external libraries. * (6) (a) The build system uses automake and libtool, and the only library created is `libwmf', which includes the eps and gd device layers and the GD library as well as the interpreter and api. (b) Header files are installed in a `libwmf' sub-directory. (7) I have added the wmf examples with Tor Lillqvist's plug-in for the Gimp: http://www.iki.fi/tml/gimp/wmf [?? - are there licensing issues to be addressed here?] Currently the only device layers are eps [eps & ps] and gd [png & jpeg]. Implementing more should be relatively straight-forward. I recognize that, until device layers for X, xfig and magick exist, this proposed revision of libwmf is at a disadvantage... I have tested only with PPC Linux 2000 and (x86) Linux RH7. Francis James Franklin 4th March, 2001 =============================================================================== libwmf-0.2.8.4/AUTHORS0000644000077100007710000000007507260330232013552 0ustar fjffjf00000000000000See CREDITS file in the same directory as this AUTHORS file. libwmf-0.2.8.4/COPYING0000644000077100007710000004311010271771502013537 0ustar fjffjf00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. libwmf-0.2.8.4/ChangeLog0000644000077100007710000005744610271772255014305 0ustar fjffjf00000000000000v. 0.2.8.4 * 3 patches from Caolan at RedHat: remove unnecessary extra linked libs; remove some warnings; rh154813 which (same redhat issuzilla bug id) I theorize fixes some upsidedown wmfs. v. 0.2.8.3 * configure.ac: Don't use -lm on Windows. mingw has an (empty) dummy libm, but it confuses libtool.) [Tor Lillqvist ] * libwm-config.in: Make installation-location-independent when run in a Cygwin shell. [Tor Lillqvist ] * src/Makefile.am: Don't use -lm on Windows. Add libwmflite.la to io_wmf_la_LIBADD. [Tor Lillqvist ] * src/wmf.c: Don't use hardcoded path for WMF_FONTDIR on Windows. Instead, assume being built as a DLL, and look up the DLL location in a DllMain routine, and use that to build the font directory path at run-time. [Tor Lillqvist ] * src/font.c: Don't use hardcoded path for WMF_XTRA_FONTMAP either. (remap_font_file_name): On Windows, if a font file name starts with the build-time prefix, replace that with the run-time installation prefix. [Tor Lillqvist ] v. 0.2.8.2 * proper freetype header inclusion (c. "war") v. 0.2.8.1 * security fix (Artem Frolov) v. 0.2.8 * update wmf2x & wmf2gd to use wmf_display_size() (fjf) * ditch wmf_gd_image_free(); api_destroy takes care of the image (fjf) * add new wmf_display_size() function which returns integer size of image for display; io-wmf loader update (dom) * add two convenience functions to xgd device layer for manipulating GD image post-conversion (fjf) * give libwmflite its own interface/binary numbers (fjf) * change gd.c (add _tpixels member to gdImageStruct) - now allocates contiguous array for truecolor pixels (fjf) * gdk-pixbuf plugin added (dom); config update (fjf) v. 0.2.7-2 * fix updated Fontmap[.GS] detection (fjf) * add some more paranoia into the font loader (fjf) * change a couple of C++ comments to C comments; configure.ac|in corrections (c. Olav Kolbu) * fix non-XML case in wmf2x.c; simplify freetype2 detection (fjf) v. 0.2.7 v. 0.2.7-Darwin * update Fontmap[.GS] detection (guesswork, really) (fjf) * don't include trio.h when --disable-heavy is used (fjf) * remember to update both version numbers in configure.ac! * move player.h's defs into metadefs.h for recorder.c (fjf) * add some missing "extern"s (c. Jeremy Shane Sanders) * added recorder.h & libwmf/canvas.h; call it Canvas now (fjf) v. 0.2.6 * added recorder.c, first stab at a metafile writer (fjf) * new --disable-heavy configure option (fjf) * initialize default font user_data to 0 (c. Corby Wilson) * tidy docs/dox installation (fjf) * basic editing features w/ API_ENABLE_EDITING (fjf) * expat/libxml2 configuration updated (fjf) * wmf2x will read *.xml & *.XML as wmfxml (fjf) * some initial wmfxml import work (fjf) * option to write WMF as, er, WMF. or XML. (fjf) * bump version number; disallow plotutils (fjf) * remove MVG back-end v. 0.2.5 * use memset to handle varying size of libxml2's SAX struct (fjf) v. 0.2.4 (this is not a release) * fake polypolygon for devices that can't handle it (fjf) * docs update * add draw_polypolygon () callback to IPA - will default to old behaviour; initialize function reference entries to 0 (fjf) v. 0.2.3 (this is not a release) * config update - move acconfig to patches, etc. (fjf) * RPM spec file update (c. Michal Jaegermann) * gd: support for bitmap transparency (fjf) * new RPM spec file (fjf) * don't add libwmflite.la into libwmf.la (fjf) * config clean-up (fjf) * install font.h (Bob Friesenhahn) * remove wmf_api_destroy from api.c (Bob Friesenhahn) * configure.ac: define TRIO_REPLACE_STDIO (Masafumi Matsumura) close WMF file on exit, if opened via libwmf2 (Bob Friesenhahn) * config updates - no more lt trickery (fjf) * major internal reorganization to separate out libwmflite; move font engine behind user_data handles; addition of wmf_lite_create () & wmf_lite_destroy (); post libwmf-0.2.2 versioning (fjf) v. 0.2.2 * fix wmf2x arg detection bug (Bob Friesenhahn) * added --with-layers option (fjf) * de-necessitate GD, add libpng support (highly experimental); rename config.h* to wmfconfig.h*; libxml2 fix (fjf) * release builds: configure-time Darwin-detection & lt-patching; make magick device layer optional; rewrite xml2 detection (wv); make secondary IPA functions static (fjf) * change copyright on include/libwmf/magick.h * add paranoid check for xmlChar**attributes==NULL * add one of many missing consts (Bob Friesenhahn) * add check for vsnprintf in libdb (David C Sterratt) * add 'foreign' device layer for non-wmf stuff * x,gd: better placement of text * x,gd: beginnings of a ROP implementation * change gd-layer source file names to 'xgd' root * use X-layer style text drawing in gd-layer * yet more config updates (fun, fun, fun!) * update other config stuff to handle autoconf-2.52 * update config.sub/guess to libtool-1.4.1 * make building/inclusion of GD library optional (fjf) * acinclude fix (Tomasz Koczko) * up the version number (fjf) v. 0.2.1 * radical IPA fontmap rewrite; GS Fontmap used now also (fjf) * clean up GS fontmap parser (fjf) * add missing `%' signs in src/ipa/eps.c (Kees Zeelenberg) * x: flip arcs; added a new example (fjftest.wmf) (fjf) * added GS fontmap parser; GS font dir configure option (fjf) * update config.sub/guess to libtool-1.4b * beginnings of doxygen documentation; release FT library only after device end (fjf) * move ltmain.sh to libwmf2/patches; autogen fix; add 6 bytes to maximum record size (fjf) * configurable doc & font dirs (Matej Vela) update spec file; make $prefix/share/doc default doc dir (fjf) * reset clip properly on RESTOREDC (fjf) * fig: substitute patterns for bitmaps when filling (fjf) * move palette_create to meta; add oid/obj diagnostics in meta; tag invalid SELECTCLIP as non-fatal (fjf) * (empty) framework for ghostscript fontmap parser (fjf) * more macros; use in the interpreter as well (part 1 of ?) (fjf) * fig: 2 new options (--maxpect & --no-margins) to wmf2fig; make build of wmf2x and wmf2plot conditional (fjf) * isolate WMF_LDFLAGS in src/convert/Makefile (fjf) * make inclusion of libtrio conditional (fjf) * fig: use explicit image scaling (fjf) * if image has a set size then (new fn) wmf_size returns it (fjf) * magick: images now cropped automatically; fig: option (--image=) to save images as PNG or JPEG; * svg: sodipodi-friendly text support (fjf) * svg: option (--inline) to wmf2svg to inline (data URL) images; various rewiring in svg & ipa layers + base64 option (fjf) * added wmf_ztream (compressed stream) functions to API; svg: option (-z) to wmf2svg to output as svgz (fjf) * fig: re-enable BMP support, but w/ cropping (fjf) * svg: sodipodi-friendly image support (fjf) * fig: re-enable BMP support, but w/o cropping (fjf) * improved color table support in IPA; more DC macros defined; fig device layer: updates (macros & wmf_stream_*), minor fixes, eps code removal, general clean-up, BMP support disabled (fjf) * use of wmf_stream in magick device layer (fjf) * fix gd-clip-flood; use macros to access dc: updated x layer (fjf) * check for vfscanf; use of wmf_stream in eps device layer; added to-memory `sink' re-router in gd device layer; use macros to access dc: updated eps & gd layers (fjf) * fixed bug in wmf_[*]alloc to do with zero-sized requests (fjf); (thanks to Michael Cree for spotting & debugging this) * added functions: wmf_detach, wmf_stream* file/memory IO, & wmf_printf; also implemented internal string buffer (fjf) * switching to autogen.sh method (fjf) * added trio suite of string functions; minor config fixes; ==== fixes to enable building package in separate directory ==== update to autoconf 2.50, automake-1.4-p2, libtool-1.4; (fjf) v. 0.2.0 * updated to gd-2.0.1; refined arc bounding box; updated docs; added support for non-system XML fontmap to read in addition to system XML fontmap, and added libwmf-fontmap script (fjf) * added Magick layer & ditched (unnecessary) support in configure; clean-up, moved libwmf.m4 to acinclude.m4 - `make dist' works now; updated README, added BUILDING and libwmf.spec for RPM generation; added support for images and text to SVG device layer; (fjf) * added --wmf-diagnostics option, which is now distinct from debug mode - allows examination of metafiles for parameter-list lengths etc.; separated meta stuff out of src/player.c into src/player/meta.h; tidier & more seg-safe reimplementation of parameter access (fjf) * added SVG device layer; basic drawing support only (fjf) * Fix to the drawing direction of arcs (speculative); arcs added to FIG (fjf/mv) * added wmf_gd_image output type which creates a gd image rather than PNG/JPEG/etc.; added color indexing - wmf_scan now creates a list of colors (excluding bitmap colors) specified in metafile (fjf) * FIG functionality more or less complete (mv) * added FIG format support framework (copied from eps stuff) and got it to build with makefiles etc. (mv) * added ; added libxml2 support for reading XML fontmap; updated config.sub, config.guess; added checks for GNU plotutils & ImageMagick to configure.in; updates to documentation; other minor changes; (fjf) libwmf2 imported to cvs March 28th 2001 (fjf) * See README, TODO, etc. libwmf2 Branch Point: (some changes may be lost; cf. libwmf ChangeLog) * F.J. Franklin patch cleaning up header files (add common.h, region.h). * F.J. Franklin patch improves TTF config. * Bob Bell syntax fixes. v 0.1.20 * Bob Bell patch to remove ctime warning in wmftoeps. * Bob Bell patch to prevent buffer ovfl in wmftoeps. * Option scale-bmp to xwmf also. * Removed gdImageColorResolveRich again, and implemented a better solution in gdxpm.c based on gridding the colour cube. * MV: Improved routine gdImageColorResolve (introducing a gdImageColorResolveRich version) to better handle color rich XPM files. Could be improved still. * Added option scale-bmp to wmftopng. v 0.1.19 * Vivien: embedded bitmaps "stack" now handled (apparently) correctly. cell.wmf works, test.wmf appears to as well! * Lots and lots of fixes/development on .fig graphics elements output, line styles, colour use, etc etc. "Depth hack". * Added use of lpDx[i] (explicit char placement). * Better font finder/fallback routines in .fig, .eps and .png. * Fixed text output in wmftopng, especially placement. * Added rudimentary wmftoeps. * Extensive text support for wmftofig. v 0.1.18 * A beginning of text support for the wmftofig export. Badly broken still. Some cleanup and documentation in libxfig. * Fixed the function names clash of read_32ubit (...16...) with wvware. * Fixes to realclean in gd-1.7.3 directory in two Makefile.in's. v 0.1.17 * moved codebase over the gd-1.7.3, * sent some patches to gd maintainer, hopefully in a release or two I won't have to distribute my own patched version of gd. * wmftogif is now gone, and wmftopng is there instead, because of the changes in gd. TODO * extra space for XRot, probably should create an XRotDrawText. * underline and strike-through have to be done as well. * test Text Support for X & gd, with all the extras, like bold/italic/ extra space for chars and breaks/rotated letters/escarpment etc. * run purify over it again to fully debug clipping * internal resizing support, the ppm utils do bad things to the colors, and dont support xpm files with > 256 colors, and i might as well try and support the resizing flags of windows, so ill try and patch in wine source again. * 1 created a clipping wmf file that demoed that stuff. * 2 clean up so that bitblt has all the bitblt calls and patblt calls, give it a proper SetDIBits as well. Test the x and y src on both those types of call as well. * 3 create a single wmf file with the frame and fill etc regions. * 4 single wmf that demos all the pen stuff with rectangles. * 5 single wmf that demos all the brush stuff with rectangles. * 6 single wmf with all graphic drawing primitives. * 7 one awful wmf that does all the font and text stuff ? * bring gd up to speed with X binding. * patch in the wine handling for text for X, SetTextJustification etc. * extend gd rectangle pen and brush to all shapes. * fully support all dib depths. * im still not happy with the MAPMODE setting, out.wmf looks too small, but otherwise dancers.wmf and Eg.wmf become too huge, but it looks like the same set of opcodes. * fiddle with join styles and all the other pen things. * we need to get the docs for this ability of X11R6 to do rotated text, as i cant work it out fully from the wine source, implement that, look at wine for orientation as well. * do a better api for clipping in gd, see if the maintainer will take a patch for it, i dont really want to haul around a special version of gd with me. v 0.1.16 * Albert Chin-A-Young , noted that there was a few syntatical errors, missing include , unended comment block and an empty struct v 0.1.15 Sam Sirlin reports that -L. before the -l lines doesn't appear to guarantee that the new libs get linked, and that old ones do instead, so i added -L. to the beginning as well. v 0.1.14 * added patches from (Raj Manandhar) to fix gdttf to find symbol font, and to be able to zoom in with xwmf, use + to zoom in and - to zoom out v 0.1.13 * bugfix patch from Bob Van Valzah v 0.1.12 * David.Airlie@ul.ie began and implemented a large chunk of functionality to convert wmf files to fig format. I'd like to request aid to finish off this area. v 0.1.11 * added patched from Albert Chin-A-Young for configure file and a NULL check. v 0.1.10 * removed c++ comment * stripped ^M's out * cast a few things to void pointers before assigning them to userdata. v 0.1.9 * added more bullet proffing against the sort of nightmare wmf's that come out of mswordview. * some better error checking for missing fonts, (doh !) * broke tt, fixed tt * removd debugging messages. v 0.1.8 * trivial change to wmfapi.h to make life easier with blip handling in mswordview * made configure script get heroic when searching for components, checks for for includes and libs both below a --with-stuff dir, and also inside it as well. v 0.1.7 * added ability to gd to read xbm's from data, rather than file, changed source accordingly, dont need to carry xbm's around anymore. * changed configure script to agressively find the xpm header file, * tested to work under aix (of all things :-)) * tested to work under solaris. * checked that it reports lack of xpm lib, and fails to go any further. * fiddled a bit more, and libwmf now works cleanly with mswordview, all cheer. v 0.1.6 * fixed tendency to blank out the area underneath it, this is due to the attempt to paint the bgcolor underneath the text. * configure script check for freetype is in. * forced to move gd1.3 back into the main tree, as i need custom clipping. * made sure that realwidth and realheight are always in positive units. * added TOP/BOTTOM/BASELINE positioning to gd version. * added better handling of background color for rotated text. * added better handling of the two types of putting extra space between letters to the gd binding. * added text background color for gd for text that doesnt include a rect. * changed gd to xgd, make gd, gdextras and gdttf all into one lib called libxgd, then only require a client app to link against that + libdib + libXpm + libX11, and only to include the dib include * made libdib a self contained entity. * the wmfapi include file and the gdwmfapi file can be used from other apps now. * tidied things up so that it can be used as a library properly, added a make install for all the components. v 0.1.5 * patched in wines clipping for INTERSECTCLIP and OFFSETCLIP * patched in EXCLUDECLIP * added SelectClippingRgn, untested. * Added basic TEXTOUT support, * stuck in some sensible aliases for common windows fonts, still you're so much better off runnning xfsft over your windows fonts, i think they make most of them freely available if you dont have windows, check out http://www.freetype.org for links to them. * the gd stuff has to be told the location of the ttf font dir, get all the font names and fontfaces, and then for the moment use the ttftopnm thing. * set up the region handlers so that clipping doesnt affect them, which appears to be the right road to go down, i.e. for region based calls, save the clipping region, and then do the call, and then restore the clipping. * added paint rgn to gd. * added (broken) clipping to gd. * finished and fixed clipping for gd * the gd stuff can be told the location of the tt fonts, and it will find the correct font to use from the fontname. * added some code from xvertext to allow me to do rotated text, i probably should use the X11R6 stuff, but this code was available already. * sent off some patches to the gd maintainer on the clipping code. * put in the support for rotated text from Gdtclft, added extra space code for it, ttf support is now integrated into the gd binding. v 0.1.4 * purify run again. * implemeted FRAMEREGION, it might even be right, who knows. * do clipping ala wine, INTERSECT and EXCLUDE and MODE that'll give us everything except full font support and palettes, which we're going to ignore i think. * supported META_SETDIBTODEV, im pretty sure ive got it right, its a bit tricky, and win95 appears to ignore it so its hard to be sure ive got it right, on the other hand, its probably not used at all in the real world. * documented all the supported wmf operations, and they are available in the doc subdir, or on http://www.csn.ul.ie/~caolan/docs/libwmf.html Id ask for everyone's help in reading the docs and fixing metafile operations thatyou know to be wrong, or just to fix my grammer and give better explanations than what i have etc etc. v 0.1.3 * rats, my changelog got corrupted, would you believe that linux 2.2.2 still has a bug with vfat floppies, dammit. anyhow * added viewportorg, and viewportext, fiddled with a few things that should sort out the scaling correctly in these cases, but untested, and quite possibly never to be tested in reallife. * added offset and scale opcodes, all untested. * added META_SETMAPPERFLAGS to ignore. * added simple test for being a metafile or not, reran purify over xwmf, removed a few more leaks and dodginess. * added DIBBITBLT pretty much fully, figured out the silliness involved there. * added some ROPS for DIBBITBLT, extented the stretch ones to use them. * from my investigations patched wine to fix their dashed lines > 1 & floodfill & a patch for the other varient of DibBitBlt thats equivalent to PatBlt * src offset in DIB handling. * added some SETDIBTODEVICE handling. * patched in the wine CREATEREGION code. * added PAINTREGION & INVERTREGION, must test these 3. v 0.1.2 * fixed leaks and some bugs with purify. * added META_STRETCHDIB * changed the system call to netpbm to quantize the colors after a shrink if necessary. * fixed xpm importation into gif binding. * fixed gd binding in relation to non-placeable wmf files. * fixed crash under solaris, removed all mem leaks for X, cleaned up the gd binding substationally. * added PATBLT, same top parsing i believe. * added the PALETTE operands, but ignored them all, i think thats ok. * patched in some of the wine handling for ExtTextOut for X, i.e the spacing support for that op. * X polyline color issue. * settled opaque for text, not exactly perfect in the text box. * i went to all the hassle of putting in the wine text code coz i thought rotated text would work, and it doesnt ! (no in wine either, whats gives ?) * add X support for OPAQUE and Transparent handling for pens in the area of line drawing, brushes for stippled brushes and background for text (done). * added wine ROP support to X pen and brush, maybe it worksm who knows. * placed winding in the fillcode, dont know if it works though. * added SetPixel to X and gd. * successfully converted all of the win3.1 word 6 and msworks clipart files in X mode, and they all look right, my god !, this calls for a release v 0.1.1 * forgot to set gd binding to use new polygon filling code v 0.1.0 * renamed 0.1.0, uploaded to sunsite and announced it v 0.0.9 * moved out all but one reference to X stuff to the X bindings * create function pointers for all the graphic etc calls in wmfapi and * finish making size code indenpendant of X. remove X code into Xwmf1api.c * create void pointer in CSTRUCT for userdata i.e display and drawable in X, im_out etc in gd. * make gd load the image from DIBSTRETCH as well. * seperated X and gd. * configure script to get the right AR command and to search for gd * make the gd section more modular for this setup. v 0.0.8 * changed gd color alloc to the one in the tcl gdttf. * added some ROP support to gd and X. * make Xinit and gd_init into just init. * created void pointer in CSTRUCT for userdata i.e display and drawable in X, im_out etc in gd. v 0.0.7 * INSIDE and ellipse for X and gd completed. * polypolygon for X and gd completed. * added completely arbitrary switch between 1440 / 100 units per inch when given no other clues based upon the width in metafile units. * pies, arcs and chords done for X. * figured out the equation for gd arcs. * chords, arcs and pies for gd, implemented by using a temporary image and floodfill. v 0.0.6 * seperated dib code to a libdib library. * patch for gd for polygon fill. * quick and dirty patch for gd to to import xpms. * hacked in DibBrushes for gd lib. * added ExtTextOut support to X version. * added OPAQUE for ExtTextOut to gd version. * set vertical text align done. * X round rect completed. v 0.0.5 * pen becomes solid if we're using any of the dashes, but are > 1 in width. * primitive pen width implemented in gd. * implemented insideframe for X and gd rectangles. * implemented two of the hatching styles in both X and gd. * finished hatching styles for X and gd. * added 24,8,4 and 1 bit dib to xpm handling. v 0.0.4 * lineto,moveto and clipping regions done, dc saving and restoration minimally done, windoworg and ext done. * selecting & deleting objects done. * fixed it so it wont crash on non-placeable wmf files. * added the other objects to my lists to make sure i dont loose count of the various objects. * fixed which to use, pen vs brush. * pulled down wine, and began to compare and add according to wine. * added line width to pen calls. * added line styles, join styles, and dashing to pen, i think :-) i havent tested. * ellipses back in again. * added part imple of MAPMODE * support 1 pixel wide line for drawing in gd and X, dashing done. * all pen styles done in X, except for INSIDEFRAME which doesnt mean very much to me yet. all pen styles done in gd as well, except that lines wider than 1 pixel arent supported yet :-). * using flat joining for X rectangles as well. v 0.0.3 arcs and ellipses done. v 0.0.2 found a graphics lib that i can use instead of X for drawing, so that i can do it offline. began to seperate code up so that i can plugin X code or gd code easily to do one or the other. v 0.0.1 does something, parses standard wmf files, differenciates between placeable and nonplaceable. Can extract rectangle, SetText and polygon details. With a direct hook-up to X calls can draw then too. funnily enough with polygon implemented you can basically get the outline of nearly all the wmf example that came with the old win 3.1 version of word 6 that im stuck with out here at home for christmas. TODO & THOUGHTS * compile as a standalone gtk app. * divide into 2 portions, lib and frontend hooks for draw commands. * create straight X drawing commands for it. * maybe create straight -> xfig calls for it. libwmf-0.2.8.4/INSTALL0000644000077100007710000002207110272000332013523 0ustar fjffjf00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. (Caching is disabled by default to prevent problems with accidental use of stale cache files.) If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PREFIX', the package will use PREFIX as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the `--target=TYPE' option to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc will cause the specified gcc to be used as the C compiler (unless it is overridden in the site shell script). `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. libwmf-0.2.8.4/Makefile.am0000644000077100007710000000133607573704141014552 0ustar fjffjf00000000000000if LIBWMF_BUILD_ALL DIRHEAVY = . src include fonts doc else DIRHEAVY = . src include endif DIST_SUBDIRS = . src include fonts doc SUBDIRS = $(DIRHEAVY) bin_SCRIPTS = libwmf-config WMFEXAMPLES = \ examples/2doorvan.wmf \ examples/Eg.wmf \ examples/anim0002.wmf \ examples/ant.wmf \ examples/arrow01.wmf \ examples/cell.wmf \ examples/fjftest.wmf \ examples/formula1.wmf \ examples/formula2.wmf \ examples/formula3.wmf \ examples/formula4.wmf \ examples/fulltest.wmf \ examples/p0000001.wmf \ examples/p0000016.wmf \ examples/sample.wmf \ examples/sample2.wmf \ examples/text.wmf EXTRA_DIST = AUTHORS BUILDING CREDITS NEWS README $(WMFEXAMPLES) \ libwmf.spec \ patches/acconfig.h \ ac-helpers/pkg-config/pkg.m4 libwmf-0.2.8.4/Makefile.in0000664000077100007710000005460310272000332014547 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/libwmf-config.in \ $(srcdir)/libwmf.spec.in $(srcdir)/wmfconfig.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO config.guess config.sub depcomp install-sh ltmain.sh \ missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = wmfconfig.h CONFIG_CLEAN_FILES = libwmf-config libwmf.spec am__installdirs = "$(DESTDIR)$(bindir)" binSCRIPT_INSTALL = $(INSTALL_SCRIPT) SCRIPTS = $(bin_SCRIPTS) SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ @LIBWMF_BUILD_ALL_FALSE@DIRHEAVY = . src include @LIBWMF_BUILD_ALL_TRUE@DIRHEAVY = . src include fonts doc DIST_SUBDIRS = . src include fonts doc SUBDIRS = $(DIRHEAVY) bin_SCRIPTS = libwmf-config WMFEXAMPLES = \ examples/2doorvan.wmf \ examples/Eg.wmf \ examples/anim0002.wmf \ examples/ant.wmf \ examples/arrow01.wmf \ examples/cell.wmf \ examples/fjftest.wmf \ examples/formula1.wmf \ examples/formula2.wmf \ examples/formula3.wmf \ examples/formula4.wmf \ examples/fulltest.wmf \ examples/p0000001.wmf \ examples/p0000016.wmf \ examples/sample.wmf \ examples/sample2.wmf \ examples/text.wmf EXTRA_DIST = AUTHORS BUILDING CREDITS NEWS README $(WMFEXAMPLES) \ libwmf.spec \ patches/acconfig.h \ ac-helpers/pkg-config/pkg.m4 all: wmfconfig.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) wmfconfig.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/wmfconfig.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status wmfconfig.h $(srcdir)/wmfconfig.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f wmfconfig.h stamp-h1 libwmf-config: $(top_builddir)/config.status $(srcdir)/libwmf-config.in cd $(top_builddir) && $(SHELL) ./config.status $@ libwmf.spec: $(top_builddir)/config.status $(srcdir)/libwmf.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ else :; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) wmfconfig.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) wmfconfig.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) wmfconfig.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) wmfconfig.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) $(mkdir_p) $(distdir)/. $(distdir)/ac-helpers/pkg-config $(distdir)/examples $(distdir)/fonts $(distdir)/patches @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) wmfconfig.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-exec-am: install-binSCRIPTS install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ check-am clean clean-generic clean-libtool clean-recursive \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-shar dist-tarZ dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-recursive distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binSCRIPTS install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-libtool \ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/NEWS0000644000077100007710000000011007340471336013201 0ustar fjffjf00000000000000August 22nd, 2001 libwmf-0.2.1 release. See README for release notes. libwmf-0.2.8.4/TODO0000644000077100007710000000462407276212127013207 0ustar fjffjf00000000000000o Do we need to check for memcpy (), memset (), ... ?? o Does Win* have unlink () ?? Better to remove() ?? o Should I be opening files with "rb" & "wb" - check! o crop, width, height, etc. tests for bitmaps o further tests for division by zero o Add a dpi option in wmf_eps_t struct ?? o eps,gd,x: bmp_draw ignores bitmap type o -geometry option to wmf2x doesn't work properly; ditch position ?? o Does that (X) flood fill function really work? o What is the proper order of x & y coordinates in lists of points in *poly* ?? o Check mismatch in DIBSTRETCHBLT/crop o Need to check use of font map options o in player/dc.h, pointers set up to default brush/pen/font; are these over-written ?? o reset bounding box before play ?? (in which case, need to remove SCAN() qualifies around registration...) o what is opacity for non-32bit bitmaps? assuming 0xff, but maybe 0x00 ?? o xwmf in official libwmf tree: (a) renders test11.wmf incorrectly o (b) angles text the wrong way o scaling of pattern brush? - multiply imaging is possible but potentially expensive... PS forms ?? o I'm uncertain about the eps arc-draw functions... Does anyone have an elliptic pie-chart ?? o char width calcs using wmf_D_Coord_translate need to translate origin as well! - check - why not just multiply by pixel_width? or have official scale function... o finish eps,gd text: need underline (& strikethrough ?? (& ... ??)) o eps,gd,x: ROP ?? o eps fill transparency/color gets trashed on x86 - this seems to be a problem with ghostscript... ... but what to do about it? o gd,eps,x: Has the rounded rectangle been implemented ?? o gd,eps,x: PS_INSIDE_FRAME - How to implement this (see gdwmfapi.c...) o gd,eps,x: drawpixel implementations aren't scaling... o add wmf_attach () & wmf_detach () functions for inserting/removing memory from libwmf MM array ?? o add WMF_SCAN_HEADER option ?? not sure this is a valid test. Why not do a full scan? o original libwmf: gd_draw_rectangle uses height instead of width? o with arcs, if start and end points the same then the player should request an ellipse, *not* an arc o x: use of unqualified arrays is perhaps dangerous ?? o x: flood fill o x,gd: angled text: I'm not entirely convinced about this; - also, bounding box may be at wrong angle... - in fact, bad assumption here: what references WMF_TEXT_ANGLE that shouldn't ?? o gd: background colour is black instead of white? libwmf-0.2.8.4/acinclude.m40000644000077100007710000000656607342661405014720 0ustar fjffjf00000000000000dnl AC_CHECK_VERSION(version_number_of_package,reference_minimum_version_number) dnl sets ac_check_version_okay=yes if successful dnl AC_DEFUN([AC_CHECK_VERSION],[ current_version=$1 current_major_version=`echo $current_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` current_minor_version=`echo $current_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` current_micro_version=`echo $current_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` minimum_version=$2 minimum_major_version=`echo $minimum_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` minimum_minor_version=`echo $minimum_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` minimum_micro_version=`echo $minimum_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` ac_check_version_okay=no if [ test $current_major_version -gt $minimum_major_version ]; then ac_check_version_okay=yes elif [ test $current_major_version -eq $minimum_major_version ]; then if [ test $current_minor_version -gt $minimum_minor_version ]; then ac_check_version_okay=yes elif [ test $current_minor_version -eq $minimum_minor_version ]; then if [ test $current_micro_version -ge $minimum_micro_version ]; then ac_check_version_okay=yes fi fi fi ]) AC_DEFUN([AC_LIBPLOT_LIBS],[ ac_can_link_libplot=no LIBPLOT_LIBS="-lplot" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" AC_MSG_CHECKING(whether libplot requires X) AC_TRY_LINK([ #include #include ],[ plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ],[ ac_can_link_libplot=yes AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) ]) LDFLAGS=$ac_libplot_ldflags if [ test "x$no_x" != "xyes" ]; then dnl Athena: if [ test $ac_can_link_libplot != yes ]; then LIBPLOT_LIBS="-lplot $X_LIBS -lXaw -lXmu -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" AC_MSG_CHECKING(whether libplot links against Athena) AC_TRY_LINK([ #include #include ],[ plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ],[ ac_can_link_libplot=yes AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) LDFLAGS=$ac_libplot_ldflags fi dnl Motif: if [ test $ac_can_link_libplot != yes ]; then ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $X_LIBS" AC_CHECK_LIB(Xp,main,[libXp="-lXp"],[libXp=""],-lXext -lX11) LIBPLOT_LIBS="-lplot $X_LIBS -lXm $libXp -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" AC_CHECK_LIB(gen,main,[LIBPLOT_LIBS="$LIBPLOT_LIBS -lgen"]) AC_CHECK_LIB(PW,main,[LIBPLOT_LIBS="$LIBPLOT_LIBS -lPW"]) LDFLAGS=$ac_libplot_ldflags LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" AC_MSG_CHECKING(whether libplot links against Motif) AC_TRY_LINK([ #include #include ],[ plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ],[ ac_can_link_libplot=yes AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) LDFLAGS=$ac_libplot_ldflags fi fi ]) libwmf-0.2.8.4/config.guess0000755000077100007710000012450410272000332015016 0ustar fjffjf00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. timestamp='2004-09-07' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amd64:OpenBSD:*:*) echo x86_64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; cats:OpenBSD:*:*) echo arm-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; luna88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit 0 ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; *:OS400:*:*) echo powerpc-ibm-os400 exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit 0 ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit 0 ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms && exit 0 ;; I*) echo ia64-dec-vms && exit 0 ;; V*) echo vax-dec-vms && exit 0 ;; esac esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libwmf-0.2.8.4/config.sub0000755000077100007710000007511310272000332014462 0ustar fjffjf00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. timestamp='2004-08-29' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32r | m32rle | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | msp430-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libwmf-0.2.8.4/ltmain.sh0000644000077100007710000054666210272000243014334 0ustar fjffjf00000000000000# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # RH: define SED for historic ltconfig's generated by Libtool 1.3 [ -z "$SED" ] && SED=sed # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.6 TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42)" # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" ##################################### # Shell function definitions: # This seems to be the best place for them # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` if test "X$win32_nmres" = "Ximport" ; then win32_libid_type="x86 archive import" else win32_libid_type="x86 archive static" fi fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" $echo $echo "Copyright (C) 2003 Free Software Foundation, Inc." $echo "This is free software; see the source for copying conditions. There is NO" $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $EXIT_SUCCESS ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $EXIT_SUCCESS ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $EXIT_SUCCESS ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case "$arg_mode" in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; *.java) xform=java ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit $EXIT_FAILURE fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # gcc -m* arguments should be passed to the linker via $compiler_flags # in order to pass architecture information to the linker # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo # but this is not reliable with gcc because gcc may use -mfoo to # select a different linker, different libraries, etc, while # -Wl,-mfoo simply passes -mfoo to the linker. -m*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" if test "$with_gcc" = "yes" ; then compiler_flags="$compiler_flags $arg" fi continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test "$status" -ne 0 && test ! -d "$output_objdir"; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) if test "$deplibs_check_method" != pass_all; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5* ) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case "$libdir" in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor - 1` age="$number_minor" revision="$number_minor" ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in [0-9]*) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in [0-9]*) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in [0-9]*) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$save_output-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$save_output-${k}.$objext k=`expr $k + 1` output=$output_objdir/$save_output-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadale object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) cwrappersource=`$echo ${objdir}/lt-${output}.c` cwrapper=`$echo ${output}.exe` $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR #define DIR_SEPARATOR '/' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) #define HAVE_DOS_BASED_FILE_SYSTEM #ifndef DIR_SEPARATOR_2 #define DIR_SEPARATOR_2 '\\' #endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); char * basename (const char *name); char * fnqualify(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup ((char *) basename (argv[0])); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = fnqualify(argv[0]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } char * basename (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha (name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return (char *) base; } char * fnqualify(const char *path) { size_t size; char *p; char tmp[LT_PATHMAX + 1]; assert(path != NULL); /* Is it qualified already? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha (path[0]) && path[1] == ':') return xstrdup (path); #endif if (IS_DIR_SEPARATOR (path[0])) return xstrdup (path); /* prepend the current directory */ /* doesn't handle '~' */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ p = XMALLOC(char, size); sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); return p; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" status=$? if test "$status" -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "$mkdir $xdir" $run $mkdir "$xdir" status=$? if test "$status" -ne 0 && test ! -d "$xdir"; then exit $status fi # We will extract separately just the conflicting names and we will no # longer touch any unique names. It is faster to leave these extract # automatically by $AR in one run. $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 $AR t "$xabs" | sort | uniq -cd | while read -r count name do i=1 while test "$i" -le "$count" do # Put our $i before any first dot (extension) # Never overwrite any file name_to="$name" while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" do name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` done $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? i=`expr $i + 1` done done fi oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # GNU ar 2.10+ was changed to match POSIX; thus no paths are # encoded into archives. This makes 'ar r' malfunction in # this piecewise linking case whenever conflicting object # names appear in distinct ar calls; check, warn and compensate. if (for obj in $save_oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 AR_FLAGS=cq fi # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*"` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # To insure that "foo" is sourced, and not "foo.exe", # finese the cygwin/MSYS system by explicitly sourcing "foo." # which disallows the automatic-append-.exe behavior. case $build in *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; *) wrapperdot=${wrapper} ;; esac # If there is no directory component, then add one. case $file in */* | *\\*) . ${wrapperdot} ;; *) . ./${wrapperdot} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" save_umask=`umask` umask 0077 if $mkdir "$tmpdir"; then umask $save_umask else umask $save_umask $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "----------------------------------------------------------------------" $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "----------------------------------------------------------------------" exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test "$mode" = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $EXIT_SUCCESS # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: libwmf-0.2.8.4/aclocal.m40000664000077100007710000075023310272000256014351 0ustar fjffjf00000000000000# generated automatically by aclocal 1.9.2 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 47 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_LINK_IFELSE(AC_LANG_PROGRAM,[ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD else $2=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && test "X$CXX" != "Xno"; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- #- set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) case $host_cpu in alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that LIBLTDL # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If # DIRECTORY is not provided and an installed libltdl is not found, it is # assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' # and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single # quotes!). If your package is not flat and you're not using automake, # define top_builddir and top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # -------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' _LT_AC_SYS_COMPILER # # Check for any special shared library compilation flags. # _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= if test "$GCC" = no; then case $host_os in sco3.2v5*) _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' ;; esac fi if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : else AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no fi fi # # Check to make sure the static flag actually works. # AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) # Report which librarie types wil actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; darwin* | rhapsody*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' ;; esac fi ;; esac output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sco*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris* | sysv5*) symcode='[[BDRT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux*) case $CC in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; sco3.2v5*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds" fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi4*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; sco3.2v5*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4.2uw2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv5*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done SED=$lt_cv_path_SED ]) AC_MSG_RESULT([$SED]) ]) dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page dnl also defines GSTUFF_PKG_ERRORS on error AC_DEFUN([PKG_CHECK_MODULES], [ succeeded=no if test -z "$PKG_CONFIG"; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then AC_MSG_CHECKING(for $2) if $PKG_CONFIG --exists "$2" ; then AC_MSG_RESULT(yes) succeeded=yes AC_MSG_CHECKING($1_CFLAGS) $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` AC_MSG_RESULT($$1_CFLAGS) AC_MSG_CHECKING($1_LIBS) $1_LIBS=`$PKG_CONFIG --libs "$2"` AC_MSG_RESULT($$1_LIBS) else $1_CFLAGS="" $1_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` ifelse([$4], ,echo $$1_PKG_ERRORS,) fi AC_SUBST($1_CFLAGS) AC_SUBST($1_LIBS) else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then ifelse([$3], , :, [$3]) else ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) fi ]) # -*- Autoconf -*- # Copyright (C) 2002, 2003 Free Software Foundation, Inc. # Generated from amversion.in; do not edit by hand. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.9.2])]) # AM_AUX_DIR_EXPAND # Copyright (C) 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 6 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # serial 7 -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 7 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # This macro actually does too much some checks are only needed if # your package does certain things. But this isn't really a big deal. # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 11 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.58])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. # Copyright (C) 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # -*- Autoconf -*- # Copyright (C) 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_PROG_MKDIR_P # --------------- # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. # Copyright (C) 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories # created by `make install' are always world readable, even if the # installer happens to have an overly restrictive umask (e.g. 077). # This was a mistake. There are at least two reasons why we must not # use `-m 0755': # - it causes special bits like SGID to be ignored, # - it may be too restrictive (some setups expect 775 directories). # # Do not use -m 0755 and let people choose whatever they expect by # setting umask. # # We cannot accept any implementation of `mkdir' that recognizes `-p'. # Some implementations (such as Solaris 8's) are not thread-safe: if a # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' # concurrently, both version can detect that a/ is missing, but only # one can create it and the other will error out. Consequently we # restrict ourselves to GNU make (using the --version option ensures # this.) AC_DEFUN([AM_PROG_MKDIR_P], [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi AC_SUBST([mkdir_p])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # # Check to make sure that the build environment is sane. # # Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # AM_PROG_INSTALL_STRIP # Copyright (C) 2001, 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([acinclude.m4]) libwmf-0.2.8.4/configure.ac0000644000077100007710000005547310271771447015021 0ustar fjffjf00000000000000AC_INIT([libwmf],[0.2.8],[wvware-devel@sourceforge.net]) AC_CONFIG_SRCDIR([src/player.c]) LIBWMF_PACKAGE=libwmf AC_SUBST(LIBWMF_PACKAGE) dnl This next section is courtesy gtk+ dnl # Making releases: # WMF_MICRO_VERSION += 1; # WMF_INTERFACE_AGE += 1; # WMF_BINARY_AGE += 1; # if any functions have been added, set WMF_INTERFACE_AGE to 0. # if backwards compatibility has been broken, # set WMF_BINARY_AGE and WMF_INTERFACE_AGE to 0. # WMF_MAJOR_VERSION=0 WMF_MINOR_VERSION=2 WMF_MICRO_VERSION=8 WMF_INTERFACE_AGE=0 WMF_BINARY_AGE=1 WMFLITE_INTERFACE_AGE=1 WMFLITE_BINARY_AGE=1 dnl spec file substitutions LIBWMF_VERSION=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION.$WMF_MICRO_VERSION LIBWMF_RELEASE=1 AC_SUBST(LIBWMF_VERSION) AC_SUBST(LIBWMF_RELEASE) # libtool versioning LT_RELEASE=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION AC_SUBST(LT_RELEASE) LT_CURRENT=`expr $WMF_MICRO_VERSION - $WMF_INTERFACE_AGE` LT_REVISION=$WMF_INTERFACE_AGE LT_AGE=`expr $WMF_BINARY_AGE - $WMF_INTERFACE_AGE` AC_SUBST(LT_CURRENT) AC_SUBST(LT_REVISION) AC_SUBST(LT_AGE) LT_LITE_CURRENT=`expr $WMF_MICRO_VERSION - $WMFLITE_INTERFACE_AGE` LT_LITE_REVISION=$WMFLITE_INTERFACE_AGE LT_LITE_AGE=`expr $WMFLITE_BINARY_AGE - $WMFLITE_INTERFACE_AGE` AC_SUBST(LT_LITE_CURRENT) AC_SUBST(LT_LITE_REVISION) AC_SUBST(LT_LITE_AGE) # For automake. PACKAGE=$LIBWMF_PACKAGE VERSION=$LIBWMF_VERSION dnl Initialize automake stuff AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define) # Specify a configuration file AM_CONFIG_HEADER(wmfconfig.h) AH_TOP([ #ifndef LIBWMF_CONFIG_H #define LIBWMF_CONFIG_H ]) # CFLAGS to be listed by libwmf-config should be added to this: WMF_CONFIG_CFLAGS= # Other CFLAGS, not to be listed by libwmf-config, should be added to this: WMF_CFLAGS= # LDFLAGS to be listed by libwmf-config should be added to this: WMF_LIBFLAGS= # WMF_DEFS is for flags such as -DDEBUG which are to applied only to # libwmf source not extra packages such as gd - more global defs should be # added to WMF_CFLAGS AC_ARG_ENABLE(debug,[ --enable-debug set DEBUG option to libwmf [default=no]],[ if [ test "x$enableval" != "xno" ]; then WMF_DEFS="-DDEBUG=1" else WMF_DEFS= fi ],[ WMF_DEFS= ]) AC_ARG_ENABLE(ansi,[ --enable-ansi set -ansi option to libwmf [default=no]],[ if [ test "x$enableval" != "xno" ]; then WMF_DEFS="$WMF_DEFS -ansi" fi ]) AC_ARG_ENABLE(pedantic,[ --enable-pedantic set -pedantic option to libwmf [default=no]],[ if [ test "x$enableval" != "xno" ]; then WMF_DEFS="$WMF_DEFS -pedantic" fi ]) LIBWMF_BUILDSTYLE=heavy libwmf_build_all=yes AC_ARG_ENABLE(heavy,[ --disable-heavy only build libwmflite [default=build all]],[ if [ test "x$enableval" = "xno" ]; then LIBWMF_BUILDSTYLE=lite libwmf_build_all=no fi ]) AC_SUBST(LIBWMF_BUILDSTYLE) AM_CONDITIONAL(LIBWMF_BUILD_ALL,[ test "x$libwmf_build_all" = "xyes" ]) # gd does not read config.h so need to pass it options on the command line: GD_DEFS= dnl Initialize libtool # Tests for Windows AC_CYGWIN AC_EXEEXT AC_OBJEXT AC_MINGW32 # End Tests for Windows AC_MSG_CHECKING([for Win32]) case "$host" in *-*-mingw*) os_win32=yes SYS_LIBM="" ;; *) os_win32=no SYS_LIBM="-lm" ;; esac AC_MSG_RESULT([$os_win32]) AC_SUBST(SYS_LIBM) dnl Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET # Configure libtool AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL #end libtool stuff dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(time.h) AC_CHECK_HEADER(unistd.h,[ AC_DEFINE(HAVE_UNISTD_H,1,[define if you have unistd.h]) GD_DEFS="$GD_DEFS -DHAVE_UNISTD_H" ]) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_OFF_T AC_TYPE_SIZE_T dnl Checks for library functions. AC_CHECK_FUNCS(strstr) dnl Check for trio functions. require_trio=no if test $LIBWMF_BUILDSTYLE = heavy; then AC_CHECK_FUNCS(printf fprintf vfprintf sprintf,,require_trio=yes) AC_CHECK_FUNCS(vprintf vsprintf) AC_CHECK_FUNCS(sscanf,,require_trio=yes) AC_CHECK_FUNCS(scanf vscanf fscanf vsscanf) dnl Special case (1): vsnprintf AC_CHECK_FUNCS(vsnprintf,,check_for_vsnprintf=yes) if [ test "x$check_for_vsnprintf" = "xyes" ]; then AC_CHECK_FUNC(_vsnprintf,[ AC_DEFINE(HAVE_VSNPRINTF,1,[define if you have vsnprintf]) AC_DEFINE(vsnprintf,_vsnprintf,[define to your implementation of vsnprintf]) ],[ dnl Hmm. On the off-chance, check for vsnprintf in libdb. dnl This should, hopefully, solve the problem with Tru64 4.x dnl which is incompatible with trio (the latter's fault). AC_CHECK_LIB(db,vsnprintf,[ AC_DEFINE(HAVE_VSNPRINTF,1,[define if you have vsnprintf]) WMF_LIBFLAGS="$WMF_LIBFLAGS -ldb" ],[ require_trio=yes ]) ]) fi dnl Special case (2): snprintf AC_CHECK_FUNCS(snprintf,,check_for_snprintf=yes) if [ test "x$check_for_snprintf" = "xyes" ]; then AC_CHECK_FUNC(_snprintf,[ AC_DEFINE(HAVE_SNPRINTF,1,[define if you have snprintf]) AC_DEFINE(snprintf,_snprintf,[define to your implementation of snprintf]) ]) fi dnl Special case (3): vfscanf is defined as a macro for Darwin / Mac OS X AC_CHECK_FUNCS(vfscanf,,check_for_vfscanf=yes) if [ test "x$check_for_vfscanf" = "xyes" ]; then AC_MSG_CHECKING(for vfscanf in stdio.h) AC_EGREP_HEADER(vfscanf,stdio.h,[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_VFSCANF,1,[define if you have vfscanf]) ],[ AC_MSG_RESULT(no) ]) fi fi # $LIBWMF_BUILDSTYLE = heavy AM_CONDITIONAL(LIBWMF_OPT_TRIO,[ test "x$require_trio" = "xyes" ]) dnl - but always define this; the re-definitions are selective anyway... AC_DEFINE(TRIO_REPLACE_STDIO,1,[If any *printf or *scanf functions are missing, cover them with trio functions]) dnl Checks for libraries, etc. AC_ARG_WITH(layers,[ --with-layers whether to build layers [default is yes]],[ if [ test "x$withval" = "xyes" ]; then libwmf_layers=yes elif [ test "x$withval" = "xno" ]; then libwmf_layers=no elif [ test "x$withval" = "xmodules" ]; then AC_MSG_ERROR([* * * Sorry, modules not yet supported! * * *]) libwmf_layers=modules else AC_MSG_WARN([* * * Bad option to --with-layers! * * *]) libwmf_layers=yes fi ],[ libwmf_layers=yes ]) if test $LIBWMF_BUILDSTYLE = lite; then libwmf_layers=no fi # $LIBWMF_BUILDSTYLE = lite if [ test $libwmf_layers = no ]; then AC_DEFINE(WITHOUT_LAYERS,1,[defining this will disable egs, fig, svg & foreign layers]) fi AM_CONDITIONAL(LIBWMF_OPT_MODULES,[ test $libwmf_layers = modules ]) AM_CONDITIONAL(LIBWMF_OPT_LAYERS,[ test $libwmf_layers != no ]) libwmf_x=no libwmf_xml=no libwmf_gd_jpeg=no libwmf_plot=no if [ test $libwmf_layers != no ]; then AC_PATH_X AC_PATH_XTRA else X_CFLAGS="-DX_DISPLAY_MISSING=1" no_x=yes fi dnl (1) X {-lX11} [(!)-DX_DISPLAY_MISSING] WMF_X_CONFIG_CFLAGS="" WMF_X_CFLAGS="" WMF_X_LDFLAGS="" WMF_X_CFLAGS="$X_CFLAGS" if [ test "x$no_x" != "xyes" ]; then WMF_X_CONFIG_CFLAGS="$X_CFLAGS" WMF_X_LDFLAGS="$X_LIBS -lX11" libwmf_x=yes fi AM_CONDITIONAL(LIBWMF_OPT_X,[ test "x$no_x" != "xyes" ]) dnl (2) expat/libxml2 {-lexpat/-lxml2} WMF_XML_DIR="" WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" libwmf_xml=unknown AC_ARG_WITH(expat,[ --with-expat=DIR use expat in DIR],[ if test "x$withval" = "xno"; then libwmf_xml=libxml2 elif test "x$withval" = "xyes"; then libwmf_xml=expat else libwmf_xml=expat WMF_XML_DIR="$withval" fi ]) AC_ARG_WITH(libxml2,[ --with-libxml2=DIR use libxml2 in DIR],[ if test "x$withval" = "xno"; then if test $libwmf_xml = libxml2; then libwmf_xml=none else libwmf_xml=expat fi elif test "x$withval" = "xyes"; then if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * Can't specify both expat and libxml2! * * *]) else libwmf_xml=libxml2 fi else if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * Can't specify both expat and libxml2! * * *]) else libwmf_xml=libxml2 WMF_XML_DIR="$withval" fi fi ]) if test $LIBWMF_BUILDSTYLE = lite; then libwmf_xml=none fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_xml = expat -o $libwmf_xml = unknown; then if test "x$WMF_XML_DIR" != "x"; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS CPPFLAGS="$CPPFLAGS -I$WMF_XML_DIR/include" LDFLAGS="$LDFLAGS -L$WMF_XML_DIR/lib" WMF_XML_CFLAGS="-I$WMF_XML_DIR/include" WMF_XML_LDFLAGS="-L$WMF_XML_DIR/lib -lexpat" else WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="-lexpat" fi AC_CHECK_HEADER(expat.h,[ AC_CHECK_LIB(expat,XML_ParserFree,[ libwmf_xml=expat ],[ if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * unable to find expat * * *]) fi ]) ],[ if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * unable to find expat * * *]) fi ]) if test "x$WMF_XML_DIR" != "x"; then CPPFLAGS=$_cppflags LDFLAGS=$_ldflags fi fi if test $libwmf_xml = libxml2 -o $libwmf_xml = unknown; then if [ test -n "$WMF_XML_DIR" ]; then AC_PATH_PROG(XML2_CONFIG,xml2-config,,$WMF_XML_DIR/bin $PATH) else AC_PATH_PROG(XML2_CONFIG,xml2-config) fi if test "x$XML2_CONFIG" != "x"; then WMF_XML_CFLAGS=`$XML2_CONFIG --cflags` WMF_XML_LDFLAGS=`$XML2_CONFIG --libs` libwmf_xml=libxml2 elif test $libwmf_xml = libxml2; then AC_MSG_ERROR([* * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *]) fi fi if test $libwmf_xml = expat; then AC_DEFINE(HAVE_EXPAT,1,[define if you have expat]) elif test $libwmf_xml = libxml2; then AC_DEFINE(HAVE_LIBXML2,1,[define if you have libxml2]) else libwmf_xml=none WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" fi dnl (3) freetype {-lfreetype} [-DHAVE_LIBFREETYPE] WMF_FT_CONFIG_CFLAGS="" WMF_FT_CFLAGS="" WMF_FT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS have_freetype=no AC_ARG_WITH(freetype,[ --with-freetype=DIR use freetype2 in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then FREETYPE_DIR=$withval fi else AC_MSG_ERROR(* * * libwmf requires freetype2 * * *) fi ]) if [ test -n "$FREETYPE_DIR" ]; then AC_PATH_PROG(FREETYPE_CONFIG,freetype-config, ,[$FREETYPE_DIR/bin:$PATH]) else AC_PATH_PROG(FREETYPE_CONFIG,freetype-config) fi if [ test -n "$FREETYPE_CONFIG" ]; then if [ test -n "$FREETYPE_DIR" ]; then freetype_cflags="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include" freetype_libs=`$FREETYPE_CONFIG --libs` else freetype_cflags=`$FREETYPE_CONFIG --cflags` freetype_libs=`$FREETYPE_CONFIG --libs` fi else if [ test -n "$FREETYPE_DIR" ]; then freetype_cflags="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include" freetype_libs="-L$FREETYPE_DIR/lib -lfreetype" else freetype_cflags="" freetype_libs="-lfreetype" fi fi CPPFLAGS="$freetype_cflags $CPPFLAGS" LDFLAGS="$LDFLAGS $freetype_libs" AC_CHECK_LIB(freetype,FT_Init_FreeType,[ WMF_FT_LDFLAGS="$freetype_libs" ],[ AC_MSG_ERROR([* * * freetype(2) is required * * *]) ]) AC_CHECK_HEADER(ft2build.h,[ WMF_FT_CFLAGS="$freetype_cflags" WMF_FT_CONFIG_CFLAGS="$freetype_cflags" ],[ AC_MSG_ERROR([* * * freetype(2) is required * * *]) ]) GD_DEFS="$GD_DEFS -DHAVE_LIBFREETYPE" CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (4) zlib {-lz} WMF_Z_CONFIG_CFLAGS="" WMF_Z_CFLAGS="" WMF_Z_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(zlib,[ --with-zlib=DIR use libz in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then ZLIB_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else AC_MSG_ERROR(* * * libwmf requires zlib * * *) fi ]) if test $LIBWMF_BUILDSTYLE = heavy; then dnl WMF_Z_CFLAGS are required later on when testing for png, etc. AC_CHECK_HEADER(zlib.h,[ AC_CHECK_LIB(z,gzputs,[ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lz" else WMF_Z_LDFLAGS="-lz" fi ],[ AC_CHECK_LIB(gz,gzputs,[ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi ],[ AC_MSG_ERROR(* * * unable to find libz which is required by libwmf * * *) ]) ]) ],[ AC_MSG_ERROR(* * * unable to find "zlib.h" which is required by libwmf * * *) ]) fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (5) png {-lpng} [-DHAVE_LIBPNG] WMF_PNG_CFLAGS="" WMF_PNG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(png,[ --with-png=DIR use libpng in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then PNG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else AC_MSG_ERROR(* * * libwmf requires libpng * * *) fi ]) if test $LIBWMF_BUILDSTYLE = heavy; then dnl "png.h" includes "zlib.h" CPPFLAGS="$CPPFLAGS $WMF_Z_CFLAGS" AC_CHECK_HEADER(png.h,[ AC_CHECK_LIB(png,png_write_image,[ if [ test "x$PNG_DIR" != "x" ]; then WMF_PNG_CFLAGS="-I$PNG_DIR/include" WMF_PNG_LDFLAGS="-L$PNG_DIR/lib -lpng" else WMF_PNG_LDFLAGS="-lpng" fi ],[ AC_MSG_ERROR(* * * unable to find libpng which is required by libwmf * * *) ],-lz -lm) ],[ AC_MSG_ERROR(* * * unable to find "png.h" which is required by libwmf * * *) ]) AC_DEFINE(HAVE_LIBPNG,1,[define if you have libpng]) GD_DEFS="$GD_DEFS -DHAVE_LIBPNG" fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (6) jpeg {-ljpeg} [-DHAVE_LIBJPEG] (optional) WMF_JPEG_CFLAGS="" WMF_JPEG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(jpeg,[ --with-jpeg=DIR use libjpeg in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then JPEG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_jpeg=yes else search_for_jpeg=no fi ],[ search_for_jpeg=yes ]) if test $LIBWMF_BUILDSTYLE = lite; then search_for_jpeg=no fi # $LIBWMF_BUILDSTYLE = lite if [ test "$search_for_jpeg" != "no" ]; then AC_CHECK_HEADER(jpeglib.h,[ AC_CHECK_LIB(jpeg,jpeg_CreateCompress,[ if [ test "x$JPEG_DIR" != "x" ]; then WMF_JPEG_CFLAGS="-I$JPEG_DIR/include" WMF_JPEG_LDFLAGS="-L$JPEG_DIR/lib -ljpeg" else WMF_JPEG_LDFLAGS="-ljpeg" fi AC_DEFINE(HAVE_LIBJPEG,1,[define if you have libjpeg]) GD_DEFS="$GD_DEFS -DHAVE_LIBJPEG" libwmf_gd_jpeg=yes ]) ]) fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (7) gd {-lgd} dnl Chances are that even if gd is present, it won't have been patched for compatibility dnl with libwmf, but worth checking anyway... WMF_GD_CFLAGS="" WMF_GD_LDFLAGS="" libwmf_gd="wmf" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(sys-gd,[ --with-sys-gd=DIR use system GD in DIR (if compatible)],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then GD_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_gd=yes else search_for_gd=no fi ],[ search_for_gd=yes ]) AC_ARG_ENABLE(gd,[ --disable-gd don't build GD, don't look for it, don't require it],[ if [ test "x$enableval" = "xno" ]; then search_for_gd=no libwmf_gd="none" fi ],[ if [ test $libwmf_layers = no ]; then search_for_gd=no libwmf_gd="none" fi ]) if [ test "$search_for_gd" != "no" ]; then other_libs="" dnl Do I need extra libs with Xpm? dnl if [ test "x$libwmf_x" = "xyes" ]; then CPPFLAGS="$CPPFLAGS $WMF_X_CFLAGS" LDFLAGS="$LDFLAGS $WMF_X_LDFLAGS" AC_CHECK_LIB(Xpm,main,[ other_libs="$other_libs -lXpm" WMF_GD_LDFLAGS="-lXpm" ]) fi if [ test "x$libwmf_gd_jpeg" = "xyes" ]; then CPPFLAGS="$CPPFLAGS $WMF_JPEG_CFLAGS" LDFLAGS="$LDFLAGS $WMF_JPEG_LDFLAGS" other_libs="$other_libs -ljpeg" fi CPPFLAGS="$CPPFLAGS $WMF_FT_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" LDFLAGS="$LDFLAGS $WMF_FT_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS" other_libs="$other_libs -lfreetype -lpng -lz -lm" AC_CHECK_HEADER(gd.h,[ AC_CHECK_LIB(gd,gdClipSetAdd,[ AC_CHECK_LIB(gd,gdft_draw_bitmap,[ libwmf_gd="sys" ],,$other_libs) ],,$other_libs) ]) fi if [ test "x$libwmf_gd" != "xnone" ]; then AC_DEFINE(HAVE_GD,1,[define if you have libgd]) build_gd_layer=yes else build_gd_layer=no fi if [ test "x$libwmf_gd" = "xsys" ]; then if [ test "x$GD_DIR" != "x" ]; then WMF_GD_CFLAGS="-I$GD_DIR/include" WMF_GD_LDFLAGS="-L$GD_DIR/lib -lgd $WMF_GD_LDFLAGS" else WMF_GD_LDFLAGS="-lgd $WMF_GD_LDFLAGS" fi elif [ test "x$libwmf_gd" = "xnone" ]; then dnl Slight hack here to disable GD build: libwmf_gd="sys" else WMF_GD_LDFLAGS="" fi AM_CONDITIONAL(LIBWMF_OPT_GD,[ test "x$build_gd_layer" = "xyes" ]) AM_CONDITIONAL(LIBWMF_OPT_SYS_GD,[ test "x$libwmf_gd" = "xsys" ]) CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (8) plot {-lplot} WMF_PLOT_CFLAGS="" WMF_PLOT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # AC_ARG_WITH(plot,[ --with-plot=DIR use GNU plotutils (>= 2.4.0) in DIR (default no)],[ # if [ test "x$withval" != "xno" ]; then # AC_MSG_ERROR([* * * plotutils is not supported, sorry * * *]) # if [ test "x$withval" != "xyes" ]; then # PLOT_DIR=$withval # CPPFLAGS="$CPPFLAGS -I$withval/include" # LDFLAGS="$LDFLAGS -L$withval/lib" # fi # search_for_plot=yes # else # search_for_plot=no # fi #],[ search_for_plot=no #]) search_for_plot=no if [ test "$search_for_plot" != "no" ]; then AC_CHECK_HEADER(plot.h,[ AC_CHECK_LIB(plot,pl_libplot_ver,[ AC_LIBPLOT_LIBS if [ test $ac_can_link_libplot != no ]; then if [ test "x$PLOT_DIR" != "x" ]; then WMF_PLOT_CFLAGS="-I$PLOT_DIR/include" WMF_PLOT_LDFLAGS="-L$PLOT_DIR/lib $LIBPLOT_LIBS" else WMF_PLOT_LDFLAGS="$LIBPLOT_LIBS" fi AC_DEFINE(HAVE_LIBPLOT,1,[define if you have libplot]) libwmf_plot=maybe else AC_MSG_ERROR(* * * sorry - unable to link against libplot * * *) fi ],[ AC_MSG_ERROR(GNU plotutils >= 2.4.0 required) ]) ]) fi AM_CONDITIONAL(LIBWMF_OPT_PLOT,[ test "x$libwmf_plot" != "xno" ]) CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl Dom's gdk-pixbuf plugin wmf_gdk_pixbuf=no GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" GDK_PIXBUF_DIR="" if test $LIBWMF_BUILDSTYLE != lite; then PKG_CHECK_MODULES(GDK_PIXBUF,gdk-pixbuf-2.0 >= 2.1.2,[ GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GDK_PIXBUF_DIR="gtk-2.0/$GTK_VERSION/loaders" wmf_gdk_pixbuf=yes ],[ wmf_gdk_pixbuf=no ]) fi AM_CONDITIONAL(LIBWMF_GDK_PIXBUF,[test $wmf_gdk_pixbuf = yes]) AC_SUBST(GDK_PIXBUF_CFLAGS) AC_SUBST(GDK_PIXBUF_LIBS) AC_SUBST(GDK_PIXBUF_DIR) dnl Other options... AC_ARG_WITH(docdir,[ --with-docdir=DIR install documentation in DIR],[ WMF_DOCDIR=$withval ],[ if test "x$prefix" = "xNONE"; then WMF_DOCDIR=$ac_default_prefix/share/doc/$PACKAGE else WMF_DOCDIR=$prefix/share/doc/$PACKAGE fi ]) AC_ARG_WITH(fontdir,[ --with-fontdir=DIR install Type1 fonts in DIR],[ WMF_FONTDIR=$withval ],[ if test "x$prefix" = "xNONE"; then WMF_FONTDIR=$ac_default_prefix/share/$PACKAGE/fonts else WMF_FONTDIR=$prefix/share/$PACKAGE/fonts fi ]) AC_ARG_WITH(sysfontmap,[ --with-sysfontmap=FILE [default is /usr/share/fonts/fontmap]],[ WMF_SYS_FONTMAP=$withval ],[ WMF_SYS_FONTMAP=/usr/share/fonts/fontmap ]) AC_ARG_WITH(xtrafontmap,[ --with-xtrafontmap=FILE non-system XML fontmap],[ WMF_XTRA_FONTMAP=$withval ],[ WMF_XTRA_FONTMAP=$WMF_FONTDIR/fontmap ]) AC_ARG_WITH(gsfontmap,[ --with-gsfontmap=FILE ghostscript fontmap],[ WMF_GS_FONTMAP=$withval ],[ dnl dnl Test first for Debian Font Manager's ghostscript Fontmap. dnl Next test for GnuWin32 ghostscript Fontmap. dnl Next test for standard ghostscript Fontmap. dnl If not found, default to RedHat location. dnl if [ test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS ]; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS elif [ test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap ]; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap elif [ test -r 'c:/progra~1/gs/gs/lib/fontmap.gs' ]; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap.gs' elif [ test -r 'c:/progra~1/gs/gs/lib/fontmap' ]; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap' elif [ test -r 'c:/gs/fonts/fontmap.gs' ]; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap.gs' elif [ test -r 'c:/gs/fonts/fontmap' ]; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap' else WMF_GS_FONTMAP=/usr/share/ghostscript/5.50/Fontmap if test -d /usr/share/ghostscript; then for i in `ls /usr/share/ghostscript`; do if test -r "/usr/share/ghostscript/$i/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap" fi done fi fi ]) AC_ARG_WITH(gsfontdir,[ --with-gsfontdir=DIR directory for ghostscript fonts],[ WMF_GS_FONTDIR=$withval ],[ dnl dnl Test first for Debian Font Manager's ghostscript font directory. dnl Next test for GnuWin32 ghostscript font directory. dnl Next test for standard ghostscript font directory. dnl If not found, default to RedHat location. dnl if [ test -d /var/lib/defoma/gs.d/dirs/fonts ]; then WMF_GS_FONTDIR=/var/lib/defoma/gs.d/dirs/fonts elif [ test -d 'c:/progra~1/gs/gs/lib/fonts' ]; then WMF_GS_FONTDIR='c:/progra~1/gs/gs/lib/fonts' elif [ test -d 'c:/gs/fonts' ]; then WMF_GS_FONTDIR='c:/gs/fonts' else WMF_GS_FONTDIR=/usr/share/fonts/default/Type1 fi ]) dnl Output... WMF_CFLAGS="$WMF_FT_CFLAGS $WMF_X_CFLAGS $WMF_PLOT_CFLAGS $WMF_XML_CFLAGS" WMF_CFLAGS="$WMF_CFLAGS $WMF_GD_CFLAGS $WMF_JPEG_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" AC_SUBST(WMF_CFLAGS) WMF_CONFIG_CFLAGS="$WMF_FT_CONFIG_CFLAGS $WMF_Z_CONFIG_CFLAGS $WMF_X_CONFIG_CFLAGS" AC_SUBST(WMF_CONFIG_CFLAGS) WMF_LIBFLAGS="$WMF_PLOT_LDFLAGS $WMF_GD_LDFLAGS $WMF_FT_LDFLAGS $WMF_X_LDFLAGS $WMF_XML_LDFLAGS" WMF_LIBFLAGS="$WMF_LIBFLAGS $WMF_JPEG_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS $SYS_LIBM" AC_SUBST(WMF_LIBFLAGS) AC_SUBST(WMF_DOCDIR) AC_SUBST(WMF_FONTDIR) AC_SUBST(WMF_SYS_FONTMAP) AC_SUBST(WMF_XTRA_FONTMAP) AC_SUBST(WMF_GS_FONTMAP) AC_SUBST(WMF_GS_FONTDIR) AC_SUBST(WMF_DEFS) AC_SUBST(GD_DEFS) AH_BOTTOM([ #endif /* ! LIBWMF_CONFIG_H */ ]) AC_CONFIG_FILES([ Makefile doc/Makefile doc/caolan/Makefile doc/caolan/pics/Makefile doc/html/Makefile fonts/Makefile fonts/libwmf-fontmap fonts/fontmap include/Makefile include/libwmf/Makefile src/Makefile src/extra/Makefile src/extra/trio/Makefile src/extra/gd/Makefile src/ipa/Makefile src/convert/Makefile libwmf-config libwmf.spec ]) AC_OUTPUT echo "" echo " Support for X: $libwmf_x" echo " Support for GD: $libwmf_gd" echo " Support for JPEG though GD: $libwmf_gd_jpeg" echo " Support for XML: $libwmf_xml" echo "" echo " Documentation directory: $WMF_DOCDIR" echo " Font directory: $WMF_FONTDIR" echo " System XML fontmap file: $WMF_SYS_FONTMAP" echo " Non-system XML fontmap file: $WMF_XTRA_FONTMAP" echo " ghostscript fontmap file: $WMF_GS_FONTMAP" echo " ghostscript font directory: $WMF_GS_FONTDIR" echo "" echo " building gdk-pixbuf plug-in? $wmf_gdk_pixbuf" echo "" libwmf-0.2.8.4/configure.in0000644000077100007710000005416510271767705015043 0ustar fjffjf00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT(src/player.c) LIBWMF_PACKAGE=libwmf AC_SUBST(LIBWMF_PACKAGE) dnl This next section is courtesy gtk+ dnl # Making releases: # WMF_MICRO_VERSION += 1; # WMF_INTERFACE_AGE += 1; # WMF_BINARY_AGE += 1; # if any functions have been added, set WMF_INTERFACE_AGE to 0. # if backwards compatibility has been broken, # set WMF_BINARY_AGE and WMF_INTERFACE_AGE to 0. # WMF_MAJOR_VERSION=0 WMF_MINOR_VERSION=2 WMF_MICRO_VERSION=8 WMF_INTERFACE_AGE=0 WMF_BINARY_AGE=1 WMFLITE_INTERFACE_AGE=1 WMFLITE_BINARY_AGE=1 dnl spec file substitutions LIBWMF_VERSION=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION.$WMF_MICRO_VERSION LIBWMF_RELEASE=1 AC_SUBST(LIBWMF_VERSION) AC_SUBST(LIBWMF_RELEASE) # libtool versioning LT_RELEASE=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION AC_SUBST(LT_RELEASE) LT_CURRENT=`expr $WMF_MICRO_VERSION - $WMF_INTERFACE_AGE` LT_REVISION=$WMF_INTERFACE_AGE LT_AGE=`expr $WMF_BINARY_AGE - $WMF_INTERFACE_AGE` AC_SUBST(LT_CURRENT) AC_SUBST(LT_REVISION) AC_SUBST(LT_AGE) LT_LITE_CURRENT=`expr $WMF_MICRO_VERSION - $WMFLITE_INTERFACE_AGE` LT_LITE_REVISION=$WMFLITE_INTERFACE_AGE LT_LITE_AGE=`expr $WMFLITE_BINARY_AGE - $WMFLITE_INTERFACE_AGE` AC_SUBST(LT_LITE_CURRENT) AC_SUBST(LT_LITE_REVISION) AC_SUBST(LT_LITE_AGE) # For automake. PACKAGE=$LIBWMF_PACKAGE VERSION=$LIBWMF_VERSION dnl Initialize automake stuff AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define) # Specify a configuration file AM_CONFIG_HEADER(wmfconfig.h) # A despicable hack: AUTOHEADER="autoheader -l patches" AC_SUBST(AUTOHEADER) # CFLAGS to be listed by libwmf-config should be added to this: WMF_CONFIG_CFLAGS= # Other CFLAGS, not to be listed by libwmf-config, should be added to this: WMF_CFLAGS= # LDFLAGS to be listed by libwmf-config should be added to this: WMF_LIBFLAGS= # WMF_DEFS is for flags such as -DDEBUG which are to applied only to # libwmf source not extra packages such as gd - more global defs should be # added to WMF_CFLAGS AC_ARG_ENABLE(debug,[ --enable-debug set DEBUG option to libwmf [default=no]],[ if [ test "x$enableval" != "xno" ]; then WMF_DEFS="-DDEBUG=1" else WMF_DEFS= fi ],[ WMF_DEFS= ]) AC_ARG_ENABLE(ansi,[ --enable-ansi set -ansi option to libwmf [default=no]],[ if [ test "x$enableval" != "xno" ]; then WMF_DEFS="$WMF_DEFS -ansi" fi ]) AC_ARG_ENABLE(pedantic,[ --enable-pedantic set -pedantic option to libwmf [default=no]],[ if [ test "x$enableval" != "xno" ]; then WMF_DEFS="$WMF_DEFS -pedantic" fi ]) LIBWMF_BUILDSTYLE=heavy libwmf_build_all=yes AC_ARG_ENABLE(heavy,[ --disable-heavy only build libwmflite [default=build all]],[ if [ test "x$enableval" = "xno" ]; then LIBWMF_BUILDSTYLE=lite libwmf_build_all=no fi ]) AC_SUBST(LIBWMF_BUILDSTYLE) AM_CONDITIONAL(LIBWMF_BUILD_ALL,[ test "x$libwmf_build_all" = "xyes" ]) # gd does not read config.h so need to pass it options on the command line: GD_DEFS= dnl Initialize libtool # Tests for Windows AC_CYGWIN AC_EXEEXT AC_OBJEXT AC_MINGW32 # End Tests for Windows AC_MSG_CHECKING([for Win32]) case "$host" in *-*-mingw*) os_win32=yes SYS_LIBM="" ;; *) os_win32=no SYS_LIBM="-lm" ;; esac AC_MSG_RESULT([$os_win32]) AC_SUBST(SYS_LIBM) dnl Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_RANLIB # Configure libtool AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL #end libtool stuff dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(time.h) AC_CHECK_HEADER(unistd.h,[ AC_DEFINE(HAVE_UNISTD_H) GD_DEFS="$GD_DEFS -DHAVE_UNISTD_H" ]) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_OFF_T AC_TYPE_SIZE_T dnl Checks for library functions. AC_CHECK_FUNCS(strstr) dnl Check for trio functions. require_trio=no if test $LIBWMF_BUILDSTYLE = heavy; then AC_CHECK_FUNCS(printf fprintf vfprintf sprintf,,require_trio=yes) AC_CHECK_FUNCS(vprintf vsprintf) AC_CHECK_FUNCS(sscanf,,require_trio=yes) AC_CHECK_FUNCS(scanf vscanf fscanf vsscanf) dnl Special case (1): vsnprintf AC_CHECK_FUNCS(vsnprintf,,check_for_vsnprintf=yes) if [ test "x$check_for_vsnprintf" = "xyes" ]; then AC_CHECK_FUNC(_vsnprintf,[ AC_DEFINE(HAVE_VSNPRINTF) AC_DEFINE(vsnprintf,_vsnprintf) ],[ dnl Hmm. On the off-chance, check for vsnprintf in libdb. dnl This should, hopefully, solve the problem with Tru64 4.x dnl which is incompatible with trio (the latter's fault). AC_CHECK_LIB(db,vsnprintf,[ AC_DEFINE(HAVE_VSNPRINTF) WMF_LIBFLAGS="$WMF_LIBFLAGS -ldb" ],[ require_trio=yes ]) ]) fi dnl Special case (2): snprintf AC_CHECK_FUNCS(snprintf,,check_for_snprintf=yes) if [ test "x$check_for_snprintf" = "xyes" ]; then AC_CHECK_FUNC(_snprintf,[ AC_DEFINE(HAVE_SNPRINTF) AC_DEFINE(snprintf,_snprintf) ]) fi dnl Special case (3): vfscanf is defined as a macro for Darwin / Mac OS X AC_CHECK_FUNCS(vfscanf,,check_for_vfscanf=yes) if [ test "x$check_for_vfscanf" = "xyes" ]; then AC_MSG_CHECKING(for vfscanf in stdio.h) AC_EGREP_HEADER(vfscanf,stdio.h,[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_VFSCANF) ],[ AC_MSG_RESULT(no) ]) fi fi # $LIBWMF_BUILDSTYLE = heavy AM_CONDITIONAL(LIBWMF_OPT_TRIO,[ test "x$require_trio" = "xyes" ]) dnl Checks for libraries, etc. AC_ARG_WITH(layers,[ --with-layers whether to build layers [default is yes]],[ if [ test "x$withval" = "xyes" ]; then libwmf_layers=yes elif [ test "x$withval" = "xno" ]; then libwmf_layers=no elif [ test "x$withval" = "xmodules" ]; then AC_MSG_ERROR([* * * Sorry, modules not yet supported! * * *]) libwmf_layers=modules else AC_MSG_WARN([* * * Bad option to --with-layers! * * *]) libwmf_layers=yes fi ],[ libwmf_layers=yes ]) if test $LIBWMF_BUILDSTYLE = lite; then libwmf_layers=no fi # $LIBWMF_BUILDSTYLE = lite if [ test $libwmf_layers = no ]; then AC_DEFINE(WITHOUT_LAYERS,1) fi AM_CONDITIONAL(LIBWMF_OPT_MODULES,[ test $libwmf_layers = modules ]) AM_CONDITIONAL(LIBWMF_OPT_LAYERS,[ test $libwmf_layers != no ]) libwmf_x=no libwmf_xml=no libwmf_gd_jpeg=no libwmf_plot=no if [ test $libwmf_layers != no ]; then AC_PATH_X AC_PATH_XTRA else X_CFLAGS="-DX_DISPLAY_MISSING=1" no_x=yes fi dnl (1) X {-lX11} [(!)-DX_DISPLAY_MISSING] WMF_X_CONFIG_CFLAGS="" WMF_X_CFLAGS="" WMF_X_LDFLAGS="" WMF_X_CFLAGS="$X_CFLAGS" if [ test "x$no_x" != "xyes" ]; then WMF_X_CONFIG_CFLAGS="$X_CFLAGS" WMF_X_LDFLAGS="$X_LIBS -lX11" libwmf_x=yes fi AM_CONDITIONAL(LIBWMF_OPT_X,[ test "x$no_x" != "xyes" ]) dnl (2) expat/libxml2 {-lexpat/-lxml2} WMF_XML_DIR="" WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" libwmf_xml=unknown AC_ARG_WITH(expat,[ --with-expat=DIR use expat in DIR],[ if test "x$withval" = "xno"; then libwmf_xml=libxml2 elif test "x$withval" = "xyes"; then libwmf_xml=expat else libwmf_xml=expat WMF_XML_DIR="$withval" fi ]) AC_ARG_WITH(libxml2,[ --with-libxml2=DIR use libxml2 in DIR],[ if test "x$withval" = "xno"; then if test $libwmf_xml = libxml2; then libwmf_xml=none else libwmf_xml=expat fi elif test "x$withval" = "xyes"; then if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * Can't specify both expat and libxml2! * * *]) else libwmf_xml=libxml2 fi else if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * Can't specify both expat and libxml2! * * *]) else libwmf_xml=libxml2 WMF_XML_DIR="$withval" fi fi ]) if test $LIBWMF_BUILDSTYLE = lite; then libwmf_xml=none fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_xml = expat -o $libwmf_xml = unknown; then if test "x$WMF_XML_DIR" != "x"; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS CPPFLAGS="$CPPFLAGS -I$WMF_XML_DIR/include" LDFLAGS="$LDFLAGS -L$WMF_XML_DIR/lib" WMF_XML_CFLAGS="-I$WMF_XML_DIR/include" WMF_XML_LDFLAGS="-L$WMF_XML_DIR/lib -lexpat" else WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="-lexpat" fi AC_CHECK_HEADER(expat.h,[ AC_CHECK_LIB(expat,XML_ParserFree,[ libwmf_xml=expat ],[ if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * unable to find expat * * *]) fi ]) ],[ if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * unable to find expat * * *]) fi ]) if test "x$WMF_XML_DIR" != "x"; then CPPFLAGS=$_cppflags LDFLAGS=$_ldflags fi fi if test $libwmf_xml = libxml2 -o $libwmf_xml = unknown; then if [ test -n "$WMF_XML_DIR" ]; then AC_PATH_PROG(XML2_CONFIG,xml2-config,,$WMF_XML_DIR/bin $PATH) else AC_PATH_PROG(XML2_CONFIG,xml2-config) fi if test "x$XML2_CONFIG" != "x"; then WMF_XML_CFLAGS=`$XML2_CONFIG --cflags` WMF_XML_LDFLAGS=`$XML2_CONFIG --libs` libwmf_xml=libxml2 elif test $libwmf_xml = libxml2; then AC_MSG_ERROR([* * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *]) fi fi if test $libwmf_xml = expat; then AC_DEFINE(HAVE_EXPAT) elif test $libwmf_xml = libxml2; then AC_DEFINE(HAVE_LIBXML2) else libwmf_xml=none WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" fi dnl (3) freetype {-lfreetype} [-DHAVE_LIBFREETYPE] WMF_FT_CONFIG_CFLAGS="" WMF_FT_CFLAGS="" WMF_FT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS have_freetype=no AC_ARG_WITH(freetype,[ --with-freetype=DIR use freetype2 in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then FREETYPE_DIR=$withval fi else AC_MSG_ERROR(* * * libwmf requires freetype2 * * *) fi ]) if [ test -n "$FREETYPE_DIR" ]; then AC_PATH_PROG(FREETYPE_CONFIG,freetype-config, ,[$FREETYPE_DIR/bin:$PATH]) else AC_PATH_PROG(FREETYPE_CONFIG,freetype-config) fi if [ test -n "$FREETYPE_CONFIG" ]; then if [ test -n "$FREETYPE_DIR" ]; then freetype_cflags="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include" freetype_libs=`$FREETYPE_CONFIG --libs` else freetype_cflags=`$FREETYPE_CONFIG --cflags` freetype_libs=`$FREETYPE_CONFIG --libs` fi else if [ test -n "$FREETYPE_DIR" ]; then freetype_cflags="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include" freetype_libs="-L$FREETYPE_DIR/lib -lfreetype" else freetype_cflags="" freetype_libs="-lfreetype" fi fi CPPFLAGS="$freetype_cflags $CPPFLAGS" LDFLAGS="$LDFLAGS $freetype_libs" AC_CHECK_LIB(freetype,FT_Init_FreeType,[ WMF_FT_LDFLAGS="$freetype_libs" ],[ AC_MSG_ERROR([* * * freetype(2) is required * * *]) ]) AC_CHECK_HEADER(ft2build.h,[ WMF_FT_CFLAGS="$freetype_cflags" WMF_FT_CONFIG_CFLAGS="$freetype_cflags" ],[ AC_MSG_ERROR([* * * freetype(2) is required * * *]) ]) GD_DEFS="$GD_DEFS -DHAVE_LIBFREETYPE" CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (4) zlib {-lz} WMF_Z_CONFIG_CFLAGS="" WMF_Z_CFLAGS="" WMF_Z_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(zlib,[ --with-zlib=DIR use libz in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then ZLIB_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else AC_MSG_ERROR(* * * libwmf requires zlib * * *) fi ]) if test $LIBWMF_BUILDSTYLE = heavy; then dnl WMF_Z_CFLAGS are required later on when testing for png, etc. AC_CHECK_HEADER(zlib.h,[ AC_CHECK_LIB(z,gzputs,[ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lz" else WMF_Z_LDFLAGS="-lz" fi ],[ AC_CHECK_LIB(gz,gzputs,[ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi ],[ AC_MSG_ERROR(* * * unable to find libz which is required by libwmf * * *) ]) ]) ],[ AC_MSG_ERROR(* * * unable to find "zlib.h" which is required by libwmf * * *) ]) fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (5) png {-lpng} [-DHAVE_LIBPNG] WMF_PNG_CFLAGS="" WMF_PNG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(png,[ --with-png=DIR use libpng in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then PNG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else AC_MSG_ERROR(* * * libwmf requires libpng * * *) fi ]) if test $LIBWMF_BUILDSTYLE = heavy; then dnl "png.h" includes "zlib.h" CPPFLAGS="$CPPFLAGS $WMF_Z_CFLAGS" AC_CHECK_HEADER(png.h,[ AC_CHECK_LIB(png,png_write_image,[ if [ test "x$PNG_DIR" != "x" ]; then WMF_PNG_CFLAGS="-I$PNG_DIR/include" WMF_PNG_LDFLAGS="-L$PNG_DIR/lib -lpng" else WMF_PNG_LDFLAGS="-lpng" fi ],[ AC_MSG_ERROR(* * * unable to find libpng which is required by libwmf * * *) ],-lz -lm) ],[ AC_MSG_ERROR(* * * unable to find "png.h" which is required by libwmf * * *) ]) AC_DEFINE(HAVE_LIBPNG) GD_DEFS="$GD_DEFS -DHAVE_LIBPNG" fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (6) jpeg {-ljpeg} [-DHAVE_LIBJPEG] (optional) WMF_JPEG_CFLAGS="" WMF_JPEG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(jpeg,[ --with-jpeg=DIR use libjpeg in DIR],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then JPEG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_jpeg=yes else search_for_jpeg=no fi ],[ search_for_jpeg=yes ]) if test $LIBWMF_BUILDSTYLE = lite; then search_for_jpeg=no fi # $LIBWMF_BUILDSTYLE = lite if [ test "$search_for_jpeg" != "no" ]; then AC_CHECK_HEADER(jpeglib.h,[ AC_CHECK_LIB(jpeg,jpeg_CreateCompress,[ if [ test "x$JPEG_DIR" != "x" ]; then WMF_JPEG_CFLAGS="-I$JPEG_DIR/include" WMF_JPEG_LDFLAGS="-L$JPEG_DIR/lib -ljpeg" else WMF_JPEG_LDFLAGS="-ljpeg" fi AC_DEFINE(HAVE_LIBJPEG) GD_DEFS="$GD_DEFS -DHAVE_LIBJPEG" libwmf_gd_jpeg=yes ]) ]) fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (7) gd {-lgd} dnl Chances are that even if gd is present, it won't have been patched for compatibility dnl with libwmf, but worth checking anyway... WMF_GD_CFLAGS="" WMF_GD_LDFLAGS="" libwmf_gd="wmf" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH(sys-gd,[ --with-sys-gd=DIR use system GD in DIR (if compatible)],[ if [ test "x$withval" != "xno" ]; then if [ test "x$withval" != "xyes" ]; then GD_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_gd=yes else search_for_gd=no fi ],[ search_for_gd=yes ]) AC_ARG_ENABLE(gd,[ --disable-gd don't build GD, don't look for it, don't require it],[ if [ test "x$enableval" = "xno" ]; then search_for_gd=no libwmf_gd="none" fi ],[ if [ test $libwmf_layers = no ]; then search_for_gd=no libwmf_gd="none" fi ]) if [ test "$search_for_gd" != "no" ]; then other_libs="" dnl Do I need extra libs with Xpm? dnl if [ test "x$libwmf_x" = "xyes" ]; then CPPFLAGS="$CPPFLAGS $WMF_X_CFLAGS" LDFLAGS="$LDFLAGS $WMF_X_LDFLAGS" AC_CHECK_LIB(Xpm,main,[ other_libs="$other_libs -lXpm" WMF_GD_LDFLAGS="-lXpm" ]) fi if [ test "x$libwmf_gd_jpeg" = "xyes" ]; then CPPFLAGS="$CPPFLAGS $WMF_JPEG_CFLAGS" LDFLAGS="$LDFLAGS $WMF_JPEG_LDFLAGS" other_libs="$other_libs -ljpeg" fi CPPFLAGS="$CPPFLAGS $WMF_FT_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" LDFLAGS="$LDFLAGS $WMF_FT_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS" other_libs="$other_libs -lfreetype -lpng -lz -lm" AC_CHECK_HEADER(gd.h,[ AC_CHECK_LIB(gd,gdClipSetAdd,[ AC_CHECK_LIB(gd,gdft_draw_bitmap,[ libwmf_gd="sys" ],,$other_libs) ],,$other_libs) ]) fi if [ test "x$libwmf_gd" != "xnone" ]; then AC_DEFINE(HAVE_GD,1) build_gd_layer=yes else build_gd_layer=no fi if [ test "x$libwmf_gd" = "xsys" ]; then if [ test "x$GD_DIR" != "x" ]; then WMF_GD_CFLAGS="-I$GD_DIR/include" WMF_GD_LDFLAGS="-L$GD_DIR/lib -lgd $WMF_GD_LDFLAGS" else WMF_GD_LDFLAGS="-lgd $WMF_GD_LDFLAGS" fi elif [ test "x$libwmf_gd" = "xnone" ]; then dnl Slight hack here to disable GD build: libwmf_gd="sys" else WMF_GD_LDFLAGS="" fi AM_CONDITIONAL(LIBWMF_OPT_GD,[ test "x$build_gd_layer" = "xyes" ]) AM_CONDITIONAL(LIBWMF_OPT_SYS_GD,[ test "x$libwmf_gd" = "xsys" ]) CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl (8) plot {-lplot} WMF_PLOT_CFLAGS="" WMF_PLOT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS #AC_ARG_WITH(plot,[ --with-plot=DIR use GNU plotutils (>= 2.4.0) in DIR (default no)],[ # if [ test "x$withval" != "xno" ]; then # AC_MSG_ERROR([* * * plotutils is not supported, sorry * * *]) # if [ test "x$withval" != "xyes" ]; then # PLOT_DIR=$withval # CPPFLAGS="$CPPFLAGS -I$withval/include" # LDFLAGS="$LDFLAGS -L$withval/lib" # fi # search_for_plot=yes # else # search_for_plot=no # fi #],[ search_for_plot=no #]) search_for_plot=no if [ test "$search_for_plot" != "no" ]; then AC_CHECK_HEADER(plot.h,[ AC_CHECK_LIB(plot,pl_libplot_ver,[ AC_LIBPLOT_LIBS if [ test $ac_can_link_libplot != no ]; then if [ test "x$PLOT_DIR" != "x" ]; then WMF_PLOT_CFLAGS="-I$PLOT_DIR/include" WMF_PLOT_LDFLAGS="-L$PLOT_DIR/lib $LIBPLOT_LIBS" else WMF_PLOT_LDFLAGS="$LIBPLOT_LIBS" fi AC_DEFINE(HAVE_LIBPLOT) libwmf_plot=maybe else AC_MSG_ERROR(* * * sorry - unable to link against libplot * * *) fi ],[ AC_MSG_ERROR(GNU plotutils >= 2.4.0 required) ]) ]) fi AM_CONDITIONAL(LIBWMF_OPT_PLOT,[ test "x$libwmf_plot" != "xno" ]) CPPFLAGS=$_cppflags LDFLAGS=$_ldflags dnl Dom's gdk-pixbuf plugin wmf_gdk_pixbuf=no GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" GDK_PIXBUF_DIR="" if test $LIBWMF_BUILDSTYLE != lite; then PKG_CHECK_MODULES(GDK_PIXBUF,gdk-pixbuf-2.0 >= 2.1.2,[ GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GDK_PIXBUF_DIR="gtk-2.0/$GTK_VERSION/loaders" wmf_gdk_pixbuf=yes ],[ wmf_gdk_pixbuf=no ]) fi AM_CONDITIONAL(LIBWMF_GDK_PIXBUF,[test $wmf_gdk_pixbuf = yes]) AC_SUBST(GDK_PIXBUF_CFLAGS) AC_SUBST(GDK_PIXBUF_LIBS) AC_SUBST(GDK_PIXBUF_DIR) dnl Other options... AC_ARG_WITH(docdir,[ --with-docdir=DIR install documentation in DIR],[ WMF_DOCDIR=$withval ],[ if test "x$prefix" = "xNONE"; then WMF_DOCDIR=$ac_default_prefix/share/doc/$PACKAGE else WMF_DOCDIR=$prefix/share/doc/$PACKAGE fi ]) AC_ARG_WITH(fontdir,[ --with-fontdir=DIR install Type1 fonts in DIR],[ WMF_FONTDIR=$withval ],[ if test "x$prefix" = "xNONE"; then WMF_FONTDIR=$ac_default_prefix/share/$PACKAGE/fonts else WMF_FONTDIR=$prefix/share/$PACKAGE/fonts fi ]) AC_ARG_WITH(sysfontmap,[ --with-sysfontmap=FILE [default is /usr/share/fonts/fontmap]],[ WMF_SYS_FONTMAP=$withval ],[ WMF_SYS_FONTMAP=/usr/share/fonts/fontmap ]) AC_ARG_WITH(xtrafontmap,[ --with-xtrafontmap=FILE non-system XML fontmap],[ WMF_XTRA_FONTMAP=$withval ],[ WMF_XTRA_FONTMAP=$WMF_FONTDIR/fontmap ]) AC_ARG_WITH(gsfontmap,[ --with-gsfontmap=FILE ghostscript fontmap],[ WMF_GS_FONTMAP=$withval ],[ dnl dnl Test first for Debian Font Manager's ghostscript Fontmap. dnl Next test for GnuWin32 ghostscript Fontmap. dnl Next test for standard ghostscript Fontmap. dnl If not found, default to RedHat location. dnl if [ test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS ]; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS elif [ test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap ]; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap elif [ test -r 'c:/progra~1/gs/gs/lib/fontmap.gs' ]; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap.gs' elif [ test -r 'c:/progra~1/gs/gs/lib/fontmap' ]; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap' elif [ test -r 'c:/gs/fonts/fontmap.gs' ]; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap.gs' elif [ test -r 'c:/gs/fonts/fontmap' ]; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap' else WMF_GS_FONTMAP=/usr/share/ghostscript/5.50/Fontmap if test -d /usr/share/ghostscript; then for i in `ls /usr/share/ghostscript`; do if test -r "/usr/share/ghostscript/$i/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap" fi done fi fi ]) AC_ARG_WITH(gsfontdir,[ --with-gsfontdir=DIR directory for ghostscript fonts],[ WMF_GS_FONTDIR=$withval ],[ dnl dnl Test first for Debian Font Manager's ghostscript font directory. dnl Next test for GnuWin32 ghostscript font directory. dnl Next test for standard ghostscript font directory. dnl If not found, default to RedHat location. dnl if [ test -d /var/lib/defoma/gs.d/dirs/fonts ]; then WMF_GS_FONTDIR=/var/lib/defoma/gs.d/dirs/fonts elif [ test -d 'c:/progra~1/gs/gs/lib/fonts' ]; then WMF_GS_FONTDIR='c:/progra~1/gs/gs/lib/fonts' elif [ test -d 'c:/gs/fonts' ]; then WMF_GS_FONTDIR='c:/gs/fonts' else WMF_GS_FONTDIR=/usr/share/fonts/default/Type1 fi ]) dnl Output... WMF_CFLAGS="$WMF_FT_CFLAGS $WMF_X_CFLAGS $WMF_PLOT_CFLAGS $WMF_XML_CFLAGS" WMF_CFLAGS="$WMF_CFLAGS $WMF_GD_CFLAGS $WMF_JPEG_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" AC_SUBST(WMF_CFLAGS) WMF_CONFIG_CFLAGS="$WMF_FT_CONFIG_CFLAGS $WMF_Z_CONFIG_CFLAGS $WMF_X_CONFIG_CFLAGS" AC_SUBST(WMF_CONFIG_CFLAGS) WMF_LIBFLAGS="$WMF_PLOT_LDFLAGS $WMF_GD_LDFLAGS $WMF_FT_LDFLAGS $WMF_X_LDFLAGS $WMF_XML_LDFLAGS" WMF_LIBFLAGS="$WMF_LIBFLAGS $WMF_JPEG_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS $SYS_LIBM" AC_SUBST(WMF_LIBFLAGS) AC_SUBST(WMF_DOCDIR) AC_SUBST(WMF_FONTDIR) AC_SUBST(WMF_SYS_FONTMAP) AC_SUBST(WMF_XTRA_FONTMAP) AC_SUBST(WMF_GS_FONTMAP) AC_SUBST(WMF_GS_FONTDIR) AC_SUBST(WMF_DEFS) AC_SUBST(GD_DEFS) AC_OUTPUT([ Makefile doc/Makefile doc/caolan/Makefile doc/caolan/pics/Makefile doc/html/Makefile fonts/Makefile fonts/libwmf-fontmap fonts/fontmap include/Makefile include/libwmf/Makefile src/Makefile src/extra/Makefile src/extra/trio/Makefile src/extra/gd/Makefile src/ipa/Makefile src/convert/Makefile libwmf-config libwmf.spec ]) echo "" echo " Support for X: $libwmf_x" echo " Support for GD: $libwmf_gd" echo " Support for JPEG though GD: $libwmf_gd_jpeg" echo " Support for XML: $libwmf_xml" echo "" echo " Documentation directory: $WMF_DOCDIR" echo " Font directory: $WMF_FONTDIR" echo " System XML fontmap file: $WMF_SYS_FONTMAP" echo " Non-system XML fontmap file: $WMF_XTRA_FONTMAP" echo " ghostscript fontmap file: $WMF_GS_FONTMAP" echo " ghostscript font directory: $WMF_GS_FONTDIR" echo "" echo " building gdk-pixbuf plug-in? $wmf_gdk_pixbuf" echo "" libwmf-0.2.8.4/autom4te.cache/0000755000077100007710000000000010272000327015300 5ustar fjffjf00000000000000libwmf-0.2.8.4/autom4te.cache/requests0000664000077100007710000004072510272000340017103 0ustar fjffjf00000000000000# This file was generated. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', '/usr/share/aclocal/libtool.m4', '/usr/share/aclocal/pkg.m4', '/usr/share/aclocal-1.9/amversion.m4', '/usr/share/aclocal-1.9/auxdir.m4', '/usr/share/aclocal-1.9/cond.m4', '/usr/share/aclocal-1.9/depend.m4', '/usr/share/aclocal-1.9/depout.m4', '/usr/share/aclocal-1.9/header.m4', '/usr/share/aclocal-1.9/init.m4', '/usr/share/aclocal-1.9/install-sh.m4', '/usr/share/aclocal-1.9/lead-dot.m4', '/usr/share/aclocal-1.9/make.m4', '/usr/share/aclocal-1.9/missing.m4', '/usr/share/aclocal-1.9/mkdirp.m4', '/usr/share/aclocal-1.9/options.m4', '/usr/share/aclocal-1.9/runlog.m4', '/usr/share/aclocal-1.9/sanity.m4', '/usr/share/aclocal-1.9/strip.m4', '/usr/share/aclocal-1.9/tar.m4', 'acinclude.m4', 'configure.ac' ], { 'AM_ENABLE_STATIC' => 1, 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, 'AC_C_VOLATILE' => 1, 'AC_TYPE_OFF_T' => 1, '_LT_AC_SHELL_INIT' => 1, 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_REPLACE_FNMATCH' => 1, 'AC_DEFUN' => 1, 'AC_PROG_LIBTOOL' => 1, '_LT_AC_LANG_CXX_CONFIG' => 1, 'AM_PROG_MKDIR_P' => 1, 'AC_FUNC_STAT' => 1, 'AC_FUNC_WAIT3' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_FUNC_LSTAT' => 1, 'AC_STRUCT_TM' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRTOD' => 1, 'AM_MISSING_PROG' => 1, 'AC_FUNC_STRNLEN' => 1, 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, 'AC_PROG_CXX' => 1, '_LT_AC_LANG_C_CONFIG' => 1, 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, 'AM_PROG_INSTALL_STRIP' => 1, 'AC_PROG_AWK' => 1, '_m4_warn' => 1, 'AC_LIBTOOL_OBJDIR' => 1, 'AC_HEADER_MAJOR' => 1, 'AM_SANITY_CHECK' => 1, 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, '_LT_AC_CHECK_DLFCN' => 1, '_AM_PROG_TAR' => 1, 'AC_LIBTOOL_GCJ' => 1, 'AC_PROG_GCC_TRADITIONAL' => 1, 'AC_LIBSOURCE' => 1, 'AC_STRUCT_ST_BLOCKS' => 1, '_LT_AC_LANG_F77' => 1, 'AC_LIBTOOL_CONFIG' => 1, 'AC_PROG_MAKE_SET' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'sinclude' => 1, 'AM_DISABLE_SHARED' => 1, '_LT_AC_LANG_CXX' => 1, 'AM_PROG_LIBTOOL' => 1, '_LT_AC_FILE_LTDLL_C' => 1, 'AM_PROG_LD' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_FORK' => 1, 'AU_DEFUN' => 1, 'AC_FUNC_VPRINTF' => 1, 'AC_PROG_NM' => 1, 'AC_LIBTOOL_DLOPEN' => 1, 'AC_PROG_LD' => 1, 'AC_PROG_LD_GNU' => 1, 'AC_ENABLE_FAST_INSTALL' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, 'AC_SUBST' => 1, 'AC_FUNC_ALLOCA' => 1, '_AM_SET_OPTION' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_LIBTOOL_PROG_CC_C_O' => 1, 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, 'AC_PROG_RANLIB' => 1, 'AC_FUNC_SETPGRP' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AC_FUNC_MMAP' => 1, 'AC_TYPE_SIZE_T' => 1, 'AC_CHECK_TYPES' => 1, 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AC_CHECK_MEMBERS' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, '_LT_AC_LANG_GCJ' => 1, 'AC_FUNC_STRFTIME' => 1, 'AC_HEADER_STAT' => 1, 'AC_C_INLINE' => 1, 'AC_LIBTOOL_RC' => 1, '_LT_AC_PROG_ECHO_BACKSLASH' => 1, 'AC_DISABLE_FAST_INSTALL' => 1, 'AC_CONFIG_FILES' => 1, '_LT_AC_TRY_DLOPEN_SELF' => 1, '_LT_AC_SYS_LIBPATH_AIX' => 1, 'include' => 1, 'LT_AC_PROG_SED' => 1, 'AM_ENABLE_SHARED' => 1, 'AM_GNU_GETTEXT' => 1, '_LT_AC_LANG_GCJ_CONFIG' => 1, 'AC_ENABLE_SHARED' => 1, 'AC_CHECK_LIB' => 1, 'AC_FUNC_OBSTACK' => 1, 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, 'AC_ENABLE_STATIC' => 1, 'AC_FUNC_FSEEKO' => 1, '_LT_AC_TAGVAR' => 1, 'AC_LIBPLOT_LIBS' => 1, 'AM_PROG_CC_C_O' => 1, 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, 'AM_CONDITIONAL' => 1, 'AC_FUNC_MKTIME' => 1, 'AC_HEADER_SYS_WAIT' => 1, 'AC_FUNC_MEMCMP' => 1, 'AC_PROG_LN_S' => 1, 'AM_PROG_INSTALL_SH' => 1, 'm4_include' => 1, 'AC_PROG_EGREP' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_PATH_MAGIC' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, 'AM_MAKE_INCLUDE' => 1, '_LT_AC_TAGCONFIG' => 1, 'm4_pattern_forbid' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_LIBTOOL_COMPILER_OPTION' => 1, 'AC_DISABLE_SHARED' => 1, 'AC_LIBTOOL_WIN32_DLL' => 1, 'AC_LIBTOOL_SETUP' => 1, 'AC_PROG_LD_RELOAD_FLAG' => 1, 'AC_HEADER_TIME' => 1, 'AC_TYPE_MODE_T' => 1, 'AM_MISSING_HAS_RUN' => 1, 'AC_FUNC_GETMNTENT' => 1, 'AC_LIBTOOL_DLOPEN_SELF' => 1, 'm4_sinclude' => 1, 'AC_PATH_X' => 1, 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, 'AC_HEADER_STDC' => 1, 'AC_LIBTOOL_LINKER_OPTION' => 1, 'LT_AC_PROG_RC' => 1, 'AC_LIBTOOL_CXX' => 1, 'LT_AC_PROG_GCJ' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, 'AM_DISABLE_STATIC' => 1, 'AM_DEP_TRACK' => 1, 'AM_CONFIG_HEADER' => 1, '_AC_PROG_LIBTOOL' => 1, 'AC_FUNC_MBRTOWC' => 1, 'AC_TYPE_SIGNAL' => 1, '_AM_IF_OPTION' => 1, 'AC_TYPE_UID_T' => 1, 'AC_PATH_TOOL_PREFIX' => 1, 'm4_pattern_allow' => 1, 'AC_LIBTOOL_F77' => 1, 'AM_SET_LEADING_DOT' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, '_AM_DEPENDENCIES' => 1, 'AC_LIBTOOL_LANG_C_CONFIG' => 1, '_LT_AC_SYS_COMPILER' => 1, 'AC_PROG_CC' => 1, 'AM_PROG_NM' => 1, 'PKG_CHECK_MODULES' => 1, 'AC_FUNC_STRCOLL' => 1, 'AC_PROG_YACC' => 1, 'AC_LIBLTDL_CONVENIENCE' => 1, 'AC_DEPLIBS_CHECK_METHOD' => 1, 'AC_FUNC_CHOWN' => 1, 'AC_LIBLTDL_INSTALLABLE' => 1, 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, 'AC_FUNC_GETPGRP' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_FUNC_REALLOC' => 1, 'AC_DISABLE_STATIC' => 1, 'AC_CONFIG_LINKS' => 1, 'AM_MAINTAINER_MODE' => 1, '_LT_AC_LOCK' => 1, '_LT_AC_LANG_RC_CONFIG' => 1, 'AC_PROG_CPP' => 1, 'AC_C_CONST' => 1, 'AC_PROG_LEX' => 1, 'AC_TYPE_PID_T' => 1, 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, 'AC_CHECK_VERSION' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AM_AUX_DIR_EXPAND' => 1, 'AC_PROG_INSTALL' => 1, '_LT_AC_LANG_F77_CONFIG' => 1, 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, '_AM_SET_OPTIONS' => 1, '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AM_RUN_LOG' => 1, 'AC_LIBTOOL_PICMODE' => 1, 'AH_OUTPUT' => 1, 'AC_CHECK_LIBM' => 1, 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, '_AM_MANGLE_OPTION' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, 'AC_CONFIG_HEADERS' => 1, 'AM_SET_DEPDIR' => 1, 'AC_CHECK_FUNCS' => 1 } ], 'Autom4te::Request' ), bless( [ '1', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.ac' ], { '_LT_AC_TAGCONFIG' => 1, 'm4_pattern_forbid' => 1, 'AC_CANONICAL_TARGET' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_TYPE_OFF_T' => 1, 'AC_C_VOLATILE' => 1, 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_REPLACE_FNMATCH' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_FUNC_STAT' => 1, 'AC_HEADER_TIME' => 1, 'AC_FUNC_WAIT3' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_STRUCT_TM' => 1, 'AC_FUNC_LSTAT' => 1, 'AC_TYPE_MODE_T' => 1, 'AC_FUNC_GETMNTENT' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRTOD' => 1, 'AC_FUNC_STRNLEN' => 1, 'm4_sinclude' => 1, 'AC_PROG_CXX' => 1, 'AC_PATH_X' => 1, 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, 'AC_PROG_AWK' => 1, '_m4_warn' => 1, 'AC_HEADER_STDC' => 1, 'AC_HEADER_MAJOR' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, 'AC_PROG_GCC_TRADITIONAL' => 1, 'AC_LIBSOURCE' => 1, 'AC_FUNC_MBRTOWC' => 1, 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_TYPE_SIGNAL' => 1, 'AC_CANONICAL_BUILD' => 1, 'AC_TYPE_UID_T' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'AC_PROG_MAKE_SET' => 1, 'sinclude' => 1, 'm4_pattern_allow' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_PROG_CC' => 1, 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_FORK' => 1, 'AC_FUNC_VPRINTF' => 1, 'AC_FUNC_STRCOLL' => 1, 'AC_PROG_YACC' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, 'AC_FUNC_CHOWN' => 1, 'AC_SUBST' => 1, 'AC_FUNC_ALLOCA' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_FUNC_GETPGRP' => 1, 'AC_PROG_RANLIB' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_FUNC_SETPGRP' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AC_FUNC_MMAP' => 1, 'AC_FUNC_REALLOC' => 1, 'AC_TYPE_SIZE_T' => 1, 'AC_CONFIG_LINKS' => 1, 'AC_CHECK_TYPES' => 1, 'LT_SUPPORTED_TAG' => 1, 'AC_CHECK_MEMBERS' => 1, 'AM_MAINTAINER_MODE' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, 'AC_FUNC_STRFTIME' => 1, 'AC_HEADER_STAT' => 1, 'AC_C_INLINE' => 1, 'AC_PROG_CPP' => 1, 'AC_TYPE_PID_T' => 1, 'AC_C_CONST' => 1, 'AC_PROG_LEX' => 1, 'AM_ENABLE_MULTILIB' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AC_PROG_INSTALL' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_CHECK_LIB' => 1, 'AC_FUNC_OBSTACK' => 1, 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, 'AM_PROG_CC_C_O' => 1, 'AM_CONDITIONAL' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AC_FUNC_MKTIME' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_HEADER_SYS_WAIT' => 1, 'AC_FUNC_MEMCMP' => 1, 'AC_PROG_LN_S' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_CHECK_FUNCS' => 1 } ], 'Autom4te::Request' ) ); libwmf-0.2.8.4/autom4te.cache/output.00000664000077100007710000324416410272000256016742 0ustar fjffjf00000000000000@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.59 for libwmf 0.2.8. @%:@ @%:@ Report bugs to . @%:@ @%:@ Copyright (C) 2003 Free Software Foundation, Inc. @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='libwmf' PACKAGE_TARNAME='libwmf' PACKAGE_VERSION='0.2.8' PACKAGE_STRING='libwmf 0.2.8' PACKAGE_BUGREPORT='wvware-devel@sourceforge.net' ac_unique_file="src/player.c" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LIBWMF_PACKAGE LIBWMF_VERSION LIBWMF_RELEASE LT_RELEASE LT_CURRENT LT_REVISION LT_AGE LT_LITE_CURRENT LT_LITE_REVISION LT_LITE_AGE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar LIBWMF_BUILDSTYLE LIBWMF_BUILD_ALL_TRUE LIBWMF_BUILD_ALL_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os SYS_LIBM CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP LN_S EGREP ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBWMF_OPT_TRIO_TRUE LIBWMF_OPT_TRIO_FALSE LIBWMF_OPT_MODULES_TRUE LIBWMF_OPT_MODULES_FALSE LIBWMF_OPT_LAYERS_TRUE LIBWMF_OPT_LAYERS_FALSE X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBWMF_OPT_X_TRUE LIBWMF_OPT_X_FALSE XML2_CONFIG FREETYPE_CONFIG LIBWMF_OPT_GD_TRUE LIBWMF_OPT_GD_FALSE LIBWMF_OPT_SYS_GD_TRUE LIBWMF_OPT_SYS_GD_FALSE LIBWMF_OPT_PLOT_TRUE LIBWMF_OPT_PLOT_FALSE PKG_CONFIG GDK_PIXBUF_CFLAGS GDK_PIXBUF_LIBS LIBWMF_GDK_PIXBUF_TRUE LIBWMF_GDK_PIXBUF_FALSE GDK_PIXBUF_DIR WMF_CFLAGS WMF_CONFIG_CFLAGS WMF_LIBFLAGS WMF_DOCDIR WMF_FONTDIR WMF_SYS_FONTMAP WMF_XTRA_FONTMAP WMF_GS_FONTMAP WMF_GS_FONTDIR WMF_DEFS GD_DEFS LIB@&t@OBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP ac_env_F77_set=${F77+set} ac_env_F77_value=$F77 ac_cv_env_F77_set=${F77+set} ac_cv_env_F77_value=$F77 ac_env_FFLAGS_set=${FFLAGS+set} ac_env_FFLAGS_value=$FFLAGS ac_cv_env_FFLAGS_set=${FFLAGS+set} ac_cv_env_FFLAGS_value=$FFLAGS # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures libwmf 0.2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libwmf 0.2.8:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-debug set DEBUG option to libwmf default=no --enable-ansi set -ansi option to libwmf default=no --enable-pedantic set -pedantic option to libwmf default=no --disable-heavy only build libwmflite default=build all --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ --enable-fast-install@<:@=PKGS@:>@ optimize for fast installation @<:@default=yes@:>@ --disable-libtool-lock avoid locking (might break parallel builds) --disable-gd don't build GD, don't look for it, don't require it Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ --with-pic try to use only PIC/non-PIC objects @<:@default=use both@:>@ --with-tags@<:@=TAGS@:>@ include additional configurations @<:@automatic@:>@ --with-layers whether to build layers default is yes --with-x use the X Window System --with-expat=DIR use expat in DIR --with-libxml2=DIR use libxml2 in DIR --with-freetype=DIR use freetype2 in DIR --with-zlib=DIR use libz in DIR --with-png=DIR use libpng in DIR --with-jpeg=DIR use libjpeg in DIR --with-sys-gd=DIR use system GD in DIR (if compatible) --with-docdir=DIR install documentation in DIR --with-fontdir=DIR install Type1 fonts in DIR --with-sysfontmap=FILE default is /usr/share/fonts/fontmap --with-xtrafontmap=FILE non-system XML fontmap --with-gsfontmap=FILE ghostscript fontmap --with-gsfontdir=DIR directory for ghostscript fonts Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF libwmf configure 0.2.8 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libwmf $as_me 0.2.8, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME @%:@@%:@ --------- @%:@@%:@ @%:@@%:@ Platform. @%:@@%:@ @%:@@%:@ --------- @%:@@%:@ hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ Core tests. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX @%:@@%:@ ------------- @%:@@%:@ @%:@@%:@ Output files. @%:@@%:@ @%:@@%:@ ------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBWMF_PACKAGE=libwmf # Making releases: # WMF_MICRO_VERSION += 1; # WMF_INTERFACE_AGE += 1; # WMF_BINARY_AGE += 1; # if any functions have been added, set WMF_INTERFACE_AGE to 0. # if backwards compatibility has been broken, # set WMF_BINARY_AGE and WMF_INTERFACE_AGE to 0. # WMF_MAJOR_VERSION=0 WMF_MINOR_VERSION=2 WMF_MICRO_VERSION=8 WMF_INTERFACE_AGE=0 WMF_BINARY_AGE=1 WMFLITE_INTERFACE_AGE=1 WMFLITE_BINARY_AGE=1 LIBWMF_VERSION=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION.$WMF_MICRO_VERSION LIBWMF_RELEASE=1 # libtool versioning LT_RELEASE=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION LT_CURRENT=`expr $WMF_MICRO_VERSION - $WMF_INTERFACE_AGE` LT_REVISION=$WMF_INTERFACE_AGE LT_AGE=`expr $WMF_BINARY_AGE - $WMF_INTERFACE_AGE` LT_LITE_CURRENT=`expr $WMF_MICRO_VERSION - $WMFLITE_INTERFACE_AGE` LT_LITE_REVISION=$WMFLITE_INTERFACE_AGE LT_LITE_AGE=`expr $WMFLITE_BINARY_AGE - $WMFLITE_INTERFACE_AGE` # For automake. PACKAGE=$LIBWMF_PACKAGE VERSION=$LIBWMF_VERSION am__api_version="1.9" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=$PACKAGE VERSION=$VERSION # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Specify a configuration file ac_config_headers="$ac_config_headers wmfconfig.h" # CFLAGS to be listed by libwmf-config should be added to this: WMF_CONFIG_CFLAGS= # Other CFLAGS, not to be listed by libwmf-config, should be added to this: WMF_CFLAGS= # LDFLAGS to be listed by libwmf-config should be added to this: WMF_LIBFLAGS= # WMF_DEFS is for flags such as -DDEBUG which are to applied only to # libwmf source not extra packages such as gd - more global defs should be # added to WMF_CFLAGS # Check whether --enable-debug or --disable-debug was given. if test "${enable_debug+set}" = set; then enableval="$enable_debug" if test "x$enableval" != "xno" ; then WMF_DEFS="-DDEBUG=1" else WMF_DEFS= fi else WMF_DEFS= fi; # Check whether --enable-ansi or --disable-ansi was given. if test "${enable_ansi+set}" = set; then enableval="$enable_ansi" if test "x$enableval" != "xno" ; then WMF_DEFS="$WMF_DEFS -ansi" fi fi; # Check whether --enable-pedantic or --disable-pedantic was given. if test "${enable_pedantic+set}" = set; then enableval="$enable_pedantic" if test "x$enableval" != "xno" ; then WMF_DEFS="$WMF_DEFS -pedantic" fi fi; LIBWMF_BUILDSTYLE=heavy libwmf_build_all=yes # Check whether --enable-heavy or --disable-heavy was given. if test "${enable_heavy+set}" = set; then enableval="$enable_heavy" if test "x$enableval" = "xno" ; then LIBWMF_BUILDSTYLE=lite libwmf_build_all=no fi fi; if test "x$libwmf_build_all" = "xyes" ; then LIBWMF_BUILD_ALL_TRUE= LIBWMF_BUILD_ALL_FALSE='#' else LIBWMF_BUILD_ALL_TRUE='#' LIBWMF_BUILD_ALL_FALSE= fi # gd does not read config.h so need to pass it options on the command line: GD_DEFS= # Tests for Windows # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` case $host_os in *cygwin* ) CYGWIN=yes;; * ) CYGWIN=no;; esac case $host_os in *mingw32* ) MINGW32=yes;; * ) MINGW32=no;; esac # End Tests for Windows echo "$as_me:$LINENO: checking for Win32" >&5 echo $ECHO_N "checking for Win32... $ECHO_C" >&6 case "$host" in *-*-mingw*) os_win32=yes SYS_LIBM="" ;; *) os_win32=no SYS_LIBM="-lm" ;; esac echo "$as_me:$LINENO: result: $os_win32" >&5 echo "${ECHO_T}$os_win32" >&6 for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval="$enable_dependency_tracking" fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi # Configure libtool # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi; echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done SED=$lt_cv_path_SED fi echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6 NM="$lt_cv_path_NM" echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump'. lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | kfreebsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) case $host_cpu in alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*-cygwin* | *-*-mingw* | *-*-pw32*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then echo "$as_me:$LINENO: result: $DLLTOOL" >&5 echo "${ECHO_T}$DLLTOOL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false" fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 echo "${ECHO_T}$ac_ct_DLLTOOL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi DLLTOOL=$ac_ct_DLLTOOL else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then echo "$as_me:$LINENO: result: $AS" >&5 echo "${ECHO_T}$AS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false" fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 echo "${ECHO_T}$ac_ct_AS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AS=$ac_ct_AS else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then echo "$as_me:$LINENO: result: $OBJDUMP" >&5 echo "${ECHO_T}$OBJDUMP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false" fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 echo "${ECHO_T}$ac_ct_OBJDUMP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi OBJDUMP=$ac_ct_OBJDUMP else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac need_locks="$enable_libtool_lock" echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_F77" && break done F77=$ac_ct_F77 fi # Provide some information about the compiler. echo "$as_me:__oline__:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDRT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6 objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AR=$ac_ct_AR else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac enable_dlopen=no enable_win32_dll=yes # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # # Check for any special shared library compilation flags. # lt_prog_cc_shlib= if test "$GCC" = no; then case $host_os in sco3.2v5*) lt_prog_cc_shlib='-belf' ;; esac fi if test -n "$lt_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 if test "${lt_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_prog_compiler_static" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 else lt_prog_compiler_static_works=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 if test x"$lt_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic='-Kpic' lt_prog_compiler_static='-dn' ;; solaris*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 if test x"$lt_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds="$tmp_archive_cmds" fi else ld_shlibs=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec=' ' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=no hardcode_shlibpath_var=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no hardcode_shlibpath_var=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var " || \ test "X$hardcode_automatic"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which librarie types wil actually be built echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; darwin* | rhapsody*) if test "$GCC" = yes; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag='-undefined dynamic_lookup' ;; esac fi ;; esac output_verbose_link_cmd='echo' archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes else ld_shlibs=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags or --without-tags was given. if test "${with_tags+set}" = set; then withval="$with_tags" tagnames="$withval" fi; if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && test "X$CXX" != "Xno"; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_CXX=yes else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_CXX=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX=' ' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) if test "$GXX" = yes; then archive_cmds_need_lc_CXX=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_CXX='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_CXX='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_CXX='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_CXX='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='-all_load $convenience' link_all_deplibs_CXX=yes else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd12*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_CXX='+b $libdir' hardcode_libdir_separator_CXX=: ;; ia64*) hardcode_libdir_flag_spec_CXX='-L$libdir' ;; *) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes archive_cmds_need_lc_CXX=no archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sco*) archive_cmds_need_lc_CXX=no case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.0-5 | solaris2.0-5.*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) archive_cmds_need_lc_CXX=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) lt_prog_compiler_pic_CXX='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var CXX" || \ test "X$hardcode_automatic_CXX"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6 if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_CXX" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code=" subroutine t\n return\n end\n" # Code to be used in simple link tests lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_F77='-Kpic' lt_prog_compiler_static_F77='-dn' ;; solaris*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 if test x"$lt_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_F77="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_F77="$tmp_archive_cmds" fi else ld_shlibs_F77=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_F77=yes else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_F77=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77=' ' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi4*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc_F77=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_F77='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='-all_load $convenience' link_all_deplibs_F77=yes else ld_shlibs_F77=no fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; ia64*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; *) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; sco3.2v5*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4.2uw2*) archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_F77='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv5*) no_undefined_flag_F77=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_F77= hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var F77" || \ test "X$hardcode_automatic_F77"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6 if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_F77" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_GCJ='-Kpic' lt_prog_compiler_static_GCJ='-dn' ;; solaris*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_GCJ="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_GCJ="$tmp_archive_cmds" fi else ld_shlibs_GCJ=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_GCJ=yes else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_GCJ=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ=' ' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi4*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc_GCJ=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_GCJ='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='-all_load $convenience' link_all_deplibs_GCJ=yes else ld_shlibs_GCJ=no fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; ia64*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; *) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; sco3.2v5*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4.2uw2*) archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_GCJ='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv5*) no_undefined_flag_GCJ=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_GCJ= hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6 test "$ld_shlibs_GCJ" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var GCJ" || \ test "X$hardcode_automatic_GCJ"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6 if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_GCJ" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_RC" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion #end libtool stuff echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi for ac_header in time.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_unistd_h+set}" = set; then echo "$as_me:$LINENO: checking for unistd.h" >&5 echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 if test "${ac_cv_header_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking unistd.h usability" >&5 echo $ECHO_N "checking unistd.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking unistd.h presence" >&5 echo $ECHO_N "checking unistd.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: unistd.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: unistd.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: unistd.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: unistd.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: unistd.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: unistd.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: unistd.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for unistd.h" >&5 echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 if test "${ac_cv_header_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_unistd_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 fi if test $ac_cv_header_unistd_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_UNISTD_H 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_UNISTD_H" fi echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @%:@define const _ACEOF fi echo "$as_me:$LINENO: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define off_t long _ACEOF fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned _ACEOF fi for ac_func in strstr do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done require_trio=no if test $LIBWMF_BUILDSTYLE = heavy; then for ac_func in printf fprintf vfprintf sprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else require_trio=yes fi done for ac_func in vprintf vsprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else require_trio=yes fi done for ac_func in scanf vscanf fscanf vsscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in vsnprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_vsnprintf=yes fi done if test "x$check_for_vsnprintf" = "xyes" ; then echo "$as_me:$LINENO: checking for _vsnprintf" >&5 echo $ECHO_N "checking for _vsnprintf... $ECHO_C" >&6 if test "${ac_cv_func__vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define _vsnprintf to an innocuous variant, in case declares _vsnprintf. For example, HP-UX 11i declares gettimeofday. */ #define _vsnprintf innocuous__vsnprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _vsnprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _vsnprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _vsnprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__vsnprintf) || defined (__stub____vsnprintf) choke me #else char (*f) () = _vsnprintf; #endif #ifdef __cplusplus } #endif int main () { return f != _vsnprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__vsnprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__vsnprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__vsnprintf" >&5 echo "${ECHO_T}$ac_cv_func__vsnprintf" >&6 if test $ac_cv_func__vsnprintf = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_VSNPRINTF 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define vsnprintf _vsnprintf _ACEOF else echo "$as_me:$LINENO: checking for vsnprintf in -ldb" >&5 echo $ECHO_N "checking for vsnprintf in -ldb... $ECHO_C" >&6 if test "${ac_cv_lib_db_vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldb $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char vsnprintf (); int main () { vsnprintf (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_db_vsnprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_db_vsnprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_db_vsnprintf" >&5 echo "${ECHO_T}$ac_cv_lib_db_vsnprintf" >&6 if test $ac_cv_lib_db_vsnprintf = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_VSNPRINTF 1 _ACEOF WMF_LIBFLAGS="$WMF_LIBFLAGS -ldb" else require_trio=yes fi fi fi for ac_func in snprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_snprintf=yes fi done if test "x$check_for_snprintf" = "xyes" ; then echo "$as_me:$LINENO: checking for _snprintf" >&5 echo $ECHO_N "checking for _snprintf... $ECHO_C" >&6 if test "${ac_cv_func__snprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define _snprintf to an innocuous variant, in case declares _snprintf. For example, HP-UX 11i declares gettimeofday. */ #define _snprintf innocuous__snprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _snprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _snprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _snprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__snprintf) || defined (__stub____snprintf) choke me #else char (*f) () = _snprintf; #endif #ifdef __cplusplus } #endif int main () { return f != _snprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__snprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__snprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__snprintf" >&5 echo "${ECHO_T}$ac_cv_func__snprintf" >&6 if test $ac_cv_func__snprintf = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SNPRINTF 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define snprintf _snprintf _ACEOF fi fi for ac_func in vfscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_vfscanf=yes fi done if test "x$check_for_vfscanf" = "xyes" ; then echo "$as_me:$LINENO: checking for vfscanf in stdio.h" >&5 echo $ECHO_N "checking for vfscanf in stdio.h... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "vfscanf" >/dev/null 2>&1; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF @%:@define HAVE_VFSCANF 1 _ACEOF else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest* fi fi # $LIBWMF_BUILDSTYLE = heavy if test "x$require_trio" = "xyes" ; then LIBWMF_OPT_TRIO_TRUE= LIBWMF_OPT_TRIO_FALSE='#' else LIBWMF_OPT_TRIO_TRUE='#' LIBWMF_OPT_TRIO_FALSE= fi cat >>confdefs.h <<\_ACEOF @%:@define TRIO_REPLACE_STDIO 1 _ACEOF # Check whether --with-layers or --without-layers was given. if test "${with_layers+set}" = set; then withval="$with_layers" if test "x$withval" = "xyes" ; then libwmf_layers=yes elif test "x$withval" = "xno" ; then libwmf_layers=no elif test "x$withval" = "xmodules" ; then { { echo "$as_me:$LINENO: error: * * * Sorry, modules not yet supported! * * *" >&5 echo "$as_me: error: * * * Sorry, modules not yet supported! * * *" >&2;} { (exit 1); exit 1; }; } libwmf_layers=modules else { echo "$as_me:$LINENO: WARNING: * * * Bad option to --with-layers! * * *" >&5 echo "$as_me: WARNING: * * * Bad option to --with-layers! * * *" >&2;} libwmf_layers=yes fi else libwmf_layers=yes fi; if test $LIBWMF_BUILDSTYLE = lite; then libwmf_layers=no fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_layers = no ; then cat >>confdefs.h <<\_ACEOF @%:@define WITHOUT_LAYERS 1 _ACEOF fi if test $libwmf_layers = modules ; then LIBWMF_OPT_MODULES_TRUE= LIBWMF_OPT_MODULES_FALSE='#' else LIBWMF_OPT_MODULES_TRUE='#' LIBWMF_OPT_MODULES_FALSE= fi if test $libwmf_layers != no ; then LIBWMF_OPT_LAYERS_TRUE= LIBWMF_OPT_LAYERS_FALSE='#' else LIBWMF_OPT_LAYERS_TRUE='#' LIBWMF_OPT_LAYERS_FALSE= fi libwmf_x=no libwmf_xml=no libwmf_gd_jpeg=no libwmf_plot=no if test $libwmf_layers != no ; then echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then withval="$with_x" fi; # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && test -f $ac_im_libdir/libX11.$ac_extension; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # Record where we found X for the cache. ac_cv_have_x="have_x=yes \ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6 no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes \ ac_x_includes=$x_includes ac_x_libraries=$x_libraries" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. cat >>confdefs.h <<\_ACEOF @%:@define X_DISPLAY_MISSING 1 _ACEOF X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi else X_CFLAGS="-DX_DISPLAY_MISSING=1" no_x=yes fi WMF_X_CONFIG_CFLAGS="" WMF_X_CFLAGS="" WMF_X_LDFLAGS="" WMF_X_CFLAGS="$X_CFLAGS" if test "x$no_x" != "xyes" ; then WMF_X_CONFIG_CFLAGS="$X_CFLAGS" WMF_X_LDFLAGS="$X_LIBS -lX11" libwmf_x=yes fi if test "x$no_x" != "xyes" ; then LIBWMF_OPT_X_TRUE= LIBWMF_OPT_X_FALSE='#' else LIBWMF_OPT_X_TRUE='#' LIBWMF_OPT_X_FALSE= fi WMF_XML_DIR="" WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" libwmf_xml=unknown # Check whether --with-expat or --without-expat was given. if test "${with_expat+set}" = set; then withval="$with_expat" if test "x$withval" = "xno"; then libwmf_xml=libxml2 elif test "x$withval" = "xyes"; then libwmf_xml=expat else libwmf_xml=expat WMF_XML_DIR="$withval" fi fi; # Check whether --with-libxml2 or --without-libxml2 was given. if test "${with_libxml2+set}" = set; then withval="$with_libxml2" if test "x$withval" = "xno"; then if test $libwmf_xml = libxml2; then libwmf_xml=none else libwmf_xml=expat fi elif test "x$withval" = "xyes"; then if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * Can't specify both expat and libxml2! * * *" >&5 echo "$as_me: error: * * * Can't specify both expat and libxml2! * * *" >&2;} { (exit 1); exit 1; }; } else libwmf_xml=libxml2 fi else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * Can't specify both expat and libxml2! * * *" >&5 echo "$as_me: error: * * * Can't specify both expat and libxml2! * * *" >&2;} { (exit 1); exit 1; }; } else libwmf_xml=libxml2 WMF_XML_DIR="$withval" fi fi fi; if test $LIBWMF_BUILDSTYLE = lite; then libwmf_xml=none fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_xml = expat -o $libwmf_xml = unknown; then if test "x$WMF_XML_DIR" != "x"; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS CPPFLAGS="$CPPFLAGS -I$WMF_XML_DIR/include" LDFLAGS="$LDFLAGS -L$WMF_XML_DIR/lib" WMF_XML_CFLAGS="-I$WMF_XML_DIR/include" WMF_XML_LDFLAGS="-L$WMF_XML_DIR/lib -lexpat" else WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="-lexpat" fi if test "${ac_cv_header_expat_h+set}" = set; then echo "$as_me:$LINENO: checking for expat.h" >&5 echo $ECHO_N "checking for expat.h... $ECHO_C" >&6 if test "${ac_cv_header_expat_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 echo "${ECHO_T}$ac_cv_header_expat_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking expat.h usability" >&5 echo $ECHO_N "checking expat.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking expat.h presence" >&5 echo $ECHO_N "checking expat.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: expat.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: expat.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: expat.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: expat.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: expat.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: expat.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: expat.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for expat.h" >&5 echo $ECHO_N "checking for expat.h... $ECHO_C" >&6 if test "${ac_cv_header_expat_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_expat_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 echo "${ECHO_T}$ac_cv_header_expat_h" >&6 fi if test $ac_cv_header_expat_h = yes; then echo "$as_me:$LINENO: checking for XML_ParserFree in -lexpat" >&5 echo $ECHO_N "checking for XML_ParserFree in -lexpat... $ECHO_C" >&6 if test "${ac_cv_lib_expat_XML_ParserFree+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lexpat $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XML_ParserFree (); int main () { XML_ParserFree (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_expat_XML_ParserFree=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_expat_XML_ParserFree=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_expat_XML_ParserFree" >&5 echo "${ECHO_T}$ac_cv_lib_expat_XML_ParserFree" >&6 if test $ac_cv_lib_expat_XML_ParserFree = yes; then libwmf_xml=expat else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * unable to find expat * * *" >&5 echo "$as_me: error: * * * unable to find expat * * *" >&2;} { (exit 1); exit 1; }; } fi fi else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * unable to find expat * * *" >&5 echo "$as_me: error: * * * unable to find expat * * *" >&2;} { (exit 1); exit 1; }; } fi fi if test "x$WMF_XML_DIR" != "x"; then CPPFLAGS=$_cppflags LDFLAGS=$_ldflags fi fi if test $libwmf_xml = libxml2 -o $libwmf_xml = unknown; then if test -n "$WMF_XML_DIR" ; then # Extract the first word of "xml2-config", so it can be a program name with args. set dummy xml2-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XML2_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $XML2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $WMF_XML_DIR/bin $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi XML2_CONFIG=$ac_cv_path_XML2_CONFIG if test -n "$XML2_CONFIG"; then echo "$as_me:$LINENO: result: $XML2_CONFIG" >&5 echo "${ECHO_T}$XML2_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else # Extract the first word of "xml2-config", so it can be a program name with args. set dummy xml2-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XML2_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $XML2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi XML2_CONFIG=$ac_cv_path_XML2_CONFIG if test -n "$XML2_CONFIG"; then echo "$as_me:$LINENO: result: $XML2_CONFIG" >&5 echo "${ECHO_T}$XML2_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test "x$XML2_CONFIG" != "x"; then WMF_XML_CFLAGS=`$XML2_CONFIG --cflags` WMF_XML_LDFLAGS=`$XML2_CONFIG --libs` libwmf_xml=libxml2 elif test $libwmf_xml = libxml2; then { { echo "$as_me:$LINENO: error: * * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *" >&5 echo "$as_me: error: * * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *" >&2;} { (exit 1); exit 1; }; } fi fi if test $libwmf_xml = expat; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_EXPAT 1 _ACEOF elif test $libwmf_xml = libxml2; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBXML2 1 _ACEOF else libwmf_xml=none WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" fi WMF_FT_CONFIG_CFLAGS="" WMF_FT_CFLAGS="" WMF_FT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS have_freetype=no # Check whether --with-freetype or --without-freetype was given. if test "${with_freetype+set}" = set; then withval="$with_freetype" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then FREETYPE_DIR=$withval fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires freetype2 * * *" >&5 echo "$as_me: error: * * * libwmf requires freetype2 * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test -n "$FREETYPE_DIR" ; then # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$FREETYPE_DIR/bin:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5 echo "${ECHO_T}$FREETYPE_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5 echo "${ECHO_T}$FREETYPE_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -n "$FREETYPE_CONFIG" ; then if test -n "$FREETYPE_DIR" ; then freetype_cflags="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include" freetype_libs=`$FREETYPE_CONFIG --libs` else freetype_cflags=`$FREETYPE_CONFIG --cflags` freetype_libs=`$FREETYPE_CONFIG --libs` fi else if test -n "$FREETYPE_DIR" ; then freetype_cflags="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include" freetype_libs="-L$FREETYPE_DIR/lib -lfreetype" else freetype_cflags="" freetype_libs="-lfreetype" fi fi CPPFLAGS="$freetype_cflags $CPPFLAGS" LDFLAGS="$LDFLAGS $freetype_libs" echo "$as_me:$LINENO: checking for FT_Init_FreeType in -lfreetype" >&5 echo $ECHO_N "checking for FT_Init_FreeType in -lfreetype... $ECHO_C" >&6 if test "${ac_cv_lib_freetype_FT_Init_FreeType+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreetype $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char FT_Init_FreeType (); int main () { FT_Init_FreeType (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_freetype_FT_Init_FreeType=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_freetype_FT_Init_FreeType=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_FT_Init_FreeType" >&5 echo "${ECHO_T}$ac_cv_lib_freetype_FT_Init_FreeType" >&6 if test $ac_cv_lib_freetype_FT_Init_FreeType = yes; then WMF_FT_LDFLAGS="$freetype_libs" else { { echo "$as_me:$LINENO: error: * * * freetype(2) is required * * *" >&5 echo "$as_me: error: * * * freetype(2) is required * * *" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_ft2build_h+set}" = set; then echo "$as_me:$LINENO: checking for ft2build.h" >&5 echo $ECHO_N "checking for ft2build.h... $ECHO_C" >&6 if test "${ac_cv_header_ft2build_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_ft2build_h" >&5 echo "${ECHO_T}$ac_cv_header_ft2build_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking ft2build.h usability" >&5 echo $ECHO_N "checking ft2build.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking ft2build.h presence" >&5 echo $ECHO_N "checking ft2build.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: ft2build.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: ft2build.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: ft2build.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: ft2build.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: ft2build.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: ft2build.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: ft2build.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: ft2build.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: ft2build.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: ft2build.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for ft2build.h" >&5 echo $ECHO_N "checking for ft2build.h... $ECHO_C" >&6 if test "${ac_cv_header_ft2build_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_ft2build_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_ft2build_h" >&5 echo "${ECHO_T}$ac_cv_header_ft2build_h" >&6 fi if test $ac_cv_header_ft2build_h = yes; then WMF_FT_CFLAGS="$freetype_cflags" WMF_FT_CONFIG_CFLAGS="$freetype_cflags" else { { echo "$as_me:$LINENO: error: * * * freetype(2) is required * * *" >&5 echo "$as_me: error: * * * freetype(2) is required * * *" >&2;} { (exit 1); exit 1; }; } fi GD_DEFS="$GD_DEFS -DHAVE_LIBFREETYPE" CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_Z_CONFIG_CFLAGS="" WMF_Z_CFLAGS="" WMF_Z_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-zlib or --without-zlib was given. if test "${with_zlib+set}" = set; then withval="$with_zlib" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then ZLIB_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires zlib * * *" >&5 echo "$as_me: error: * * * libwmf requires zlib * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test $LIBWMF_BUILDSTYLE = heavy; then if test "${ac_cv_header_zlib_h+set}" = set; then echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking zlib.h usability" >&5 echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking zlib.h presence" >&5 echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_zlib_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 fi if test $ac_cv_header_zlib_h = yes; then echo "$as_me:$LINENO: checking for gzputs in -lz" >&5 echo $ECHO_N "checking for gzputs in -lz... $ECHO_C" >&6 if test "${ac_cv_lib_z_gzputs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gzputs (); int main () { gzputs (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_z_gzputs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_z_gzputs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzputs" >&5 echo "${ECHO_T}$ac_cv_lib_z_gzputs" >&6 if test $ac_cv_lib_z_gzputs = yes; then if test "x$ZLIB_DIR" != "x" ; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lz" else WMF_Z_LDFLAGS="-lz" fi else echo "$as_me:$LINENO: checking for gzputs in -lgz" >&5 echo $ECHO_N "checking for gzputs in -lgz... $ECHO_C" >&6 if test "${ac_cv_lib_gz_gzputs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gzputs (); int main () { gzputs (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gz_gzputs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gz_gzputs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gz_gzputs" >&5 echo "${ECHO_T}$ac_cv_lib_gz_gzputs" >&6 if test $ac_cv_lib_gz_gzputs = yes; then if test "x$ZLIB_DIR" != "x" ; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi else { { echo "$as_me:$LINENO: error: * * * unable to find libz which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find libz which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi fi else { { echo "$as_me:$LINENO: error: * * * unable to find \"zlib.h\" which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find \"zlib.h\" which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_PNG_CFLAGS="" WMF_PNG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-png or --without-png was given. if test "${with_png+set}" = set; then withval="$with_png" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then PNG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires libpng * * *" >&5 echo "$as_me: error: * * * libwmf requires libpng * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test $LIBWMF_BUILDSTYLE = heavy; then CPPFLAGS="$CPPFLAGS $WMF_Z_CFLAGS" if test "${ac_cv_header_png_h+set}" = set; then echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6 if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking png.h usability" >&5 echo $ECHO_N "checking png.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking png.h presence" >&5 echo $ECHO_N "checking png.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: png.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: png.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: png.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: png.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: png.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6 if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_png_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6 fi if test $ac_cv_header_png_h = yes; then echo "$as_me:$LINENO: checking for png_write_image in -lpng" >&5 echo $ECHO_N "checking for png_write_image in -lpng... $ECHO_C" >&6 if test "${ac_cv_lib_png_png_write_image+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpng -lz -lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char png_write_image (); int main () { png_write_image (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_png_png_write_image=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_png_png_write_image=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_write_image" >&5 echo "${ECHO_T}$ac_cv_lib_png_png_write_image" >&6 if test $ac_cv_lib_png_png_write_image = yes; then if test "x$PNG_DIR" != "x" ; then WMF_PNG_CFLAGS="-I$PNG_DIR/include" WMF_PNG_LDFLAGS="-L$PNG_DIR/lib -lpng" else WMF_PNG_LDFLAGS="-lpng" fi else { { echo "$as_me:$LINENO: error: * * * unable to find libpng which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find libpng which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi else { { echo "$as_me:$LINENO: error: * * * unable to find \"png.h\" which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find \"png.h\" which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBPNG 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_LIBPNG" fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_JPEG_CFLAGS="" WMF_JPEG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-jpeg or --without-jpeg was given. if test "${with_jpeg+set}" = set; then withval="$with_jpeg" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then JPEG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_jpeg=yes else search_for_jpeg=no fi else search_for_jpeg=yes fi; if test $LIBWMF_BUILDSTYLE = lite; then search_for_jpeg=no fi # $LIBWMF_BUILDSTYLE = lite if test "$search_for_jpeg" != "no" ; then if test "${ac_cv_header_jpeglib_h+set}" = set; then echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_jpeglib_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 fi if test $ac_cv_header_jpeglib_h = yes; then echo "$as_me:$LINENO: checking for jpeg_CreateCompress in -ljpeg" >&5 echo $ECHO_N "checking for jpeg_CreateCompress in -ljpeg... $ECHO_C" >&6 if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char jpeg_CreateCompress (); int main () { jpeg_CreateCompress (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_jpeg_jpeg_CreateCompress=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_jpeg_jpeg_CreateCompress=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6 if test $ac_cv_lib_jpeg_jpeg_CreateCompress = yes; then if test "x$JPEG_DIR" != "x" ; then WMF_JPEG_CFLAGS="-I$JPEG_DIR/include" WMF_JPEG_LDFLAGS="-L$JPEG_DIR/lib -ljpeg" else WMF_JPEG_LDFLAGS="-ljpeg" fi cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBJPEG 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_LIBJPEG" libwmf_gd_jpeg=yes fi fi fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_GD_CFLAGS="" WMF_GD_LDFLAGS="" libwmf_gd="wmf" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-sys-gd or --without-sys-gd was given. if test "${with_sys_gd+set}" = set; then withval="$with_sys_gd" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then GD_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_gd=yes else search_for_gd=no fi else search_for_gd=yes fi; # Check whether --enable-gd or --disable-gd was given. if test "${enable_gd+set}" = set; then enableval="$enable_gd" if test "x$enableval" = "xno" ; then search_for_gd=no libwmf_gd="none" fi else if test $libwmf_layers = no ; then search_for_gd=no libwmf_gd="none" fi fi; if test "$search_for_gd" != "no" ; then other_libs="" if test "x$libwmf_x" = "xyes" ; then CPPFLAGS="$CPPFLAGS $WMF_X_CFLAGS" LDFLAGS="$LDFLAGS $WMF_X_LDFLAGS" echo "$as_me:$LINENO: checking for main in -lXpm" >&5 echo $ECHO_N "checking for main in -lXpm... $ECHO_C" >&6 if test "${ac_cv_lib_Xpm_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXpm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xpm_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xpm_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_main" >&5 echo "${ECHO_T}$ac_cv_lib_Xpm_main" >&6 if test $ac_cv_lib_Xpm_main = yes; then other_libs="$other_libs -lXpm" WMF_GD_LDFLAGS="-lXpm" fi fi if test "x$libwmf_gd_jpeg" = "xyes" ; then CPPFLAGS="$CPPFLAGS $WMF_JPEG_CFLAGS" LDFLAGS="$LDFLAGS $WMF_JPEG_LDFLAGS" other_libs="$other_libs -ljpeg" fi CPPFLAGS="$CPPFLAGS $WMF_FT_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" LDFLAGS="$LDFLAGS $WMF_FT_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS" other_libs="$other_libs -lfreetype -lpng -lz -lm" if test "${ac_cv_header_gd_h+set}" = set; then echo "$as_me:$LINENO: checking for gd.h" >&5 echo $ECHO_N "checking for gd.h... $ECHO_C" >&6 if test "${ac_cv_header_gd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 echo "${ECHO_T}$ac_cv_header_gd_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking gd.h usability" >&5 echo $ECHO_N "checking gd.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking gd.h presence" >&5 echo $ECHO_N "checking gd.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: gd.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: gd.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: gd.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: gd.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: gd.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: gd.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: gd.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for gd.h" >&5 echo $ECHO_N "checking for gd.h... $ECHO_C" >&6 if test "${ac_cv_header_gd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_gd_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 echo "${ECHO_T}$ac_cv_header_gd_h" >&6 fi if test $ac_cv_header_gd_h = yes; then echo "$as_me:$LINENO: checking for gdClipSetAdd in -lgd" >&5 echo $ECHO_N "checking for gdClipSetAdd in -lgd... $ECHO_C" >&6 if test "${ac_cv_lib_gd_gdClipSetAdd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgd $other_libs $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gdClipSetAdd (); int main () { gdClipSetAdd (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gd_gdClipSetAdd=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gd_gdClipSetAdd=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdClipSetAdd" >&5 echo "${ECHO_T}$ac_cv_lib_gd_gdClipSetAdd" >&6 if test $ac_cv_lib_gd_gdClipSetAdd = yes; then echo "$as_me:$LINENO: checking for gdft_draw_bitmap in -lgd" >&5 echo $ECHO_N "checking for gdft_draw_bitmap in -lgd... $ECHO_C" >&6 if test "${ac_cv_lib_gd_gdft_draw_bitmap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgd $other_libs $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gdft_draw_bitmap (); int main () { gdft_draw_bitmap (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gd_gdft_draw_bitmap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gd_gdft_draw_bitmap=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdft_draw_bitmap" >&5 echo "${ECHO_T}$ac_cv_lib_gd_gdft_draw_bitmap" >&6 if test $ac_cv_lib_gd_gdft_draw_bitmap = yes; then libwmf_gd="sys" fi fi fi fi if test "x$libwmf_gd" != "xnone" ; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GD 1 _ACEOF build_gd_layer=yes else build_gd_layer=no fi if test "x$libwmf_gd" = "xsys" ; then if test "x$GD_DIR" != "x" ; then WMF_GD_CFLAGS="-I$GD_DIR/include" WMF_GD_LDFLAGS="-L$GD_DIR/lib -lgd $WMF_GD_LDFLAGS" else WMF_GD_LDFLAGS="-lgd $WMF_GD_LDFLAGS" fi elif test "x$libwmf_gd" = "xnone" ; then libwmf_gd="sys" else WMF_GD_LDFLAGS="" fi if test "x$build_gd_layer" = "xyes" ; then LIBWMF_OPT_GD_TRUE= LIBWMF_OPT_GD_FALSE='#' else LIBWMF_OPT_GD_TRUE='#' LIBWMF_OPT_GD_FALSE= fi if test "x$libwmf_gd" = "xsys" ; then LIBWMF_OPT_SYS_GD_TRUE= LIBWMF_OPT_SYS_GD_FALSE='#' else LIBWMF_OPT_SYS_GD_TRUE='#' LIBWMF_OPT_SYS_GD_FALSE= fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_PLOT_CFLAGS="" WMF_PLOT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # AC_ARG_WITH(plot,[ --with-plot=DIR use GNU plotutils (>= 2.4.0) in DIR (default no)],[ # if [ test "x$withval" != "xno" ]; then # AC_MSG_ERROR([* * * plotutils is not supported, sorry * * *]) # if [ test "x$withval" != "xyes" ]; then # PLOT_DIR=$withval # CPPFLAGS="$CPPFLAGS -I$withval/include" # LDFLAGS="$LDFLAGS -L$withval/lib" # fi # search_for_plot=yes # else # search_for_plot=no # fi #],[ search_for_plot=no #]) search_for_plot=no if test "$search_for_plot" != "no" ; then if test "${ac_cv_header_plot_h+set}" = set; then echo "$as_me:$LINENO: checking for plot.h" >&5 echo $ECHO_N "checking for plot.h... $ECHO_C" >&6 if test "${ac_cv_header_plot_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_plot_h" >&5 echo "${ECHO_T}$ac_cv_header_plot_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking plot.h usability" >&5 echo $ECHO_N "checking plot.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking plot.h presence" >&5 echo $ECHO_N "checking plot.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: plot.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: plot.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: plot.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: plot.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: plot.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: plot.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: plot.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: plot.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: plot.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: plot.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for plot.h" >&5 echo $ECHO_N "checking for plot.h... $ECHO_C" >&6 if test "${ac_cv_header_plot_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_plot_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_plot_h" >&5 echo "${ECHO_T}$ac_cv_header_plot_h" >&6 fi if test $ac_cv_header_plot_h = yes; then echo "$as_me:$LINENO: checking for pl_libplot_ver in -lplot" >&5 echo $ECHO_N "checking for pl_libplot_ver in -lplot... $ECHO_C" >&6 if test "${ac_cv_lib_plot_pl_libplot_ver+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lplot $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pl_libplot_ver (); int main () { pl_libplot_ver (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_plot_pl_libplot_ver=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_plot_pl_libplot_ver=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_plot_pl_libplot_ver" >&5 echo "${ECHO_T}$ac_cv_lib_plot_pl_libplot_ver" >&6 if test $ac_cv_lib_plot_pl_libplot_ver = yes; then ac_can_link_libplot=no LIBPLOT_LIBS="-lplot" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot requires X" >&5 echo $ECHO_N "checking whether libplot requires X... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags if test "x$no_x" != "xyes" ; then if test $ac_can_link_libplot != yes ; then LIBPLOT_LIBS="-lplot $X_LIBS -lXaw -lXmu -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot links against Athena" >&5 echo $ECHO_N "checking whether libplot links against Athena... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags fi if test $ac_can_link_libplot != yes ; then ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $X_LIBS" echo "$as_me:$LINENO: checking for main in -lXp" >&5 echo $ECHO_N "checking for main in -lXp... $ECHO_C" >&6 if test "${ac_cv_lib_Xp_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXp -lXext -lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xp_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xp_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_main" >&5 echo "${ECHO_T}$ac_cv_lib_Xp_main" >&6 if test $ac_cv_lib_Xp_main = yes; then libXp="-lXp" else libXp="" fi LIBPLOT_LIBS="-lplot $X_LIBS -lXm $libXp -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" echo "$as_me:$LINENO: checking for main in -lgen" >&5 echo $ECHO_N "checking for main in -lgen... $ECHO_C" >&6 if test "${ac_cv_lib_gen_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgen $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gen_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gen_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gen_main" >&5 echo "${ECHO_T}$ac_cv_lib_gen_main" >&6 if test $ac_cv_lib_gen_main = yes; then LIBPLOT_LIBS="$LIBPLOT_LIBS -lgen" fi echo "$as_me:$LINENO: checking for main in -lPW" >&5 echo $ECHO_N "checking for main in -lPW... $ECHO_C" >&6 if test "${ac_cv_lib_PW_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lPW $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_PW_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_PW_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_PW_main" >&5 echo "${ECHO_T}$ac_cv_lib_PW_main" >&6 if test $ac_cv_lib_PW_main = yes; then LIBPLOT_LIBS="$LIBPLOT_LIBS -lPW" fi LDFLAGS=$ac_libplot_ldflags LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot links against Motif" >&5 echo $ECHO_N "checking whether libplot links against Motif... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags fi fi if test $ac_can_link_libplot != no ; then if test "x$PLOT_DIR" != "x" ; then WMF_PLOT_CFLAGS="-I$PLOT_DIR/include" WMF_PLOT_LDFLAGS="-L$PLOT_DIR/lib $LIBPLOT_LIBS" else WMF_PLOT_LDFLAGS="$LIBPLOT_LIBS" fi cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBPLOT 1 _ACEOF libwmf_plot=maybe else { { echo "$as_me:$LINENO: error: * * * sorry - unable to link against libplot * * *" >&5 echo "$as_me: error: * * * sorry - unable to link against libplot * * *" >&2;} { (exit 1); exit 1; }; } fi else { { echo "$as_me:$LINENO: error: GNU plotutils >= 2.4.0 required" >&5 echo "$as_me: error: GNU plotutils >= 2.4.0 required" >&2;} { (exit 1); exit 1; }; } fi fi fi if test "x$libwmf_plot" != "xno" ; then LIBWMF_OPT_PLOT_TRUE= LIBWMF_OPT_PLOT_FALSE='#' else LIBWMF_OPT_PLOT_TRUE='#' LIBWMF_OPT_PLOT_FALSE= fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags wmf_gdk_pixbuf=no GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" GDK_PIXBUF_DIR="" if test $LIBWMF_BUILDSTYLE != lite; then succeeded=no if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo "$as_me:$LINENO: checking for gdk-pixbuf-2.0 >= 2.1.2" >&5 echo $ECHO_N "checking for gdk-pixbuf-2.0 >= 2.1.2... $ECHO_C" >&6 if $PKG_CONFIG --exists "gdk-pixbuf-2.0 >= 2.1.2" ; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 succeeded=yes echo "$as_me:$LINENO: checking GDK_PIXBUF_CFLAGS" >&5 echo $ECHO_N "checking GDK_PIXBUF_CFLAGS... $ECHO_C" >&6 GDK_PIXBUF_CFLAGS=`$PKG_CONFIG --cflags "gdk-pixbuf-2.0 >= 2.1.2"` echo "$as_me:$LINENO: result: $GDK_PIXBUF_CFLAGS" >&5 echo "${ECHO_T}$GDK_PIXBUF_CFLAGS" >&6 echo "$as_me:$LINENO: checking GDK_PIXBUF_LIBS" >&5 echo $ECHO_N "checking GDK_PIXBUF_LIBS... $ECHO_C" >&6 GDK_PIXBUF_LIBS=`$PKG_CONFIG --libs "gdk-pixbuf-2.0 >= 2.1.2"` echo "$as_me:$LINENO: result: $GDK_PIXBUF_LIBS" >&5 echo "${ECHO_T}$GDK_PIXBUF_LIBS" >&6 else GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. GDK_PIXBUF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gdk-pixbuf-2.0 >= 2.1.2"` fi else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GDK_PIXBUF_DIR="gtk-2.0/$GTK_VERSION/loaders" wmf_gdk_pixbuf=yes else wmf_gdk_pixbuf=no fi fi if test $wmf_gdk_pixbuf = yes; then LIBWMF_GDK_PIXBUF_TRUE= LIBWMF_GDK_PIXBUF_FALSE='#' else LIBWMF_GDK_PIXBUF_TRUE='#' LIBWMF_GDK_PIXBUF_FALSE= fi # Check whether --with-docdir or --without-docdir was given. if test "${with_docdir+set}" = set; then withval="$with_docdir" WMF_DOCDIR=$withval else if test "x$prefix" = "xNONE"; then WMF_DOCDIR=$ac_default_prefix/share/doc/$PACKAGE else WMF_DOCDIR=$prefix/share/doc/$PACKAGE fi fi; # Check whether --with-fontdir or --without-fontdir was given. if test "${with_fontdir+set}" = set; then withval="$with_fontdir" WMF_FONTDIR=$withval else if test "x$prefix" = "xNONE"; then WMF_FONTDIR=$ac_default_prefix/share/$PACKAGE/fonts else WMF_FONTDIR=$prefix/share/$PACKAGE/fonts fi fi; # Check whether --with-sysfontmap or --without-sysfontmap was given. if test "${with_sysfontmap+set}" = set; then withval="$with_sysfontmap" WMF_SYS_FONTMAP=$withval else WMF_SYS_FONTMAP=/usr/share/fonts/fontmap fi; # Check whether --with-xtrafontmap or --without-xtrafontmap was given. if test "${with_xtrafontmap+set}" = set; then withval="$with_xtrafontmap" WMF_XTRA_FONTMAP=$withval else WMF_XTRA_FONTMAP=$WMF_FONTDIR/fontmap fi; # Check whether --with-gsfontmap or --without-gsfontmap was given. if test "${with_gsfontmap+set}" = set; then withval="$with_gsfontmap" WMF_GS_FONTMAP=$withval else if test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS ; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS elif test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap ; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap elif test -r 'c:/progra~1/gs/gs/lib/fontmap.gs' ; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap.gs' elif test -r 'c:/progra~1/gs/gs/lib/fontmap' ; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap' elif test -r 'c:/gs/fonts/fontmap.gs' ; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap.gs' elif test -r 'c:/gs/fonts/fontmap' ; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap' else WMF_GS_FONTMAP=/usr/share/ghostscript/5.50/Fontmap if test -d /usr/share/ghostscript; then for i in `ls /usr/share/ghostscript`; do if test -r "/usr/share/ghostscript/$i/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap" fi done fi fi fi; # Check whether --with-gsfontdir or --without-gsfontdir was given. if test "${with_gsfontdir+set}" = set; then withval="$with_gsfontdir" WMF_GS_FONTDIR=$withval else if test -d /var/lib/defoma/gs.d/dirs/fonts ; then WMF_GS_FONTDIR=/var/lib/defoma/gs.d/dirs/fonts elif test -d 'c:/progra~1/gs/gs/lib/fonts' ; then WMF_GS_FONTDIR='c:/progra~1/gs/gs/lib/fonts' elif test -d 'c:/gs/fonts' ; then WMF_GS_FONTDIR='c:/gs/fonts' else WMF_GS_FONTDIR=/usr/share/fonts/default/Type1 fi fi; WMF_CFLAGS="$WMF_FT_CFLAGS $WMF_X_CFLAGS $WMF_PLOT_CFLAGS $WMF_XML_CFLAGS" WMF_CFLAGS="$WMF_CFLAGS $WMF_GD_CFLAGS $WMF_JPEG_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" WMF_CONFIG_CFLAGS="$WMF_FT_CONFIG_CFLAGS $WMF_Z_CONFIG_CFLAGS $WMF_X_CONFIG_CFLAGS" WMF_LIBFLAGS="$WMF_PLOT_LDFLAGS $WMF_GD_LDFLAGS $WMF_FT_LDFLAGS $WMF_X_LDFLAGS $WMF_XML_LDFLAGS" WMF_LIBFLAGS="$WMF_LIBFLAGS $WMF_JPEG_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS $SYS_LIBM" ac_config_files="$ac_config_files Makefile doc/Makefile doc/caolan/Makefile doc/caolan/pics/Makefile doc/html/Makefile fonts/Makefile fonts/libwmf-fontmap fonts/fontmap include/Makefile include/libwmf/Makefile src/Makefile src/extra/Makefile src/extra/trio/Makefile src/extra/gd/Makefile src/ipa/Makefile src/convert/Makefile libwmf-config libwmf.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${LIBWMF_BUILD_ALL_TRUE}" && test -z "${LIBWMF_BUILD_ALL_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_BUILD_ALL\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_BUILD_ALL\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_TRIO_TRUE}" && test -z "${LIBWMF_OPT_TRIO_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_TRIO\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_TRIO\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_MODULES_TRUE}" && test -z "${LIBWMF_OPT_MODULES_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_MODULES\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_MODULES\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_LAYERS_TRUE}" && test -z "${LIBWMF_OPT_LAYERS_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_LAYERS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_LAYERS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_X_TRUE}" && test -z "${LIBWMF_OPT_X_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_X\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_X\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_GD_TRUE}" && test -z "${LIBWMF_OPT_GD_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_SYS_GD_TRUE}" && test -z "${LIBWMF_OPT_SYS_GD_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_SYS_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_SYS_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_PLOT_TRUE}" && test -z "${LIBWMF_OPT_PLOT_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_PLOT\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_PLOT\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_GDK_PIXBUF_TRUE}" && test -z "${LIBWMF_GDK_PIXBUF_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_GDK_PIXBUF\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_GDK_PIXBUF\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by libwmf $as_me 0.2.8, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ libwmf config.status 0.2.8 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/caolan/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/caolan/Makefile" ;; "doc/caolan/pics/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/caolan/pics/Makefile" ;; "doc/html/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/Makefile" ;; "fonts/Makefile" ) CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "fonts/libwmf-fontmap" ) CONFIG_FILES="$CONFIG_FILES fonts/libwmf-fontmap" ;; "fonts/fontmap" ) CONFIG_FILES="$CONFIG_FILES fonts/fontmap" ;; "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/libwmf/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/libwmf/Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/extra/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;; "src/extra/trio/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/trio/Makefile" ;; "src/extra/gd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/gd/Makefile" ;; "src/ipa/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ipa/Makefile" ;; "src/convert/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/convert/Makefile" ;; "libwmf-config" ) CONFIG_FILES="$CONFIG_FILES libwmf-config" ;; "libwmf.spec" ) CONFIG_FILES="$CONFIG_FILES libwmf.spec" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "wmfconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS wmfconfig.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@LIBWMF_PACKAGE@,$LIBWMF_PACKAGE,;t t s,@LIBWMF_VERSION@,$LIBWMF_VERSION,;t t s,@LIBWMF_RELEASE@,$LIBWMF_RELEASE,;t t s,@LT_RELEASE@,$LT_RELEASE,;t t s,@LT_CURRENT@,$LT_CURRENT,;t t s,@LT_REVISION@,$LT_REVISION,;t t s,@LT_AGE@,$LT_AGE,;t t s,@LT_LITE_CURRENT@,$LT_LITE_CURRENT,;t t s,@LT_LITE_REVISION@,$LT_LITE_REVISION,;t t s,@LT_LITE_AGE@,$LT_LITE_AGE,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@AMTAR@,$AMTAR,;t t s,@am__tar@,$am__tar,;t t s,@am__untar@,$am__untar,;t t s,@LIBWMF_BUILDSTYLE@,$LIBWMF_BUILDSTYLE,;t t s,@LIBWMF_BUILD_ALL_TRUE@,$LIBWMF_BUILD_ALL_TRUE,;t t s,@LIBWMF_BUILD_ALL_FALSE@,$LIBWMF_BUILD_ALL_FALSE,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@SYS_LIBM@,$SYS_LIBM,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@CPP@,$CPP,;t t s,@LN_S@,$LN_S,;t t s,@EGREP@,$EGREP,;t t s,@ECHO@,$ECHO,;t t s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@DLLTOOL@,$DLLTOOL,;t t s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t s,@AS@,$AS,;t t s,@ac_ct_AS@,$ac_ct_AS,;t t s,@OBJDUMP@,$OBJDUMP,;t t s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@CXXCPP@,$CXXCPP,;t t s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@LIBWMF_OPT_TRIO_TRUE@,$LIBWMF_OPT_TRIO_TRUE,;t t s,@LIBWMF_OPT_TRIO_FALSE@,$LIBWMF_OPT_TRIO_FALSE,;t t s,@LIBWMF_OPT_MODULES_TRUE@,$LIBWMF_OPT_MODULES_TRUE,;t t s,@LIBWMF_OPT_MODULES_FALSE@,$LIBWMF_OPT_MODULES_FALSE,;t t s,@LIBWMF_OPT_LAYERS_TRUE@,$LIBWMF_OPT_LAYERS_TRUE,;t t s,@LIBWMF_OPT_LAYERS_FALSE@,$LIBWMF_OPT_LAYERS_FALSE,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@LIBWMF_OPT_X_TRUE@,$LIBWMF_OPT_X_TRUE,;t t s,@LIBWMF_OPT_X_FALSE@,$LIBWMF_OPT_X_FALSE,;t t s,@XML2_CONFIG@,$XML2_CONFIG,;t t s,@FREETYPE_CONFIG@,$FREETYPE_CONFIG,;t t s,@LIBWMF_OPT_GD_TRUE@,$LIBWMF_OPT_GD_TRUE,;t t s,@LIBWMF_OPT_GD_FALSE@,$LIBWMF_OPT_GD_FALSE,;t t s,@LIBWMF_OPT_SYS_GD_TRUE@,$LIBWMF_OPT_SYS_GD_TRUE,;t t s,@LIBWMF_OPT_SYS_GD_FALSE@,$LIBWMF_OPT_SYS_GD_FALSE,;t t s,@LIBWMF_OPT_PLOT_TRUE@,$LIBWMF_OPT_PLOT_TRUE,;t t s,@LIBWMF_OPT_PLOT_FALSE@,$LIBWMF_OPT_PLOT_FALSE,;t t s,@PKG_CONFIG@,$PKG_CONFIG,;t t s,@GDK_PIXBUF_CFLAGS@,$GDK_PIXBUF_CFLAGS,;t t s,@GDK_PIXBUF_LIBS@,$GDK_PIXBUF_LIBS,;t t s,@LIBWMF_GDK_PIXBUF_TRUE@,$LIBWMF_GDK_PIXBUF_TRUE,;t t s,@LIBWMF_GDK_PIXBUF_FALSE@,$LIBWMF_GDK_PIXBUF_FALSE,;t t s,@GDK_PIXBUF_DIR@,$GDK_PIXBUF_DIR,;t t s,@WMF_CFLAGS@,$WMF_CFLAGS,;t t s,@WMF_CONFIG_CFLAGS@,$WMF_CONFIG_CFLAGS,;t t s,@WMF_LIBFLAGS@,$WMF_LIBFLAGS,;t t s,@WMF_DOCDIR@,$WMF_DOCDIR,;t t s,@WMF_FONTDIR@,$WMF_FONTDIR,;t t s,@WMF_SYS_FONTMAP@,$WMF_SYS_FONTMAP,;t t s,@WMF_XTRA_FONTMAP@,$WMF_XTRA_FONTMAP,;t t s,@WMF_GS_FONTMAP@,$WMF_GS_FONTMAP,;t t s,@WMF_GS_FONTDIR@,$WMF_GS_FONTDIR,;t t s,@WMF_DEFS@,$WMF_DEFS,;t t s,@GD_DEFS@,$GD_DEFS,;t t s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi echo "" echo " Support for X: $libwmf_x" echo " Support for GD: $libwmf_gd" echo " Support for JPEG though GD: $libwmf_gd_jpeg" echo " Support for XML: $libwmf_xml" echo "" echo " Documentation directory: $WMF_DOCDIR" echo " Font directory: $WMF_FONTDIR" echo " System XML fontmap file: $WMF_SYS_FONTMAP" echo " Non-system XML fontmap file: $WMF_XTRA_FONTMAP" echo " ghostscript fontmap file: $WMF_GS_FONTMAP" echo " ghostscript font directory: $WMF_GS_FONTDIR" echo "" echo " building gdk-pixbuf plug-in? $wmf_gdk_pixbuf" echo "" libwmf-0.2.8.4/autom4te.cache/traces.00000664000077100007710000150135310272000256016655 0ustar fjffjf00000000000000m4trace:/usr/share/aclocal/libtool.m4:70: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote AM_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or AM_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])]) m4trace:/usr/share/aclocal/libtool.m4:90: -1- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ]) m4trace:/usr/share/aclocal/libtool.m4:232: -1- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ]) m4trace:/usr/share/aclocal/libtool.m4:245: -1- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC ]) m4trace:/usr/share/aclocal/libtool.m4:264: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_LINK_IFELSE(AC_LANG_PROGRAM,[ aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ]) m4trace:/usr/share/aclocal/libtool.m4:275: -1- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ]) m4trace:/usr/share/aclocal/libtool.m4:431: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])]) m4trace:/usr/share/aclocal/libtool.m4:559: -1- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ]) m4trace:/usr/share/aclocal/libtool.m4:602: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ]) m4trace:/usr/share/aclocal/libtool.m4:634: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD else $2=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ]) m4trace:/usr/share/aclocal/libtool.m4:705: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ]) m4trace:/usr/share/aclocal/libtool.m4:712: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ]) m4trace:/usr/share/aclocal/libtool.m4:801: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ]) m4trace:/usr/share/aclocal/libtool.m4:914: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ]) m4trace:/usr/share/aclocal/libtool.m4:963: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ]) m4trace:/usr/share/aclocal/libtool.m4:990: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ]) m4trace:/usr/share/aclocal/libtool.m4:1007: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ]) m4trace:/usr/share/aclocal/libtool.m4:1048: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ]) m4trace:/usr/share/aclocal/libtool.m4:1077: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ]) m4trace:/usr/share/aclocal/libtool.m4:1642: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no ]) m4trace:/usr/share/aclocal/libtool.m4:1741: -1- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && test "X$CXX" != "Xno"; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ]) m4trace:/usr/share/aclocal/libtool.m4:1749: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ]) m4trace:/usr/share/aclocal/libtool.m4:1757: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ]) m4trace:/usr/share/aclocal/libtool.m4:1787: -1- AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ]) m4trace:/usr/share/aclocal/libtool.m4:1796: -1- AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ]) m4trace:/usr/share/aclocal/libtool.m4:1826: -1- AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ]) m4trace:/usr/share/aclocal/libtool.m4:1835: -1- AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ]) m4trace:/usr/share/aclocal/libtool.m4:1865: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ]) m4trace:/usr/share/aclocal/libtool.m4:1874: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ]) m4trace:/usr/share/aclocal/libtool.m4:1884: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ]) m4trace:/usr/share/aclocal/libtool.m4:1962: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ]) m4trace:/usr/share/aclocal/libtool.m4:1977: -1- AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ]) m4trace:/usr/share/aclocal/libtool.m4:2062: -1- AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) case $host_cpu in alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ]) m4trace:/usr/share/aclocal/libtool.m4:2332: -1- AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ]) m4trace:/usr/share/aclocal/libtool.m4:2353: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ]) m4trace:/usr/share/aclocal/libtool.m4:2378: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ]) m4trace:/usr/share/aclocal/libtool.m4:2414: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ]) m4trace:/usr/share/aclocal/libtool.m4:2422: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ]) m4trace:/usr/share/aclocal/libtool.m4:2431: -1- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ]) m4trace:/usr/share/aclocal/libtool.m4:2439: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ]) m4trace:/usr/share/aclocal/libtool.m4:2447: -1- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ]) m4trace:/usr/share/aclocal/libtool.m4:2455: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ]) m4trace:/usr/share/aclocal/libtool.m4:2468: -1- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ]) m4trace:/usr/share/aclocal/libtool.m4:2477: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ]) m4trace:/usr/share/aclocal/libtool.m4:2485: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) m4trace:/usr/share/aclocal/libtool.m4:2622: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' _LT_AC_SYS_COMPILER # # Check for any special shared library compilation flags. # _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= if test "$GCC" = no; then case $host_os in sco3.2v5*) _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' ;; esac fi if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : else AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no fi fi # # Check to make sure the static flag actually works. # AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) # Report which librarie types wil actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; darwin* | rhapsody*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' ;; esac fi ;; esac output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ]) m4trace:/usr/share/aclocal/libtool.m4:2630: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) m4trace:/usr/share/aclocal/libtool.m4:3517: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sco*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case $cc_basename in CC) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ]) m4trace:/usr/share/aclocal/libtool.m4:3653: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], [ dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ]) m4trace:/usr/share/aclocal/libtool.m4:4349: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ]) m4trace:/usr/share/aclocal/libtool.m4:4535: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris* | sysv5*) symcode='[[BDRT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) m4trace:/usr/share/aclocal/libtool.m4:4996: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux*) case $CC in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; sco3.2v5*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac ]) m4trace:/usr/share/aclocal/libtool.m4:5829: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds" fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=yes else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds it's shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi4*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no case "$host_os" in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; *) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; sco3.2v5*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4.2uw2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv5*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ]) m4trace:/usr/share/aclocal/libtool.m4:5869: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ]) m4trace:/usr/share/aclocal/libtool.m4:5874: -1- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) m4trace:/usr/share/aclocal/libtool.m4:5878: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) m4trace:/usr/share/aclocal/libtool.m4:5879: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) m4trace:/usr/share/aclocal/libtool.m4:5880: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) m4trace:/usr/share/aclocal/libtool.m4:5881: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) m4trace:/usr/share/aclocal/libtool.m4:5882: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) m4trace:/usr/share/aclocal/libtool.m4:5883: -1- AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) m4trace:/usr/share/aclocal/libtool.m4:5884: -1- AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) m4trace:/usr/share/aclocal/libtool.m4:5893: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) m4trace:/usr/share/aclocal/libtool.m4:5897: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) m4trace:/usr/share/aclocal/libtool.m4:5960: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done SED=$lt_cv_path_SED ]) AC_MSG_RESULT([$SED]) ]) m4trace:/usr/share/aclocal/pkg.m4:55: -1- AC_DEFUN([PKG_CHECK_MODULES], [ succeeded=no if test -z "$PKG_CONFIG"; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then AC_MSG_CHECKING(for $2) if $PKG_CONFIG --exists "$2" ; then AC_MSG_RESULT(yes) succeeded=yes AC_MSG_CHECKING($1_CFLAGS) $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` AC_MSG_RESULT($$1_CFLAGS) AC_MSG_CHECKING($1_LIBS) $1_LIBS=`$PKG_CONFIG --libs "$2"` AC_MSG_RESULT($$1_LIBS) else $1_CFLAGS="" $1_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` ifelse([$4], ,echo $$1_PKG_ERRORS,) fi AC_SUBST($1_CFLAGS) AC_SUBST($1_LIBS) else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then ifelse([$3], , :, [$3]) else ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) fi ]) m4trace:/usr/share/aclocal-1.9/amversion.m4:23: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) m4trace:/usr/share/aclocal-1.9/amversion.m4:30: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.9.2])]) m4trace:/usr/share/aclocal-1.9/auxdir.m4:63: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) m4trace:/usr/share/aclocal-1.9/cond.m4:42: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) m4trace:/usr/share/aclocal-1.9/depend.m4:142: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) m4trace:/usr/share/aclocal-1.9/depend.m4:152: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) m4trace:/usr/share/aclocal-1.9/depend.m4:167: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) m4trace:/usr/share/aclocal-1.9/depout.m4:64: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ]) m4trace:/usr/share/aclocal-1.9/depout.m4:78: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) m4trace:/usr/share/aclocal-1.9/header.m4:23: -1- AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) m4trace:/usr/share/aclocal-1.9/header.m4:23: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.])dnl AC_CONFIG_HEADERS($@)]) m4trace:/usr/share/aclocal-1.9/init.m4:103: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.58])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) m4trace:/usr/share/aclocal-1.9/init.m4:124: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) m4trace:/usr/share/aclocal-1.9/install-sh.m4:25: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) m4trace:/usr/share/aclocal-1.9/lead-dot.m4:32: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) m4trace:/usr/share/aclocal-1.9/make.m4:62: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) m4trace:/usr/share/aclocal-1.9/missing.m4:31: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) m4trace:/usr/share/aclocal-1.9/missing.m4:48: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) m4trace:/usr/share/aclocal-1.9/mkdirp.m4:73: -1- AC_DEFUN([AM_PROG_MKDIR_P], [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi AC_SUBST([mkdir_p])]) m4trace:/usr/share/aclocal-1.9/options.m4:25: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) m4trace:/usr/share/aclocal-1.9/options.m4:31: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) m4trace:/usr/share/aclocal-1.9/options.m4:37: -1- AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) m4trace:/usr/share/aclocal-1.9/options.m4:43: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) m4trace:/usr/share/aclocal-1.9/runlog.m4:27: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) m4trace:/usr/share/aclocal-1.9/sanity.m4:63: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) m4trace:/usr/share/aclocal-1.9/strip.m4:38: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) m4trace:/usr/share/aclocal-1.9/tar.m4:107: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) m4trace:acinclude.m4:30: -1- AC_DEFUN([AC_CHECK_VERSION], [ current_version=$1 current_major_version=`echo $current_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` current_minor_version=`echo $current_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` current_micro_version=`echo $current_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` minimum_version=$2 minimum_major_version=`echo $minimum_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` minimum_minor_version=`echo $minimum_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` minimum_micro_version=`echo $minimum_version | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` ac_check_version_okay=no if [ test $current_major_version -gt $minimum_major_version ]; then ac_check_version_okay=yes elif [ test $current_major_version -eq $minimum_major_version ]; then if [ test $current_minor_version -gt $minimum_minor_version ]; then ac_check_version_okay=yes elif [ test $current_minor_version -eq $minimum_minor_version ]; then if [ test $current_micro_version -ge $minimum_micro_version ]; then ac_check_version_okay=yes fi fi fi ]) m4trace:acinclude.m4:131: -1- AC_DEFUN([AC_LIBPLOT_LIBS], [ ac_can_link_libplot=no LIBPLOT_LIBS="-lplot" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" AC_MSG_CHECKING(whether libplot requires X) AC_TRY_LINK([ #include #include ],[ plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ],[ ac_can_link_libplot=yes AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) ]) LDFLAGS=$ac_libplot_ldflags if [ test "x$no_x" != "xyes" ]; then dnl Athena: if [ test $ac_can_link_libplot != yes ]; then LIBPLOT_LIBS="-lplot $X_LIBS -lXaw -lXmu -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" AC_MSG_CHECKING(whether libplot links against Athena) AC_TRY_LINK([ #include #include ],[ plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ],[ ac_can_link_libplot=yes AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) LDFLAGS=$ac_libplot_ldflags fi dnl Motif: if [ test $ac_can_link_libplot != yes ]; then ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $X_LIBS" AC_CHECK_LIB(Xp,main,[libXp="-lXp"],[libXp=""],-lXext -lX11) LIBPLOT_LIBS="-lplot $X_LIBS -lXm $libXp -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" AC_CHECK_LIB(gen,main,[LIBPLOT_LIBS="$LIBPLOT_LIBS -lgen"]) AC_CHECK_LIB(PW,main,[LIBPLOT_LIBS="$LIBPLOT_LIBS -lPW"]) LDFLAGS=$ac_libplot_ldflags LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" AC_MSG_CHECKING(whether libplot links against Motif) AC_TRY_LINK([ #include #include ],[ plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ],[ ac_can_link_libplot=yes AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) LDFLAGS=$ac_libplot_ldflags fi fi ]) m4trace:configure.ac:1: -1- AC_INIT([libwmf], [0.2.8], [wvware-devel@sourceforge.net]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:1: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.ac:1: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.ac:1: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.ac:1: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.ac:1: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.ac:1: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.ac:1: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.ac:1: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.ac:1: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.ac:1: -1- AC_SUBST([datadir], ['${prefix}/share']) m4trace:configure.ac:1: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.ac:1: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.ac:1: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.ac:1: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.ac:1: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.ac:1: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.ac:1: -1- AC_SUBST([infodir], ['${prefix}/info']) m4trace:configure.ac:1: -1- AC_SUBST([mandir], ['${prefix}/man']) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.ac:1: -1- AC_SUBST([build_alias]) m4trace:configure.ac:1: -1- AC_SUBST([host_alias]) m4trace:configure.ac:1: -1- AC_SUBST([target_alias]) m4trace:configure.ac:1: -1- AC_SUBST([DEFS]) m4trace:configure.ac:1: -1- AC_SUBST([ECHO_C]) m4trace:configure.ac:1: -1- AC_SUBST([ECHO_N]) m4trace:configure.ac:1: -1- AC_SUBST([ECHO_T]) m4trace:configure.ac:1: -1- AC_SUBST([LIBS]) m4trace:configure.ac:5: -1- AC_SUBST([LIBWMF_PACKAGE]) m4trace:configure.ac:30: -1- AC_SUBST([LIBWMF_VERSION]) m4trace:configure.ac:31: -1- AC_SUBST([LIBWMF_RELEASE]) m4trace:configure.ac:35: -1- AC_SUBST([LT_RELEASE]) m4trace:configure.ac:40: -1- AC_SUBST([LT_CURRENT]) m4trace:configure.ac:41: -1- AC_SUBST([LT_REVISION]) m4trace:configure.ac:42: -1- AC_SUBST([LT_AGE]) m4trace:configure.ac:47: -1- AC_SUBST([LT_LITE_CURRENT]) m4trace:configure.ac:48: -1- AC_SUBST([LT_LITE_REVISION]) m4trace:configure.ac:49: -1- AC_SUBST([LT_LITE_AGE]) m4trace:configure.ac:56: -1- AM_INIT_AUTOMAKE([$PACKAGE], [$VERSION], [no-define]) m4trace:configure.ac:56: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.ac:56: -1- AM_SET_CURRENT_AUTOMAKE_VERSION m4trace:configure.ac:56: -1- AM_AUTOMAKE_VERSION([1.9.2]) m4trace:configure.ac:56: -1- AC_PROG_INSTALL m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.ac:56: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.ac:56: -1- _AM_SET_OPTION([no-define]) m4trace:configure.ac:56: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.ac:56: -1- AC_SUBST([PACKAGE], [$PACKAGE]) m4trace:configure.ac:56: -1- AC_SUBST([VERSION], [$VERSION]) m4trace:configure.ac:56: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) m4trace:configure.ac:56: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.ac:56: -1- AM_SANITY_CHECK m4trace:configure.ac:56: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) m4trace:configure.ac:56: -1- AM_MISSING_HAS_RUN m4trace:configure.ac:56: -1- AM_AUX_DIR_EXPAND m4trace:configure.ac:56: -1- AC_SUBST([ACLOCAL]) m4trace:configure.ac:56: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) m4trace:configure.ac:56: -1- AC_SUBST([AUTOCONF]) m4trace:configure.ac:56: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) m4trace:configure.ac:56: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.ac:56: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) m4trace:configure.ac:56: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.ac:56: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) m4trace:configure.ac:56: -1- AC_SUBST([MAKEINFO]) m4trace:configure.ac:56: -1- AM_PROG_INSTALL_SH m4trace:configure.ac:56: -1- AC_SUBST([install_sh]) m4trace:configure.ac:56: -1- AM_PROG_INSTALL_STRIP m4trace:configure.ac:56: -1- AC_SUBST([STRIP]) m4trace:configure.ac:56: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.ac:56: -1- AM_PROG_MKDIR_P m4trace:configure.ac:56: -1- AC_SUBST([mkdir_p]) m4trace:configure.ac:56: -1- AC_PROG_AWK m4trace:configure.ac:56: -1- AC_SUBST([AWK]) m4trace:configure.ac:56: -1- AC_PROG_MAKE_SET m4trace:configure.ac:56: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:56: -1- AM_SET_LEADING_DOT m4trace:configure.ac:56: -1- AC_SUBST([am__leading_dot]) m4trace:configure.ac:56: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) m4trace:configure.ac:56: -2- _AM_MANGLE_OPTION([tar-ustar]) m4trace:configure.ac:56: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) m4trace:configure.ac:56: -2- _AM_MANGLE_OPTION([tar-pax]) m4trace:configure.ac:56: -1- _AM_PROG_TAR([v7]) m4trace:configure.ac:56: -1- AM_MISSING_PROG([AMTAR], [tar]) m4trace:configure.ac:56: -1- AC_SUBST([AMTAR]) m4trace:configure.ac:56: -1- AC_SUBST([am__tar]) m4trace:configure.ac:56: -1- AC_SUBST([am__untar]) m4trace:configure.ac:56: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) m4trace:configure.ac:56: -2- _AM_MANGLE_OPTION([no-dependencies]) m4trace:configure.ac:59: -1- AM_CONFIG_HEADER([wmfconfig.h]) m4trace:configure.ac:59: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.], [/usr/share/aclocal-1.9/header.m4:23: AM_CONFIG_HEADER is expanded from... configure.ac:59: the top level]) m4trace:configure.ac:59: -1- AC_CONFIG_HEADERS([wmfconfig.h]) m4trace:configure.ac:64: -1- AH_OUTPUT([00001], [ #ifndef LIBWMF_CONFIG_H #define LIBWMF_CONFIG_H ]) m4trace:configure.ac:107: -1- AC_SUBST([LIBWMF_BUILDSTYLE]) m4trace:configure.ac:108: -1- AM_CONDITIONAL([LIBWMF_BUILD_ALL], [ test "x$libwmf_build_all" = "xyes" ]) m4trace:configure.ac:108: -1- AC_SUBST([LIBWMF_BUILD_ALL_TRUE]) m4trace:configure.ac:108: -1- AC_SUBST([LIBWMF_BUILD_ALL_FALSE]) m4trace:configure.ac:115: -1- _m4_warn([obsolete], [The macro `AC_CYGWIN' is obsolete. You should run autoupdate.], [autoconf/specific.m4:363: AC_CYGWIN is expanded from... configure.ac:115: the top level]) m4trace:configure.ac:115: -1- AC_CANONICAL_HOST m4trace:configure.ac:115: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.ac:115: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.ac:115: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.ac:115: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.ac:115: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.ac:115: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.ac:115: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.ac:115: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.ac:115: -1- _m4_warn([obsolete], [AC_CYGWIN is obsolete: use AC_CANONICAL_HOST and $host_os], [autoconf/specific.m4:363: AC_CYGWIN is expanded from... configure.ac:115: the top level]) m4trace:configure.ac:118: -1- _m4_warn([obsolete], [The macro `AC_MINGW32' is obsolete. You should run autoupdate.], [autoconf/specific.m4:393: AC_MINGW32 is expanded from... configure.ac:118: the top level]) m4trace:configure.ac:118: -1- AC_CANONICAL_HOST m4trace:configure.ac:118: -1- _m4_warn([syntax], [AC_CANONICAL_HOST invoked multiple times], [autoconf/specific.m4:393: AC_MINGW32 is expanded from... configure.ac:118: the top level]) m4trace:configure.ac:118: -1- _m4_warn([obsolete], [AC_MINGW32 is obsolete: use AC_CANONICAL_HOST and $host_os], [autoconf/specific.m4:393: AC_MINGW32 is expanded from... configure.ac:118: the top level]) m4trace:configure.ac:134: -1- AC_SUBST([SYS_LIBM]) m4trace:configure.ac:138: -1- AC_PROG_AWK m4trace:configure.ac:138: -1- AC_SUBST([AWK]) m4trace:configure.ac:139: -1- AC_PROG_CC m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([CFLAGS]) m4trace:configure.ac:139: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:139: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:139: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.ac:139: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.ac:139: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.ac:139: -1- AM_SET_DEPDIR m4trace:configure.ac:139: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.ac:139: -1- AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.ac:139: -1- AM_MAKE_INCLUDE m4trace:configure.ac:139: -1- AC_SUBST([am__include]) m4trace:configure.ac:139: -1- AC_SUBST([am__quote]) m4trace:configure.ac:139: -1- AM_DEP_TRACK m4trace:configure.ac:139: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.ac:139: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.ac:139: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.ac:139: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.ac:139: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.ac:139: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:139: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.ac:139: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.ac:140: -1- AC_PROG_CPP m4trace:configure.ac:140: -1- AC_SUBST([CPP]) m4trace:configure.ac:140: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:140: -1- AC_SUBST([CPP]) m4trace:configure.ac:141: -1- AC_PROG_INSTALL m4trace:configure.ac:141: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.ac:141: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.ac:141: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.ac:142: -1- AC_PROG_LN_S m4trace:configure.ac:142: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.ac:143: -1- AC_PROG_MAKE_SET m4trace:configure.ac:143: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:146: -1- AC_LIBTOOL_WIN32_DLL m4trace:configure.ac:147: -1- AM_PROG_LIBTOOL m4trace:configure.ac:147: -1- AC_PROG_LIBTOOL m4trace:configure.ac:147: -1- _AC_PROG_LIBTOOL m4trace:configure.ac:147: -1- AC_LIBTOOL_SETUP m4trace:configure.ac:147: -1- AC_ENABLE_SHARED m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:1787: AC_ENABLE_SHARED is expanded from... configure.ac:147: AC_ENABLE_SHARED is required by... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_ENABLE_STATIC m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:1826: AC_ENABLE_STATIC is expanded from... configure.ac:147: AC_ENABLE_STATIC is required by... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_ENABLE_FAST_INSTALL m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:1865: AC_ENABLE_FAST_INSTALL is expanded from... configure.ac:147: AC_ENABLE_FAST_INSTALL is required by... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_PROG_LD m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1331: AC_ARG_WITH is expanded from... /usr/share/aclocal/libtool.m4:2062: AC_PROG_LD is expanded from... configure.ac:147: AC_PROG_LD is required by... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- LT_AC_PROG_SED m4trace:configure.ac:147: -1- AC_PROG_LD_GNU m4trace:configure.ac:147: -1- AC_PROG_EGREP m4trace:configure.ac:147: -1- AC_SUBST([EGREP]) m4trace:configure.ac:147: -1- AC_PROG_LD_RELOAD_FLAG m4trace:configure.ac:147: -1- AC_PROG_NM m4trace:configure.ac:147: -1- AC_DEPLIBS_CHECK_METHOD m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_MAX_CMD_LEN m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_OBJDIR m4trace:configure.ac:147: -1- _LT_AC_SYS_COMPILER m4trace:configure.ac:147: -1- _LT_AC_PROG_ECHO_BACKSLASH m4trace:configure.ac:147: -1- _LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ]) m4trace:configure.ac:147: -1- AC_SUBST([ECHO]) m4trace:configure.ac:147: -1- AC_SUBST([AR]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_AR]) m4trace:configure.ac:147: -1- AC_SUBST([RANLIB]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_RANLIB]) m4trace:configure.ac:147: -1- AC_SUBST([STRIP]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.ac:147: -1- AC_PATH_MAGIC m4trace:configure.ac:147: -1- AC_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) m4trace:configure.ac:147: -1- AC_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1331: AC_ARG_WITH is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_LIBTOOL_LANG_C_CONFIG m4trace:configure.ac:147: -1- _LT_AC_LANG_C_CONFIG m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([objext], []) m4trace:configure.ac:147: -1- _LT_AC_SYS_COMPILER m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_cc_shlib], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_cc_can_build_shared], []) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([lt_prog_compiler_static_works], []) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, ) works], [lt_prog_compiler_static_works], [$lt_prog_compiler_static], [], [_LT_AC_TAGVAR(lt_prog_compiler_static, )=]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_COMPILER_NO_RTTI([]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_COMPILER_PIC([]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([lt_prog_compiler_pic_works], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, ) works], [lt_prog_compiler_pic_works], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, )ifelse([],[],[ -DPIC],[ifelse([],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, ) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, )=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, )" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, )= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_CC_C_O([]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([]) m4trace:configure.ac:147: -1- _LT_AC_LOCK m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... /usr/share/aclocal/libtool.m4:559: _LT_AC_LOCK is expanded from... configure.ac:147: _LT_AC_LOCK is required by... /usr/share/aclocal/libtool.m4:990: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from... /usr/share/aclocal/libtool.m4:2622: _LT_AC_LANG_C_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:2485: AC_LIBTOOL_LANG_C_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_SUBST([DLLTOOL]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_DLLTOOL]) m4trace:configure.ac:147: -1- AC_SUBST([AS]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_AS]) m4trace:configure.ac:147: -1- AC_SUBST([OBJDUMP]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_OBJDUMP]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_SHLIBS([]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([reload_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([runpath_var ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_LIB_STRIP m4trace:configure.ac:147: -1- AC_LIBTOOL_DLOPEN_SELF([]) m4trace:configure.ac:147: -1- _LT_AC_CHECK_DLFCN m4trace:configure.ac:147: -1- AC_CHECK_HEADERS([dlfcn.h]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) m4trace:configure.ac:147: -1- AC_HEADER_STDC m4trace:configure.ac:147: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.ac:147: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.ac:147: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.ac:147: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=no], [lt_cv_dlopen_self=cross]) m4trace:configure.ac:147: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=no], [lt_cv_dlopen_self_static=cross]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], []) m4trace:configure.ac:147: -1- AC_LIBTOOL_CONFIG([]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([CC], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postinstall_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postuninstall_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([GCC], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([fix_srcfile_path], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], []) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], []) m4trace:configure.ac:147: -1- _LT_AC_TAGCONFIG m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1331: AC_ARG_WITH is expanded from... /usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [/usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [/usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_LIBTOOL_LANG_CXX_CONFIG m4trace:configure.ac:147: -1- _LT_AC_LANG_CXX_CONFIG([CXX]) m4trace:configure.ac:147: -1- AC_PROG_CXX m4trace:configure.ac:147: -1- AC_SUBST([CXX]) m4trace:configure.ac:147: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([CXX]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.ac:147: -1- _AM_DEPENDENCIES([CXX]) m4trace:configure.ac:147: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.ac:147: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:147: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.ac:147: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.ac:147: -1- AC_SUBST([CXXCPP]) m4trace:configure.ac:147: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([CXXCPP]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([objext], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_SYS_COMPILER m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.ac:147: -1- AC_PROG_LD m4trace:configure.ac:147: -1- AC_PROG_LD_GNU m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([GCC], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_POSTDEP_PREDEP([CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_COMPILER_PIC([CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([lt_prog_compiler_pic_works], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX) works], [lt_prog_compiler_pic_works_CXX], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)ifelse([CXX],[],[ -DPIC],[ifelse([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, CXX)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_CC_C_O([CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_SHLIBS([CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([runpath_var CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_LIB_STRIP m4trace:configure.ac:147: -1- AC_LIBTOOL_DLOPEN_SELF([CXX]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.ac:147: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=no], [lt_cv_dlopen_self=cross]) m4trace:configure.ac:147: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=no], [lt_cv_dlopen_self_static=cross]) m4trace:configure.ac:147: -1- AC_LIBTOOL_CONFIG([CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([CC], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postinstall_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postuninstall_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([GCC], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([fix_srcfile_path], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [CXX]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_LANG_F77_CONFIG m4trace:configure.ac:147: -1- _LT_AC_LANG_F77_CONFIG([F77]) m4trace:configure.ac:147: -1- AC_SUBST([F77]) m4trace:configure.ac:147: -1- AC_SUBST([FFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([F77]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([objext], [F77]) m4trace:configure.ac:147: -1- _LT_AC_SYS_COMPILER m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([GCC], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_COMPILER_PIC([F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([lt_prog_compiler_pic_works], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, F77) works], [lt_prog_compiler_pic_works_F77], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, F77)ifelse([F77],[],[ -DPIC],[ifelse([F77],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, F77) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, F77)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, F77)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, F77)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, F77)=no]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_CC_C_O([F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_SHLIBS([F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([reload_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([runpath_var F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_LIB_STRIP m4trace:configure.ac:147: -1- AC_LIBTOOL_CONFIG([F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([CC], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postinstall_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postuninstall_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([GCC], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([fix_srcfile_path], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [F77]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [F77]) m4trace:configure.ac:147: -1- AC_LIBTOOL_LANG_GCJ_CONFIG m4trace:configure.ac:147: -1- _LT_AC_LANG_GCJ_CONFIG([GCJ]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... /usr/share/aclocal/libtool.m4:3807: _LT_AC_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:3760: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE', and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... /usr/share/aclocal/libtool.m4:3807: _LT_AC_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:3760: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([objext], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_SYS_COMPILER m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_COMPILER_NO_RTTI([GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, GCJ)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, GCJ) -fno-rtti -fno-exceptions"]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_COMPILER_PIC([GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([lt_prog_compiler_pic_works], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ) works], [lt_prog_compiler_pic_works_GCJ], [$_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)ifelse([GCJ],[],[ -DPIC],[ifelse([GCJ],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, GCJ)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, GCJ)=no]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_can_build_shared], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_CC_C_O([GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_HARD_LINK_LOCKS([GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_SHLIBS([GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_SYS_LIBPATH_AIX m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_From_new_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([reload_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([ld_shlibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -2- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_DYNAMIC_LINKER([GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([runpath_var GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- AC_LIBTOOL_SYS_LIB_STRIP m4trace:configure.ac:147: -1- AC_LIBTOOL_DLOPEN_SELF([GCJ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.ac:147: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=yes], [lt_cv_dlopen_self=no], [lt_cv_dlopen_self=cross]) m4trace:configure.ac:147: -1- _LT_AC_TRY_DLOPEN_SELF([lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=yes], [lt_cv_dlopen_self_static=no], [lt_cv_dlopen_self_static=cross]) m4trace:configure.ac:147: -1- AC_LIBTOOL_CONFIG([GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([CC], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postinstall_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postuninstall_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([GCC], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([fix_srcfile_path], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [GCJ]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [GCJ]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from... /usr/share/aclocal/libtool.m4:3807: _LT_AC_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:3760: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_LIBTOOL_LANG_RC_CONFIG m4trace:configure.ac:147: -1- _LT_AC_LANG_RC_CONFIG([RC]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... /usr/share/aclocal/libtool.m4:3846: _LT_AC_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:3815: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE', and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... /usr/share/aclocal/libtool.m4:3846: _LT_AC_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:3815: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([objext], [RC]) m4trace:configure.ac:147: -1- _LT_AC_SYS_COMPILER m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [RC]) m4trace:configure.ac:147: -1- AC_LIBTOOL_CONFIG([RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([CC], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postinstall_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postuninstall_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds_need_lc], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([enable_shared_with_static_runtimes], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([GCC], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([LD], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_wl], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_pic], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_cv_prog_compiler_c_o], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_static], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([lt_prog_compiler_no_builtin_flag], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_dynamic_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([whole_archive_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([thread_safe_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_new_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([old_archive_from_expsyms_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([archive_expsym_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([module_expsym_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predep_objects], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdep_objects], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([predeps], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([postdeps], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([compiler_lib_search_path], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([allow_undefined_flag], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([no_undefined_flag], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_action], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_flag_spec_ld], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_libdir_separator], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_direct], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_minus_L], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_shlibpath_var], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([hardcode_automatic], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([link_all_deplibs], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([fix_srcfile_path], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([always_export_symbols], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([export_symbols_cmds], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([exclude_expsyms], [RC]) m4trace:configure.ac:147: -1- _LT_AC_TAGVAR([include_expsyms], [RC]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from... /usr/share/aclocal/libtool.m4:3846: _LT_AC_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:3815: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... /usr/share/aclocal/libtool.m4:1741: _LT_AC_TAGCONFIG is expanded from... /usr/share/aclocal/libtool.m4:232: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... /usr/share/aclocal/libtool.m4:90: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... /usr/share/aclocal/libtool.m4:70: AC_PROG_LIBTOOL is expanded from... /usr/share/aclocal/libtool.m4:5878: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_SUBST([LIBTOOL]) m4trace:configure.ac:147: -1- AC_LIBTOOL_CXX m4trace:configure.ac:147: -1- _LT_AC_LANG_CXX m4trace:configure.ac:147: -1- _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) m4trace:configure.ac:147: -1- AC_LIBTOOL_F77 m4trace:configure.ac:147: -1- _LT_AC_LANG_F77 m4trace:configure.ac:147: -1- _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) m4trace:configure.ac:151: -1- AC_HEADER_STDC m4trace:configure.ac:151: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.ac:151: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.ac:152: -1- AC_CHECK_HEADERS([time.h]) m4trace:configure.ac:152: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TIME_H]) m4trace:configure.ac:156: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) m4trace:configure.ac:156: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* define if you have unistd.h */ #undef HAVE_UNISTD_H]) m4trace:configure.ac:159: -1- AC_C_CONST m4trace:configure.ac:159: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.ac:159: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ #undef const]) m4trace:configure.ac:161: -1- AC_TYPE_OFF_T m4trace:configure.ac:161: -1- AC_DEFINE_TRACE_LITERAL([off_t]) m4trace:configure.ac:161: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ #undef off_t]) m4trace:configure.ac:162: -1- AC_TYPE_SIZE_T m4trace:configure.ac:162: -1- AC_DEFINE_TRACE_LITERAL([size_t]) m4trace:configure.ac:162: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ #undef size_t]) m4trace:configure.ac:165: -1- AC_CHECK_FUNCS([strstr]) m4trace:configure.ac:165: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ #undef HAVE_STRSTR]) m4trace:configure.ac:172: -1- AC_CHECK_FUNCS([printf fprintf vfprintf sprintf], [], [require_trio=yes]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_PRINTF], [/* Define to 1 if you have the `printf\' function. */ #undef HAVE_PRINTF]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_FPRINTF], [/* Define to 1 if you have the `fprintf\' function. */ #undef HAVE_FPRINTF]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_VFPRINTF], [/* Define to 1 if you have the `vfprintf\' function. */ #undef HAVE_VFPRINTF]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_SPRINTF], [/* Define to 1 if you have the `sprintf\' function. */ #undef HAVE_SPRINTF]) m4trace:configure.ac:173: -1- AC_CHECK_FUNCS([vprintf vsprintf]) m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */ #undef HAVE_VPRINTF]) m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_VSPRINTF], [/* Define to 1 if you have the `vsprintf\' function. */ #undef HAVE_VSPRINTF]) m4trace:configure.ac:174: -1- AC_CHECK_FUNCS([sscanf], [], [require_trio=yes]) m4trace:configure.ac:174: -1- AH_OUTPUT([HAVE_SSCANF], [/* Define to 1 if you have the `sscanf\' function. */ #undef HAVE_SSCANF]) m4trace:configure.ac:175: -1- AC_CHECK_FUNCS([scanf vscanf fscanf vsscanf]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_SCANF], [/* Define to 1 if you have the `scanf\' function. */ #undef HAVE_SCANF]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_VSCANF], [/* Define to 1 if you have the `vscanf\' function. */ #undef HAVE_VSCANF]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_FSCANF], [/* Define to 1 if you have the `fscanf\' function. */ #undef HAVE_FSCANF]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_VSSCANF], [/* Define to 1 if you have the `vsscanf\' function. */ #undef HAVE_VSSCANF]) m4trace:configure.ac:178: -1- AC_CHECK_FUNCS([vsnprintf], [], [check_for_vsnprintf=yes]) m4trace:configure.ac:178: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ #undef HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* define if you have vsnprintf */ #undef HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([vsnprintf]) m4trace:configure.ac:192: -1- AH_OUTPUT([vsnprintf], [/* define to your implementation of vsnprintf */ #undef vsnprintf]) m4trace:configure.ac:192: -1- AC_CHECK_LIB([db], [vsnprintf], [ AC_DEFINE(HAVE_VSNPRINTF,1,[define if you have vsnprintf]) WMF_LIBFLAGS="$WMF_LIBFLAGS -ldb" ], [ require_trio=yes ]) m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* define if you have vsnprintf */ #undef HAVE_VSNPRINTF]) m4trace:configure.ac:196: -1- AC_CHECK_FUNCS([snprintf], [], [check_for_snprintf=yes]) m4trace:configure.ac:196: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ #undef HAVE_SNPRINTF]) m4trace:configure.ac:202: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF]) m4trace:configure.ac:202: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* define if you have snprintf */ #undef HAVE_SNPRINTF]) m4trace:configure.ac:202: -1- AC_DEFINE_TRACE_LITERAL([snprintf]) m4trace:configure.ac:202: -1- AH_OUTPUT([snprintf], [/* define to your implementation of snprintf */ #undef snprintf]) m4trace:configure.ac:206: -1- AC_CHECK_FUNCS([vfscanf], [], [check_for_vfscanf=yes]) m4trace:configure.ac:206: -1- AH_OUTPUT([HAVE_VFSCANF], [/* Define to 1 if you have the `vfscanf\' function. */ #undef HAVE_VFSCANF]) m4trace:configure.ac:214: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VFSCANF]) m4trace:configure.ac:214: -1- AH_OUTPUT([HAVE_VFSCANF], [/* define if you have vfscanf */ #undef HAVE_VFSCANF]) m4trace:configure.ac:219: -1- AM_CONDITIONAL([LIBWMF_OPT_TRIO], [ test "x$require_trio" = "xyes" ]) m4trace:configure.ac:219: -1- AC_SUBST([LIBWMF_OPT_TRIO_TRUE]) m4trace:configure.ac:219: -1- AC_SUBST([LIBWMF_OPT_TRIO_FALSE]) m4trace:configure.ac:222: -1- AC_DEFINE_TRACE_LITERAL([TRIO_REPLACE_STDIO]) m4trace:configure.ac:222: -1- AH_OUTPUT([TRIO_REPLACE_STDIO], [/* If any *printf or *scanf functions are missing, cover them with trio functions */ #undef TRIO_REPLACE_STDIO]) m4trace:configure.ac:246: -1- AC_DEFINE_TRACE_LITERAL([WITHOUT_LAYERS]) m4trace:configure.ac:246: -1- AH_OUTPUT([WITHOUT_LAYERS], [/* defining this will disable egs, fig, svg & foreign layers */ #undef WITHOUT_LAYERS]) m4trace:configure.ac:249: -1- AM_CONDITIONAL([LIBWMF_OPT_MODULES], [ test $libwmf_layers = modules ]) m4trace:configure.ac:249: -1- AC_SUBST([LIBWMF_OPT_MODULES_TRUE]) m4trace:configure.ac:249: -1- AC_SUBST([LIBWMF_OPT_MODULES_FALSE]) m4trace:configure.ac:250: -1- AM_CONDITIONAL([LIBWMF_OPT_LAYERS], [ test $libwmf_layers != no ]) m4trace:configure.ac:250: -1- AC_SUBST([LIBWMF_OPT_LAYERS_TRUE]) m4trace:configure.ac:250: -1- AC_SUBST([LIBWMF_OPT_LAYERS_FALSE]) m4trace:configure.ac:258: -1- AC_PATH_X m4trace:configure.ac:259: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) m4trace:configure.ac:259: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([nsl], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([bsd], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], [], [$X_EXTRA_LIBS]) m4trace:configure.ac:259: -1- AC_SUBST([X_CFLAGS]) m4trace:configure.ac:259: -1- AC_SUBST([X_PRE_LIBS]) m4trace:configure.ac:259: -1- AC_SUBST([X_LIBS]) m4trace:configure.ac:259: -1- AC_SUBST([X_EXTRA_LIBS]) m4trace:configure.ac:278: -1- AM_CONDITIONAL([LIBWMF_OPT_X], [ test "x$no_x" != "xyes" ]) m4trace:configure.ac:278: -1- AC_SUBST([LIBWMF_OPT_X_TRUE]) m4trace:configure.ac:278: -1- AC_SUBST([LIBWMF_OPT_X_FALSE]) m4trace:configure.ac:348: -1- AC_CHECK_LIB([expat], [XML_ParserFree], [ libwmf_xml=expat ], [ if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * unable to find expat * * *]) fi ]) m4trace:configure.ac:357: -1- AC_SUBST([XML2_CONFIG], [$ac_cv_path_XML2_CONFIG]) m4trace:configure.ac:359: -1- AC_SUBST([XML2_CONFIG], [$ac_cv_path_XML2_CONFIG]) m4trace:configure.ac:372: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EXPAT]) m4trace:configure.ac:372: -1- AH_OUTPUT([HAVE_EXPAT], [/* define if you have expat */ #undef HAVE_EXPAT]) m4trace:configure.ac:374: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXML2]) m4trace:configure.ac:374: -1- AH_OUTPUT([HAVE_LIBXML2], [/* define if you have libxml2 */ #undef HAVE_LIBXML2]) m4trace:configure.ac:403: -1- AC_SUBST([FREETYPE_CONFIG], [$ac_cv_path_FREETYPE_CONFIG]) m4trace:configure.ac:405: -1- AC_SUBST([FREETYPE_CONFIG], [$ac_cv_path_FREETYPE_CONFIG]) m4trace:configure.ac:432: -1- AC_CHECK_LIB([freetype], [FT_Init_FreeType], [ WMF_FT_LDFLAGS="$freetype_libs" ], [ AC_MSG_ERROR([* * * freetype(2) is required * * *]) ]) m4trace:configure.ac:490: -1- AC_CHECK_LIB([z], [gzputs], [ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lz" else WMF_Z_LDFLAGS="-lz" fi ], [ AC_CHECK_LIB(gz,gzputs,[ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi ],[ AC_MSG_ERROR(* * * unable to find libz which is required by libwmf * * *) ]) ]) m4trace:configure.ac:490: -1- AC_CHECK_LIB([gz], [gzputs], [ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi ], [ AC_MSG_ERROR(* * * unable to find libz which is required by libwmf * * *) ]) m4trace:configure.ac:533: -1- AC_CHECK_LIB([png], [png_write_image], [ if [ test "x$PNG_DIR" != "x" ]; then WMF_PNG_CFLAGS="-I$PNG_DIR/include" WMF_PNG_LDFLAGS="-L$PNG_DIR/lib -lpng" else WMF_PNG_LDFLAGS="-lpng" fi ], [ AC_MSG_ERROR(* * * unable to find libpng which is required by libwmf * * *) ], [-lz -lm]) m4trace:configure.ac:535: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPNG]) m4trace:configure.ac:535: -1- AH_OUTPUT([HAVE_LIBPNG], [/* define if you have libpng */ #undef HAVE_LIBPNG]) m4trace:configure.ac:582: -1- AC_CHECK_LIB([jpeg], [jpeg_CreateCompress], [ if [ test "x$JPEG_DIR" != "x" ]; then WMF_JPEG_CFLAGS="-I$JPEG_DIR/include" WMF_JPEG_LDFLAGS="-L$JPEG_DIR/lib -ljpeg" else WMF_JPEG_LDFLAGS="-ljpeg" fi AC_DEFINE(HAVE_LIBJPEG,1,[define if you have libjpeg]) GD_DEFS="$GD_DEFS -DHAVE_LIBJPEG" libwmf_gd_jpeg=yes ]) m4trace:configure.ac:582: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBJPEG]) m4trace:configure.ac:582: -1- AH_OUTPUT([HAVE_LIBJPEG], [/* define if you have libjpeg */ #undef HAVE_LIBJPEG]) m4trace:configure.ac:637: -1- AC_CHECK_LIB([Xpm], [main], [ other_libs="$other_libs -lXpm" WMF_GD_LDFLAGS="-lXpm" ]) m4trace:configure.ac:656: -1- AC_CHECK_LIB([gd], [gdClipSetAdd], [ AC_CHECK_LIB(gd,gdft_draw_bitmap,[ libwmf_gd="sys" ],,$other_libs) ], [], [$other_libs]) m4trace:configure.ac:656: -1- AC_CHECK_LIB([gd], [gdft_draw_bitmap], [ libwmf_gd="sys" ], [], [$other_libs]) m4trace:configure.ac:660: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GD]) m4trace:configure.ac:660: -1- AH_OUTPUT([HAVE_GD], [/* define if you have libgd */ #undef HAVE_GD]) m4trace:configure.ac:680: -1- AM_CONDITIONAL([LIBWMF_OPT_GD], [ test "x$build_gd_layer" = "xyes" ]) m4trace:configure.ac:680: -1- AC_SUBST([LIBWMF_OPT_GD_TRUE]) m4trace:configure.ac:680: -1- AC_SUBST([LIBWMF_OPT_GD_FALSE]) m4trace:configure.ac:681: -1- AM_CONDITIONAL([LIBWMF_OPT_SYS_GD], [ test "x$libwmf_gd" = "xsys" ]) m4trace:configure.ac:681: -1- AC_SUBST([LIBWMF_OPT_SYS_GD_TRUE]) m4trace:configure.ac:681: -1- AC_SUBST([LIBWMF_OPT_SYS_GD_FALSE]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([plot], [pl_libplot_ver], [ AC_LIBPLOT_LIBS if [ test $ac_can_link_libplot != no ]; then if [ test "x$PLOT_DIR" != "x" ]; then WMF_PLOT_CFLAGS="-I$PLOT_DIR/include" WMF_PLOT_LDFLAGS="-L$PLOT_DIR/lib $LIBPLOT_LIBS" else WMF_PLOT_LDFLAGS="$LIBPLOT_LIBS" fi AC_DEFINE(HAVE_LIBPLOT,1,[define if you have libplot]) libwmf_plot=maybe else AC_MSG_ERROR(* * * sorry - unable to link against libplot * * *) fi ], [ AC_MSG_ERROR(GNU plotutils >= 2.4.0 required) ]) m4trace:configure.ac:729: -1- AC_LIBPLOT_LIBS m4trace:configure.ac:729: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... acinclude.m4:131: AC_LIBPLOT_LIBS is expanded from... autoconf/libs.m4:134: AC_CHECK_LIB is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... configure.ac:729: the top level]) m4trace:configure.ac:729: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... acinclude.m4:131: AC_LIBPLOT_LIBS is expanded from... autoconf/libs.m4:134: AC_CHECK_LIB is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... configure.ac:729: the top level]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([Xp], [main], [libXp="-lXp"], [libXp=""], [-lXext -lX11]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([gen], [main], [LIBPLOT_LIBS="$LIBPLOT_LIBS -lgen"]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([PW], [main], [LIBPLOT_LIBS="$LIBPLOT_LIBS -lPW"]) m4trace:configure.ac:729: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... acinclude.m4:131: AC_LIBPLOT_LIBS is expanded from... autoconf/libs.m4:134: AC_CHECK_LIB is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... configure.ac:729: the top level]) m4trace:configure.ac:729: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPLOT]) m4trace:configure.ac:729: -1- AH_OUTPUT([HAVE_LIBPLOT], [/* define if you have libplot */ #undef HAVE_LIBPLOT]) m4trace:configure.ac:732: -1- AM_CONDITIONAL([LIBWMF_OPT_PLOT], [ test "x$libwmf_plot" != "xno" ]) m4trace:configure.ac:732: -1- AC_SUBST([LIBWMF_OPT_PLOT_TRUE]) m4trace:configure.ac:732: -1- AC_SUBST([LIBWMF_OPT_PLOT_FALSE]) m4trace:configure.ac:751: -1- PKG_CHECK_MODULES([GDK_PIXBUF], [gdk-pixbuf-2.0 >= 2.1.2], [ GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GDK_PIXBUF_DIR="gtk-2.0/$GTK_VERSION/loaders" wmf_gdk_pixbuf=yes ], [ wmf_gdk_pixbuf=no ]) m4trace:configure.ac:751: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG]) m4trace:configure.ac:751: -1- AC_SUBST([GDK_PIXBUF_CFLAGS]) m4trace:configure.ac:751: -1- AC_SUBST([GDK_PIXBUF_LIBS]) m4trace:configure.ac:753: -1- AM_CONDITIONAL([LIBWMF_GDK_PIXBUF], [test $wmf_gdk_pixbuf = yes]) m4trace:configure.ac:753: -1- AC_SUBST([LIBWMF_GDK_PIXBUF_TRUE]) m4trace:configure.ac:753: -1- AC_SUBST([LIBWMF_GDK_PIXBUF_FALSE]) m4trace:configure.ac:755: -1- AC_SUBST([GDK_PIXBUF_CFLAGS]) m4trace:configure.ac:756: -1- AC_SUBST([GDK_PIXBUF_LIBS]) m4trace:configure.ac:757: -1- AC_SUBST([GDK_PIXBUF_DIR]) m4trace:configure.ac:851: -1- AC_SUBST([WMF_CFLAGS]) m4trace:configure.ac:855: -1- AC_SUBST([WMF_CONFIG_CFLAGS]) m4trace:configure.ac:860: -1- AC_SUBST([WMF_LIBFLAGS]) m4trace:configure.ac:862: -1- AC_SUBST([WMF_DOCDIR]) m4trace:configure.ac:863: -1- AC_SUBST([WMF_FONTDIR]) m4trace:configure.ac:864: -1- AC_SUBST([WMF_SYS_FONTMAP]) m4trace:configure.ac:865: -1- AC_SUBST([WMF_XTRA_FONTMAP]) m4trace:configure.ac:866: -1- AC_SUBST([WMF_GS_FONTMAP]) m4trace:configure.ac:867: -1- AC_SUBST([WMF_GS_FONTDIR]) m4trace:configure.ac:869: -1- AC_SUBST([WMF_DEFS]) m4trace:configure.ac:870: -1- AC_SUBST([GD_DEFS]) m4trace:configure.ac:875: -1- AH_OUTPUT([zzzz2], [ #endif /* ! LIBWMF_CONFIG_H */ ]) m4trace:configure.ac:896: -1- AC_CONFIG_FILES([ Makefile doc/Makefile doc/caolan/Makefile doc/caolan/pics/Makefile doc/html/Makefile fonts/Makefile fonts/libwmf-fontmap fonts/fontmap include/Makefile include/libwmf/Makefile src/Makefile src/extra/Makefile src/extra/trio/Makefile src/extra/gd/Makefile src/ipa/Makefile src/convert/Makefile libwmf-config libwmf.spec ]) m4trace:configure.ac:897: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.ac:897: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.ac:897: -1- _AC_AM_CONFIG_HEADER_HOOK([$ac_file]) m4trace:configure.ac:897: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS libwmf-0.2.8.4/autom4te.cache/output.10000664000077100007710000324307210272000327016737 0ustar fjffjf00000000000000@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.59 for libwmf 0.2.8. @%:@ @%:@ Report bugs to . @%:@ @%:@ Copyright (C) 2003 Free Software Foundation, Inc. @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='libwmf' PACKAGE_TARNAME='libwmf' PACKAGE_VERSION='0.2.8' PACKAGE_STRING='libwmf 0.2.8' PACKAGE_BUGREPORT='wvware-devel@sourceforge.net' ac_unique_file="src/player.c" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LIBWMF_PACKAGE LIBWMF_VERSION LIBWMF_RELEASE LT_RELEASE LT_CURRENT LT_REVISION LT_AGE LT_LITE_CURRENT LT_LITE_REVISION LT_LITE_AGE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar LIBWMF_BUILDSTYLE LIBWMF_BUILD_ALL_TRUE LIBWMF_BUILD_ALL_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os SYS_LIBM CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP LN_S EGREP ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBWMF_OPT_TRIO_TRUE LIBWMF_OPT_TRIO_FALSE LIBWMF_OPT_MODULES_TRUE LIBWMF_OPT_MODULES_FALSE LIBWMF_OPT_LAYERS_TRUE LIBWMF_OPT_LAYERS_FALSE X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBWMF_OPT_X_TRUE LIBWMF_OPT_X_FALSE XML2_CONFIG FREETYPE_CONFIG LIBWMF_OPT_GD_TRUE LIBWMF_OPT_GD_FALSE LIBWMF_OPT_SYS_GD_TRUE LIBWMF_OPT_SYS_GD_FALSE LIBWMF_OPT_PLOT_TRUE LIBWMF_OPT_PLOT_FALSE PKG_CONFIG GDK_PIXBUF_CFLAGS GDK_PIXBUF_LIBS LIBWMF_GDK_PIXBUF_TRUE LIBWMF_GDK_PIXBUF_FALSE GDK_PIXBUF_DIR WMF_CFLAGS WMF_CONFIG_CFLAGS WMF_LIBFLAGS WMF_DOCDIR WMF_FONTDIR WMF_SYS_FONTMAP WMF_XTRA_FONTMAP WMF_GS_FONTMAP WMF_GS_FONTDIR WMF_DEFS GD_DEFS LIB@&t@OBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP ac_env_F77_set=${F77+set} ac_env_F77_value=$F77 ac_cv_env_F77_set=${F77+set} ac_cv_env_F77_value=$F77 ac_env_FFLAGS_set=${FFLAGS+set} ac_env_FFLAGS_value=$FFLAGS ac_cv_env_FFLAGS_set=${FFLAGS+set} ac_cv_env_FFLAGS_value=$FFLAGS # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures libwmf 0.2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libwmf 0.2.8:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-debug set DEBUG option to libwmf default=no --enable-ansi set -ansi option to libwmf default=no --enable-pedantic set -pedantic option to libwmf default=no --disable-heavy only build libwmflite default=build all --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ --enable-fast-install@<:@=PKGS@:>@ optimize for fast installation @<:@default=yes@:>@ --disable-libtool-lock avoid locking (might break parallel builds) --disable-gd don't build GD, don't look for it, don't require it Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ --with-pic try to use only PIC/non-PIC objects @<:@default=use both@:>@ --with-tags@<:@=TAGS@:>@ include additional configurations @<:@automatic@:>@ --with-layers whether to build layers default is yes --with-x use the X Window System --with-expat=DIR use expat in DIR --with-libxml2=DIR use libxml2 in DIR --with-freetype=DIR use freetype2 in DIR --with-zlib=DIR use libz in DIR --with-png=DIR use libpng in DIR --with-jpeg=DIR use libjpeg in DIR --with-sys-gd=DIR use system GD in DIR (if compatible) --with-docdir=DIR install documentation in DIR --with-fontdir=DIR install Type1 fonts in DIR --with-sysfontmap=FILE default is /usr/share/fonts/fontmap --with-xtrafontmap=FILE non-system XML fontmap --with-gsfontmap=FILE ghostscript fontmap --with-gsfontdir=DIR directory for ghostscript fonts Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF libwmf configure 0.2.8 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libwmf $as_me 0.2.8, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME @%:@@%:@ --------- @%:@@%:@ @%:@@%:@ Platform. @%:@@%:@ @%:@@%:@ --------- @%:@@%:@ hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ Core tests. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX @%:@@%:@ ------------- @%:@@%:@ @%:@@%:@ Output files. @%:@@%:@ @%:@@%:@ ------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBWMF_PACKAGE=libwmf # Making releases: # WMF_MICRO_VERSION += 1; # WMF_INTERFACE_AGE += 1; # WMF_BINARY_AGE += 1; # if any functions have been added, set WMF_INTERFACE_AGE to 0. # if backwards compatibility has been broken, # set WMF_BINARY_AGE and WMF_INTERFACE_AGE to 0. # WMF_MAJOR_VERSION=0 WMF_MINOR_VERSION=2 WMF_MICRO_VERSION=8 WMF_INTERFACE_AGE=0 WMF_BINARY_AGE=1 WMFLITE_INTERFACE_AGE=1 WMFLITE_BINARY_AGE=1 LIBWMF_VERSION=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION.$WMF_MICRO_VERSION LIBWMF_RELEASE=1 # libtool versioning LT_RELEASE=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION LT_CURRENT=`expr $WMF_MICRO_VERSION - $WMF_INTERFACE_AGE` LT_REVISION=$WMF_INTERFACE_AGE LT_AGE=`expr $WMF_BINARY_AGE - $WMF_INTERFACE_AGE` LT_LITE_CURRENT=`expr $WMF_MICRO_VERSION - $WMFLITE_INTERFACE_AGE` LT_LITE_REVISION=$WMFLITE_INTERFACE_AGE LT_LITE_AGE=`expr $WMFLITE_BINARY_AGE - $WMFLITE_INTERFACE_AGE` # For automake. PACKAGE=$LIBWMF_PACKAGE VERSION=$LIBWMF_VERSION am__api_version="1.9" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=$PACKAGE VERSION=$VERSION # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Specify a configuration file ac_config_headers="$ac_config_headers wmfconfig.h" # CFLAGS to be listed by libwmf-config should be added to this: WMF_CONFIG_CFLAGS= # Other CFLAGS, not to be listed by libwmf-config, should be added to this: WMF_CFLAGS= # LDFLAGS to be listed by libwmf-config should be added to this: WMF_LIBFLAGS= # WMF_DEFS is for flags such as -DDEBUG which are to applied only to # libwmf source not extra packages such as gd - more global defs should be # added to WMF_CFLAGS # Check whether --enable-debug or --disable-debug was given. if test "${enable_debug+set}" = set; then enableval="$enable_debug" if test "x$enableval" != "xno" ; then WMF_DEFS="-DDEBUG=1" else WMF_DEFS= fi else WMF_DEFS= fi; # Check whether --enable-ansi or --disable-ansi was given. if test "${enable_ansi+set}" = set; then enableval="$enable_ansi" if test "x$enableval" != "xno" ; then WMF_DEFS="$WMF_DEFS -ansi" fi fi; # Check whether --enable-pedantic or --disable-pedantic was given. if test "${enable_pedantic+set}" = set; then enableval="$enable_pedantic" if test "x$enableval" != "xno" ; then WMF_DEFS="$WMF_DEFS -pedantic" fi fi; LIBWMF_BUILDSTYLE=heavy libwmf_build_all=yes # Check whether --enable-heavy or --disable-heavy was given. if test "${enable_heavy+set}" = set; then enableval="$enable_heavy" if test "x$enableval" = "xno" ; then LIBWMF_BUILDSTYLE=lite libwmf_build_all=no fi fi; if test "x$libwmf_build_all" = "xyes" ; then LIBWMF_BUILD_ALL_TRUE= LIBWMF_BUILD_ALL_FALSE='#' else LIBWMF_BUILD_ALL_TRUE='#' LIBWMF_BUILD_ALL_FALSE= fi # gd does not read config.h so need to pass it options on the command line: GD_DEFS= # Tests for Windows # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` case $host_os in *cygwin* ) CYGWIN=yes;; * ) CYGWIN=no;; esac case $host_os in *mingw32* ) MINGW32=yes;; * ) MINGW32=no;; esac # End Tests for Windows echo "$as_me:$LINENO: checking for Win32" >&5 echo $ECHO_N "checking for Win32... $ECHO_C" >&6 case "$host" in *-*-mingw*) os_win32=yes SYS_LIBM="" ;; *) os_win32=no SYS_LIBM="-lm" ;; esac echo "$as_me:$LINENO: result: $os_win32" >&5 echo "${ECHO_T}$os_win32" >&6 for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval="$enable_dependency_tracking" fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi # Configure libtool # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi; echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done SED=$lt_cv_path_SED fi echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6 NM="$lt_cv_path_NM" echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump'. lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | kfreebsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) case $host_cpu in alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*-cygwin* | *-*-mingw* | *-*-pw32*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then echo "$as_me:$LINENO: result: $DLLTOOL" >&5 echo "${ECHO_T}$DLLTOOL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false" fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 echo "${ECHO_T}$ac_ct_DLLTOOL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi DLLTOOL=$ac_ct_DLLTOOL else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then echo "$as_me:$LINENO: result: $AS" >&5 echo "${ECHO_T}$AS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false" fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 echo "${ECHO_T}$ac_ct_AS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AS=$ac_ct_AS else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then echo "$as_me:$LINENO: result: $OBJDUMP" >&5 echo "${ECHO_T}$OBJDUMP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false" fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 echo "${ECHO_T}$ac_ct_OBJDUMP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi OBJDUMP=$ac_ct_OBJDUMP else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac need_locks="$enable_libtool_lock" echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_F77" && break done F77=$ac_ct_F77 fi # Provide some information about the compiler. echo "$as_me:__oline__:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDRT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6 objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AR=$ac_ct_AR else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac enable_dlopen=no enable_win32_dll=yes # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # # Check for any special shared library compilation flags. # lt_prog_cc_shlib= if test "$GCC" = no; then case $host_os in sco3.2v5*) lt_prog_cc_shlib='-belf' ;; esac fi if test -n "$lt_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 if test "${lt_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_prog_compiler_static" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 else lt_prog_compiler_static_works=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 if test x"$lt_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic='-Kpic' lt_prog_compiler_static='-dn' ;; solaris*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 if test x"$lt_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds="$tmp_archive_cmds" fi else ld_shlibs=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec=' ' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=no hardcode_shlibpath_var=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no hardcode_shlibpath_var=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var " || \ test "X$hardcode_automatic"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which librarie types wil actually be built echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; darwin* | rhapsody*) if test "$GCC" = yes; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag='-undefined dynamic_lookup' ;; esac fi ;; esac output_verbose_link_cmd='echo' archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes else ld_shlibs=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags or --without-tags was given. if test "${with_tags+set}" = set; then withval="$with_tags" tagnames="$withval" fi; if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && test "X$CXX" != "Xno"; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_CXX=yes else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_CXX=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX=' ' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) if test "$GXX" = yes; then archive_cmds_need_lc_CXX=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_CXX='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_CXX='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_CXX='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_CXX='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='-all_load $convenience' link_all_deplibs_CXX=yes else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd12*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_CXX='+b $libdir' hardcode_libdir_separator_CXX=: ;; ia64*) hardcode_libdir_flag_spec_CXX='-L$libdir' ;; *) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes archive_cmds_need_lc_CXX=no archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sco*) archive_cmds_need_lc_CXX=no case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.0-5 | solaris2.0-5.*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) archive_cmds_need_lc_CXX=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) lt_prog_compiler_pic_CXX='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var CXX" || \ test "X$hardcode_automatic_CXX"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6 if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_CXX" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code=" subroutine t\n return\n end\n" # Code to be used in simple link tests lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_F77='-Kpic' lt_prog_compiler_static_F77='-dn' ;; solaris*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 if test x"$lt_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_F77="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_F77="$tmp_archive_cmds" fi else ld_shlibs_F77=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_F77=yes else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_F77=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77=' ' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi4*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc_F77=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_F77='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='-all_load $convenience' link_all_deplibs_F77=yes else ld_shlibs_F77=no fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; ia64*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; *) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; sco3.2v5*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4.2uw2*) archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_F77='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv5*) no_undefined_flag_F77=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_F77= hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var F77" || \ test "X$hardcode_automatic_F77"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6 if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_F77" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_GCJ='-Kpic' lt_prog_compiler_static_GCJ='-dn' ;; solaris*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_GCJ="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_GCJ="$tmp_archive_cmds" fi else ld_shlibs_GCJ=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_GCJ=yes else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_GCJ=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ=' ' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi4*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc_GCJ=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_GCJ='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='-all_load $convenience' link_all_deplibs_GCJ=yes else ld_shlibs_GCJ=no fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; ia64*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; *) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; sco3.2v5*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4.2uw2*) archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_GCJ='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv5*) no_undefined_flag_GCJ=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_GCJ= hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6 test "$ld_shlibs_GCJ" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var GCJ" || \ test "X$hardcode_automatic_GCJ"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6 if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_GCJ" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_RC" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion #end libtool stuff echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi for ac_header in time.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_unistd_h+set}" = set; then echo "$as_me:$LINENO: checking for unistd.h" >&5 echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 if test "${ac_cv_header_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking unistd.h usability" >&5 echo $ECHO_N "checking unistd.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking unistd.h presence" >&5 echo $ECHO_N "checking unistd.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: unistd.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: unistd.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: unistd.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: unistd.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: unistd.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: unistd.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: unistd.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for unistd.h" >&5 echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 if test "${ac_cv_header_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_unistd_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 fi if test $ac_cv_header_unistd_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_UNISTD_H 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_UNISTD_H" fi echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @%:@define const _ACEOF fi echo "$as_me:$LINENO: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define off_t long _ACEOF fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned _ACEOF fi for ac_func in strstr do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done require_trio=no if test $LIBWMF_BUILDSTYLE = heavy; then for ac_func in printf fprintf vfprintf sprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else require_trio=yes fi done for ac_func in vprintf vsprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else require_trio=yes fi done for ac_func in scanf vscanf fscanf vsscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in vsnprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_vsnprintf=yes fi done if test "x$check_for_vsnprintf" = "xyes" ; then echo "$as_me:$LINENO: checking for _vsnprintf" >&5 echo $ECHO_N "checking for _vsnprintf... $ECHO_C" >&6 if test "${ac_cv_func__vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define _vsnprintf to an innocuous variant, in case declares _vsnprintf. For example, HP-UX 11i declares gettimeofday. */ #define _vsnprintf innocuous__vsnprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _vsnprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _vsnprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _vsnprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__vsnprintf) || defined (__stub____vsnprintf) choke me #else char (*f) () = _vsnprintf; #endif #ifdef __cplusplus } #endif int main () { return f != _vsnprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__vsnprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__vsnprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__vsnprintf" >&5 echo "${ECHO_T}$ac_cv_func__vsnprintf" >&6 if test $ac_cv_func__vsnprintf = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_VSNPRINTF 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define vsnprintf _vsnprintf _ACEOF else echo "$as_me:$LINENO: checking for vsnprintf in -ldb" >&5 echo $ECHO_N "checking for vsnprintf in -ldb... $ECHO_C" >&6 if test "${ac_cv_lib_db_vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldb $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char vsnprintf (); int main () { vsnprintf (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_db_vsnprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_db_vsnprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_db_vsnprintf" >&5 echo "${ECHO_T}$ac_cv_lib_db_vsnprintf" >&6 if test $ac_cv_lib_db_vsnprintf = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_VSNPRINTF 1 _ACEOF WMF_LIBFLAGS="$WMF_LIBFLAGS -ldb" else require_trio=yes fi fi fi for ac_func in snprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_snprintf=yes fi done if test "x$check_for_snprintf" = "xyes" ; then echo "$as_me:$LINENO: checking for _snprintf" >&5 echo $ECHO_N "checking for _snprintf... $ECHO_C" >&6 if test "${ac_cv_func__snprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define _snprintf to an innocuous variant, in case declares _snprintf. For example, HP-UX 11i declares gettimeofday. */ #define _snprintf innocuous__snprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _snprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _snprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _snprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__snprintf) || defined (__stub____snprintf) choke me #else char (*f) () = _snprintf; #endif #ifdef __cplusplus } #endif int main () { return f != _snprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__snprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__snprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__snprintf" >&5 echo "${ECHO_T}$ac_cv_func__snprintf" >&6 if test $ac_cv_func__snprintf = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SNPRINTF 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define snprintf _snprintf _ACEOF fi fi for ac_func in vfscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_vfscanf=yes fi done if test "x$check_for_vfscanf" = "xyes" ; then echo "$as_me:$LINENO: checking for vfscanf in stdio.h" >&5 echo $ECHO_N "checking for vfscanf in stdio.h... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "vfscanf" >/dev/null 2>&1; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF @%:@define HAVE_VFSCANF 1 _ACEOF else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest* fi fi # $LIBWMF_BUILDSTYLE = heavy if test "x$require_trio" = "xyes" ; then LIBWMF_OPT_TRIO_TRUE= LIBWMF_OPT_TRIO_FALSE='#' else LIBWMF_OPT_TRIO_TRUE='#' LIBWMF_OPT_TRIO_FALSE= fi cat >>confdefs.h <<\_ACEOF @%:@define TRIO_REPLACE_STDIO 1 _ACEOF # Check whether --with-layers or --without-layers was given. if test "${with_layers+set}" = set; then withval="$with_layers" if test "x$withval" = "xyes" ; then libwmf_layers=yes elif test "x$withval" = "xno" ; then libwmf_layers=no elif test "x$withval" = "xmodules" ; then { { echo "$as_me:$LINENO: error: * * * Sorry, modules not yet supported! * * *" >&5 echo "$as_me: error: * * * Sorry, modules not yet supported! * * *" >&2;} { (exit 1); exit 1; }; } libwmf_layers=modules else { echo "$as_me:$LINENO: WARNING: * * * Bad option to --with-layers! * * *" >&5 echo "$as_me: WARNING: * * * Bad option to --with-layers! * * *" >&2;} libwmf_layers=yes fi else libwmf_layers=yes fi; if test $LIBWMF_BUILDSTYLE = lite; then libwmf_layers=no fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_layers = no ; then cat >>confdefs.h <<\_ACEOF @%:@define WITHOUT_LAYERS 1 _ACEOF fi if test $libwmf_layers = modules ; then LIBWMF_OPT_MODULES_TRUE= LIBWMF_OPT_MODULES_FALSE='#' else LIBWMF_OPT_MODULES_TRUE='#' LIBWMF_OPT_MODULES_FALSE= fi if test $libwmf_layers != no ; then LIBWMF_OPT_LAYERS_TRUE= LIBWMF_OPT_LAYERS_FALSE='#' else LIBWMF_OPT_LAYERS_TRUE='#' LIBWMF_OPT_LAYERS_FALSE= fi libwmf_x=no libwmf_xml=no libwmf_gd_jpeg=no libwmf_plot=no if test $libwmf_layers != no ; then echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then withval="$with_x" fi; # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && test -f $ac_im_libdir/libX11.$ac_extension; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # Record where we found X for the cache. ac_cv_have_x="have_x=yes \ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6 no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes \ ac_x_includes=$x_includes ac_x_libraries=$x_libraries" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. cat >>confdefs.h <<\_ACEOF @%:@define X_DISPLAY_MISSING 1 _ACEOF X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi else X_CFLAGS="-DX_DISPLAY_MISSING=1" no_x=yes fi WMF_X_CONFIG_CFLAGS="" WMF_X_CFLAGS="" WMF_X_LDFLAGS="" WMF_X_CFLAGS="$X_CFLAGS" if test "x$no_x" != "xyes" ; then WMF_X_CONFIG_CFLAGS="$X_CFLAGS" WMF_X_LDFLAGS="$X_LIBS -lX11" libwmf_x=yes fi if test "x$no_x" != "xyes" ; then LIBWMF_OPT_X_TRUE= LIBWMF_OPT_X_FALSE='#' else LIBWMF_OPT_X_TRUE='#' LIBWMF_OPT_X_FALSE= fi WMF_XML_DIR="" WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" libwmf_xml=unknown # Check whether --with-expat or --without-expat was given. if test "${with_expat+set}" = set; then withval="$with_expat" if test "x$withval" = "xno"; then libwmf_xml=libxml2 elif test "x$withval" = "xyes"; then libwmf_xml=expat else libwmf_xml=expat WMF_XML_DIR="$withval" fi fi; # Check whether --with-libxml2 or --without-libxml2 was given. if test "${with_libxml2+set}" = set; then withval="$with_libxml2" if test "x$withval" = "xno"; then if test $libwmf_xml = libxml2; then libwmf_xml=none else libwmf_xml=expat fi elif test "x$withval" = "xyes"; then if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * Can't specify both expat and libxml2! * * *" >&5 echo "$as_me: error: * * * Can't specify both expat and libxml2! * * *" >&2;} { (exit 1); exit 1; }; } else libwmf_xml=libxml2 fi else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * Can't specify both expat and libxml2! * * *" >&5 echo "$as_me: error: * * * Can't specify both expat and libxml2! * * *" >&2;} { (exit 1); exit 1; }; } else libwmf_xml=libxml2 WMF_XML_DIR="$withval" fi fi fi; if test $LIBWMF_BUILDSTYLE = lite; then libwmf_xml=none fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_xml = expat -o $libwmf_xml = unknown; then if test "x$WMF_XML_DIR" != "x"; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS CPPFLAGS="$CPPFLAGS -I$WMF_XML_DIR/include" LDFLAGS="$LDFLAGS -L$WMF_XML_DIR/lib" WMF_XML_CFLAGS="-I$WMF_XML_DIR/include" WMF_XML_LDFLAGS="-L$WMF_XML_DIR/lib -lexpat" else WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="-lexpat" fi if test "${ac_cv_header_expat_h+set}" = set; then echo "$as_me:$LINENO: checking for expat.h" >&5 echo $ECHO_N "checking for expat.h... $ECHO_C" >&6 if test "${ac_cv_header_expat_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 echo "${ECHO_T}$ac_cv_header_expat_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking expat.h usability" >&5 echo $ECHO_N "checking expat.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking expat.h presence" >&5 echo $ECHO_N "checking expat.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: expat.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: expat.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: expat.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: expat.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: expat.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: expat.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: expat.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for expat.h" >&5 echo $ECHO_N "checking for expat.h... $ECHO_C" >&6 if test "${ac_cv_header_expat_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_expat_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 echo "${ECHO_T}$ac_cv_header_expat_h" >&6 fi if test $ac_cv_header_expat_h = yes; then echo "$as_me:$LINENO: checking for XML_ParserFree in -lexpat" >&5 echo $ECHO_N "checking for XML_ParserFree in -lexpat... $ECHO_C" >&6 if test "${ac_cv_lib_expat_XML_ParserFree+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lexpat $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XML_ParserFree (); int main () { XML_ParserFree (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_expat_XML_ParserFree=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_expat_XML_ParserFree=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_expat_XML_ParserFree" >&5 echo "${ECHO_T}$ac_cv_lib_expat_XML_ParserFree" >&6 if test $ac_cv_lib_expat_XML_ParserFree = yes; then libwmf_xml=expat else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * unable to find expat * * *" >&5 echo "$as_me: error: * * * unable to find expat * * *" >&2;} { (exit 1); exit 1; }; } fi fi else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * unable to find expat * * *" >&5 echo "$as_me: error: * * * unable to find expat * * *" >&2;} { (exit 1); exit 1; }; } fi fi if test "x$WMF_XML_DIR" != "x"; then CPPFLAGS=$_cppflags LDFLAGS=$_ldflags fi fi if test $libwmf_xml = libxml2 -o $libwmf_xml = unknown; then if test -n "$WMF_XML_DIR" ; then # Extract the first word of "xml2-config", so it can be a program name with args. set dummy xml2-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XML2_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $XML2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $WMF_XML_DIR/bin $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi XML2_CONFIG=$ac_cv_path_XML2_CONFIG if test -n "$XML2_CONFIG"; then echo "$as_me:$LINENO: result: $XML2_CONFIG" >&5 echo "${ECHO_T}$XML2_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else # Extract the first word of "xml2-config", so it can be a program name with args. set dummy xml2-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XML2_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $XML2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi XML2_CONFIG=$ac_cv_path_XML2_CONFIG if test -n "$XML2_CONFIG"; then echo "$as_me:$LINENO: result: $XML2_CONFIG" >&5 echo "${ECHO_T}$XML2_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test "x$XML2_CONFIG" != "x"; then WMF_XML_CFLAGS=`$XML2_CONFIG --cflags` WMF_XML_LDFLAGS=`$XML2_CONFIG --libs` libwmf_xml=libxml2 elif test $libwmf_xml = libxml2; then { { echo "$as_me:$LINENO: error: * * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *" >&5 echo "$as_me: error: * * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *" >&2;} { (exit 1); exit 1; }; } fi fi if test $libwmf_xml = expat; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_EXPAT 1 _ACEOF elif test $libwmf_xml = libxml2; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBXML2 1 _ACEOF else libwmf_xml=none WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" fi WMF_FT_CONFIG_CFLAGS="" WMF_FT_CFLAGS="" WMF_FT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS have_freetype=no # Check whether --with-freetype or --without-freetype was given. if test "${with_freetype+set}" = set; then withval="$with_freetype" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then FREETYPE_DIR=$withval fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires freetype2 * * *" >&5 echo "$as_me: error: * * * libwmf requires freetype2 * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test -n "$FREETYPE_DIR" ; then # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$FREETYPE_DIR/bin:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5 echo "${ECHO_T}$FREETYPE_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5 echo "${ECHO_T}$FREETYPE_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -n "$FREETYPE_CONFIG" ; then if test -n "$FREETYPE_DIR" ; then freetype_cflags="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include" freetype_libs=`$FREETYPE_CONFIG --libs` else freetype_cflags=`$FREETYPE_CONFIG --cflags` freetype_libs=`$FREETYPE_CONFIG --libs` fi else if test -n "$FREETYPE_DIR" ; then freetype_cflags="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include" freetype_libs="-L$FREETYPE_DIR/lib -lfreetype" else freetype_cflags="" freetype_libs="-lfreetype" fi fi CPPFLAGS="$freetype_cflags $CPPFLAGS" LDFLAGS="$LDFLAGS $freetype_libs" echo "$as_me:$LINENO: checking for FT_Init_FreeType in -lfreetype" >&5 echo $ECHO_N "checking for FT_Init_FreeType in -lfreetype... $ECHO_C" >&6 if test "${ac_cv_lib_freetype_FT_Init_FreeType+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreetype $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char FT_Init_FreeType (); int main () { FT_Init_FreeType (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_freetype_FT_Init_FreeType=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_freetype_FT_Init_FreeType=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_FT_Init_FreeType" >&5 echo "${ECHO_T}$ac_cv_lib_freetype_FT_Init_FreeType" >&6 if test $ac_cv_lib_freetype_FT_Init_FreeType = yes; then WMF_FT_LDFLAGS="$freetype_libs" else { { echo "$as_me:$LINENO: error: * * * freetype(2) is required * * *" >&5 echo "$as_me: error: * * * freetype(2) is required * * *" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_ft2build_h+set}" = set; then echo "$as_me:$LINENO: checking for ft2build.h" >&5 echo $ECHO_N "checking for ft2build.h... $ECHO_C" >&6 if test "${ac_cv_header_ft2build_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_ft2build_h" >&5 echo "${ECHO_T}$ac_cv_header_ft2build_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking ft2build.h usability" >&5 echo $ECHO_N "checking ft2build.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking ft2build.h presence" >&5 echo $ECHO_N "checking ft2build.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: ft2build.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: ft2build.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: ft2build.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: ft2build.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: ft2build.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: ft2build.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: ft2build.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: ft2build.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: ft2build.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: ft2build.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for ft2build.h" >&5 echo $ECHO_N "checking for ft2build.h... $ECHO_C" >&6 if test "${ac_cv_header_ft2build_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_ft2build_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_ft2build_h" >&5 echo "${ECHO_T}$ac_cv_header_ft2build_h" >&6 fi if test $ac_cv_header_ft2build_h = yes; then WMF_FT_CFLAGS="$freetype_cflags" WMF_FT_CONFIG_CFLAGS="$freetype_cflags" else { { echo "$as_me:$LINENO: error: * * * freetype(2) is required * * *" >&5 echo "$as_me: error: * * * freetype(2) is required * * *" >&2;} { (exit 1); exit 1; }; } fi GD_DEFS="$GD_DEFS -DHAVE_LIBFREETYPE" CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_Z_CONFIG_CFLAGS="" WMF_Z_CFLAGS="" WMF_Z_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-zlib or --without-zlib was given. if test "${with_zlib+set}" = set; then withval="$with_zlib" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then ZLIB_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires zlib * * *" >&5 echo "$as_me: error: * * * libwmf requires zlib * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test $LIBWMF_BUILDSTYLE = heavy; then if test "${ac_cv_header_zlib_h+set}" = set; then echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking zlib.h usability" >&5 echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking zlib.h presence" >&5 echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_zlib_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 fi if test $ac_cv_header_zlib_h = yes; then echo "$as_me:$LINENO: checking for gzputs in -lz" >&5 echo $ECHO_N "checking for gzputs in -lz... $ECHO_C" >&6 if test "${ac_cv_lib_z_gzputs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gzputs (); int main () { gzputs (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_z_gzputs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_z_gzputs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzputs" >&5 echo "${ECHO_T}$ac_cv_lib_z_gzputs" >&6 if test $ac_cv_lib_z_gzputs = yes; then if test "x$ZLIB_DIR" != "x" ; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lz" else WMF_Z_LDFLAGS="-lz" fi else echo "$as_me:$LINENO: checking for gzputs in -lgz" >&5 echo $ECHO_N "checking for gzputs in -lgz... $ECHO_C" >&6 if test "${ac_cv_lib_gz_gzputs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gzputs (); int main () { gzputs (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gz_gzputs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gz_gzputs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gz_gzputs" >&5 echo "${ECHO_T}$ac_cv_lib_gz_gzputs" >&6 if test $ac_cv_lib_gz_gzputs = yes; then if test "x$ZLIB_DIR" != "x" ; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi else { { echo "$as_me:$LINENO: error: * * * unable to find libz which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find libz which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi fi else { { echo "$as_me:$LINENO: error: * * * unable to find \"zlib.h\" which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find \"zlib.h\" which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_PNG_CFLAGS="" WMF_PNG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-png or --without-png was given. if test "${with_png+set}" = set; then withval="$with_png" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then PNG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires libpng * * *" >&5 echo "$as_me: error: * * * libwmf requires libpng * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test $LIBWMF_BUILDSTYLE = heavy; then CPPFLAGS="$CPPFLAGS $WMF_Z_CFLAGS" if test "${ac_cv_header_png_h+set}" = set; then echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6 if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking png.h usability" >&5 echo $ECHO_N "checking png.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking png.h presence" >&5 echo $ECHO_N "checking png.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: png.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: png.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: png.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: png.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: png.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6 if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_png_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6 fi if test $ac_cv_header_png_h = yes; then echo "$as_me:$LINENO: checking for png_write_image in -lpng" >&5 echo $ECHO_N "checking for png_write_image in -lpng... $ECHO_C" >&6 if test "${ac_cv_lib_png_png_write_image+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpng -lz -lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char png_write_image (); int main () { png_write_image (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_png_png_write_image=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_png_png_write_image=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_write_image" >&5 echo "${ECHO_T}$ac_cv_lib_png_png_write_image" >&6 if test $ac_cv_lib_png_png_write_image = yes; then if test "x$PNG_DIR" != "x" ; then WMF_PNG_CFLAGS="-I$PNG_DIR/include" WMF_PNG_LDFLAGS="-L$PNG_DIR/lib -lpng" else WMF_PNG_LDFLAGS="-lpng" fi else { { echo "$as_me:$LINENO: error: * * * unable to find libpng which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find libpng which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi else { { echo "$as_me:$LINENO: error: * * * unable to find \"png.h\" which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find \"png.h\" which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBPNG 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_LIBPNG" fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_JPEG_CFLAGS="" WMF_JPEG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-jpeg or --without-jpeg was given. if test "${with_jpeg+set}" = set; then withval="$with_jpeg" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then JPEG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_jpeg=yes else search_for_jpeg=no fi else search_for_jpeg=yes fi; if test $LIBWMF_BUILDSTYLE = lite; then search_for_jpeg=no fi # $LIBWMF_BUILDSTYLE = lite if test "$search_for_jpeg" != "no" ; then if test "${ac_cv_header_jpeglib_h+set}" = set; then echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_jpeglib_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 fi if test $ac_cv_header_jpeglib_h = yes; then echo "$as_me:$LINENO: checking for jpeg_CreateCompress in -ljpeg" >&5 echo $ECHO_N "checking for jpeg_CreateCompress in -ljpeg... $ECHO_C" >&6 if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char jpeg_CreateCompress (); int main () { jpeg_CreateCompress (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_jpeg_jpeg_CreateCompress=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_jpeg_jpeg_CreateCompress=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6 if test $ac_cv_lib_jpeg_jpeg_CreateCompress = yes; then if test "x$JPEG_DIR" != "x" ; then WMF_JPEG_CFLAGS="-I$JPEG_DIR/include" WMF_JPEG_LDFLAGS="-L$JPEG_DIR/lib -ljpeg" else WMF_JPEG_LDFLAGS="-ljpeg" fi cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBJPEG 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_LIBJPEG" libwmf_gd_jpeg=yes fi fi fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_GD_CFLAGS="" WMF_GD_LDFLAGS="" libwmf_gd="wmf" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-sys-gd or --without-sys-gd was given. if test "${with_sys_gd+set}" = set; then withval="$with_sys_gd" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then GD_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_gd=yes else search_for_gd=no fi else search_for_gd=yes fi; # Check whether --enable-gd or --disable-gd was given. if test "${enable_gd+set}" = set; then enableval="$enable_gd" if test "x$enableval" = "xno" ; then search_for_gd=no libwmf_gd="none" fi else if test $libwmf_layers = no ; then search_for_gd=no libwmf_gd="none" fi fi; if test "$search_for_gd" != "no" ; then other_libs="" if test "x$libwmf_x" = "xyes" ; then CPPFLAGS="$CPPFLAGS $WMF_X_CFLAGS" LDFLAGS="$LDFLAGS $WMF_X_LDFLAGS" echo "$as_me:$LINENO: checking for main in -lXpm" >&5 echo $ECHO_N "checking for main in -lXpm... $ECHO_C" >&6 if test "${ac_cv_lib_Xpm_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXpm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xpm_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xpm_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_main" >&5 echo "${ECHO_T}$ac_cv_lib_Xpm_main" >&6 if test $ac_cv_lib_Xpm_main = yes; then other_libs="$other_libs -lXpm" WMF_GD_LDFLAGS="-lXpm" fi fi if test "x$libwmf_gd_jpeg" = "xyes" ; then CPPFLAGS="$CPPFLAGS $WMF_JPEG_CFLAGS" LDFLAGS="$LDFLAGS $WMF_JPEG_LDFLAGS" other_libs="$other_libs -ljpeg" fi CPPFLAGS="$CPPFLAGS $WMF_FT_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" LDFLAGS="$LDFLAGS $WMF_FT_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS" other_libs="$other_libs -lfreetype -lpng -lz -lm" if test "${ac_cv_header_gd_h+set}" = set; then echo "$as_me:$LINENO: checking for gd.h" >&5 echo $ECHO_N "checking for gd.h... $ECHO_C" >&6 if test "${ac_cv_header_gd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 echo "${ECHO_T}$ac_cv_header_gd_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking gd.h usability" >&5 echo $ECHO_N "checking gd.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking gd.h presence" >&5 echo $ECHO_N "checking gd.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: gd.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: gd.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: gd.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: gd.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: gd.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: gd.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: gd.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for gd.h" >&5 echo $ECHO_N "checking for gd.h... $ECHO_C" >&6 if test "${ac_cv_header_gd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_gd_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 echo "${ECHO_T}$ac_cv_header_gd_h" >&6 fi if test $ac_cv_header_gd_h = yes; then echo "$as_me:$LINENO: checking for gdClipSetAdd in -lgd" >&5 echo $ECHO_N "checking for gdClipSetAdd in -lgd... $ECHO_C" >&6 if test "${ac_cv_lib_gd_gdClipSetAdd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgd $other_libs $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gdClipSetAdd (); int main () { gdClipSetAdd (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gd_gdClipSetAdd=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gd_gdClipSetAdd=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdClipSetAdd" >&5 echo "${ECHO_T}$ac_cv_lib_gd_gdClipSetAdd" >&6 if test $ac_cv_lib_gd_gdClipSetAdd = yes; then echo "$as_me:$LINENO: checking for gdft_draw_bitmap in -lgd" >&5 echo $ECHO_N "checking for gdft_draw_bitmap in -lgd... $ECHO_C" >&6 if test "${ac_cv_lib_gd_gdft_draw_bitmap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgd $other_libs $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gdft_draw_bitmap (); int main () { gdft_draw_bitmap (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gd_gdft_draw_bitmap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gd_gdft_draw_bitmap=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdft_draw_bitmap" >&5 echo "${ECHO_T}$ac_cv_lib_gd_gdft_draw_bitmap" >&6 if test $ac_cv_lib_gd_gdft_draw_bitmap = yes; then libwmf_gd="sys" fi fi fi fi if test "x$libwmf_gd" != "xnone" ; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GD 1 _ACEOF build_gd_layer=yes else build_gd_layer=no fi if test "x$libwmf_gd" = "xsys" ; then if test "x$GD_DIR" != "x" ; then WMF_GD_CFLAGS="-I$GD_DIR/include" WMF_GD_LDFLAGS="-L$GD_DIR/lib -lgd $WMF_GD_LDFLAGS" else WMF_GD_LDFLAGS="-lgd $WMF_GD_LDFLAGS" fi elif test "x$libwmf_gd" = "xnone" ; then libwmf_gd="sys" else WMF_GD_LDFLAGS="" fi if test "x$build_gd_layer" = "xyes" ; then LIBWMF_OPT_GD_TRUE= LIBWMF_OPT_GD_FALSE='#' else LIBWMF_OPT_GD_TRUE='#' LIBWMF_OPT_GD_FALSE= fi if test "x$libwmf_gd" = "xsys" ; then LIBWMF_OPT_SYS_GD_TRUE= LIBWMF_OPT_SYS_GD_FALSE='#' else LIBWMF_OPT_SYS_GD_TRUE='#' LIBWMF_OPT_SYS_GD_FALSE= fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_PLOT_CFLAGS="" WMF_PLOT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # AC_ARG_WITH(plot,[ --with-plot=DIR use GNU plotutils (>= 2.4.0) in DIR (default no)],[ # if [ test "x$withval" != "xno" ]; then # AC_MSG_ERROR([* * * plotutils is not supported, sorry * * *]) # if [ test "x$withval" != "xyes" ]; then # PLOT_DIR=$withval # CPPFLAGS="$CPPFLAGS -I$withval/include" # LDFLAGS="$LDFLAGS -L$withval/lib" # fi # search_for_plot=yes # else # search_for_plot=no # fi #],[ search_for_plot=no #]) search_for_plot=no if test "$search_for_plot" != "no" ; then if test "${ac_cv_header_plot_h+set}" = set; then echo "$as_me:$LINENO: checking for plot.h" >&5 echo $ECHO_N "checking for plot.h... $ECHO_C" >&6 if test "${ac_cv_header_plot_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_plot_h" >&5 echo "${ECHO_T}$ac_cv_header_plot_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking plot.h usability" >&5 echo $ECHO_N "checking plot.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking plot.h presence" >&5 echo $ECHO_N "checking plot.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: plot.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: plot.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: plot.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: plot.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: plot.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: plot.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: plot.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: plot.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: plot.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: plot.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------- @%:@@%:@ @%:@@%:@ Report this to wvware-devel@sourceforge.net @%:@@%:@ @%:@@%:@ ------------------------------------------- @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for plot.h" >&5 echo $ECHO_N "checking for plot.h... $ECHO_C" >&6 if test "${ac_cv_header_plot_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_plot_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_plot_h" >&5 echo "${ECHO_T}$ac_cv_header_plot_h" >&6 fi if test $ac_cv_header_plot_h = yes; then echo "$as_me:$LINENO: checking for pl_libplot_ver in -lplot" >&5 echo $ECHO_N "checking for pl_libplot_ver in -lplot... $ECHO_C" >&6 if test "${ac_cv_lib_plot_pl_libplot_ver+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lplot $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pl_libplot_ver (); int main () { pl_libplot_ver (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_plot_pl_libplot_ver=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_plot_pl_libplot_ver=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_plot_pl_libplot_ver" >&5 echo "${ECHO_T}$ac_cv_lib_plot_pl_libplot_ver" >&6 if test $ac_cv_lib_plot_pl_libplot_ver = yes; then ac_can_link_libplot=no LIBPLOT_LIBS="-lplot" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot requires X" >&5 echo $ECHO_N "checking whether libplot requires X... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags if test "x$no_x" != "xyes" ; then if test $ac_can_link_libplot != yes ; then LIBPLOT_LIBS="-lplot $X_LIBS -lXaw -lXmu -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot links against Athena" >&5 echo $ECHO_N "checking whether libplot links against Athena... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags fi if test $ac_can_link_libplot != yes ; then ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $X_LIBS" echo "$as_me:$LINENO: checking for main in -lXp" >&5 echo $ECHO_N "checking for main in -lXp... $ECHO_C" >&6 if test "${ac_cv_lib_Xp_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXp -lXext -lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xp_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xp_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_main" >&5 echo "${ECHO_T}$ac_cv_lib_Xp_main" >&6 if test $ac_cv_lib_Xp_main = yes; then libXp="-lXp" else libXp="" fi LIBPLOT_LIBS="-lplot $X_LIBS -lXm $libXp -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" echo "$as_me:$LINENO: checking for main in -lgen" >&5 echo $ECHO_N "checking for main in -lgen... $ECHO_C" >&6 if test "${ac_cv_lib_gen_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgen $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gen_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gen_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gen_main" >&5 echo "${ECHO_T}$ac_cv_lib_gen_main" >&6 if test $ac_cv_lib_gen_main = yes; then LIBPLOT_LIBS="$LIBPLOT_LIBS -lgen" fi echo "$as_me:$LINENO: checking for main in -lPW" >&5 echo $ECHO_N "checking for main in -lPW... $ECHO_C" >&6 if test "${ac_cv_lib_PW_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lPW $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_PW_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_PW_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_PW_main" >&5 echo "${ECHO_T}$ac_cv_lib_PW_main" >&6 if test $ac_cv_lib_PW_main = yes; then LIBPLOT_LIBS="$LIBPLOT_LIBS -lPW" fi LDFLAGS=$ac_libplot_ldflags LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot links against Motif" >&5 echo $ECHO_N "checking whether libplot links against Motif... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags fi fi if test $ac_can_link_libplot != no ; then if test "x$PLOT_DIR" != "x" ; then WMF_PLOT_CFLAGS="-I$PLOT_DIR/include" WMF_PLOT_LDFLAGS="-L$PLOT_DIR/lib $LIBPLOT_LIBS" else WMF_PLOT_LDFLAGS="$LIBPLOT_LIBS" fi cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LIBPLOT 1 _ACEOF libwmf_plot=maybe else { { echo "$as_me:$LINENO: error: * * * sorry - unable to link against libplot * * *" >&5 echo "$as_me: error: * * * sorry - unable to link against libplot * * *" >&2;} { (exit 1); exit 1; }; } fi else { { echo "$as_me:$LINENO: error: GNU plotutils >= 2.4.0 required" >&5 echo "$as_me: error: GNU plotutils >= 2.4.0 required" >&2;} { (exit 1); exit 1; }; } fi fi fi if test "x$libwmf_plot" != "xno" ; then LIBWMF_OPT_PLOT_TRUE= LIBWMF_OPT_PLOT_FALSE='#' else LIBWMF_OPT_PLOT_TRUE='#' LIBWMF_OPT_PLOT_FALSE= fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags wmf_gdk_pixbuf=no GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" GDK_PIXBUF_DIR="" if test $LIBWMF_BUILDSTYLE != lite; then succeeded=no if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo "$as_me:$LINENO: checking for gdk-pixbuf-2.0 >= 2.1.2" >&5 echo $ECHO_N "checking for gdk-pixbuf-2.0 >= 2.1.2... $ECHO_C" >&6 if $PKG_CONFIG --exists "gdk-pixbuf-2.0 >= 2.1.2" ; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 succeeded=yes echo "$as_me:$LINENO: checking GDK_PIXBUF_CFLAGS" >&5 echo $ECHO_N "checking GDK_PIXBUF_CFLAGS... $ECHO_C" >&6 GDK_PIXBUF_CFLAGS=`$PKG_CONFIG --cflags "gdk-pixbuf-2.0 >= 2.1.2"` echo "$as_me:$LINENO: result: $GDK_PIXBUF_CFLAGS" >&5 echo "${ECHO_T}$GDK_PIXBUF_CFLAGS" >&6 echo "$as_me:$LINENO: checking GDK_PIXBUF_LIBS" >&5 echo $ECHO_N "checking GDK_PIXBUF_LIBS... $ECHO_C" >&6 GDK_PIXBUF_LIBS=`$PKG_CONFIG --libs "gdk-pixbuf-2.0 >= 2.1.2"` echo "$as_me:$LINENO: result: $GDK_PIXBUF_LIBS" >&5 echo "${ECHO_T}$GDK_PIXBUF_LIBS" >&6 else GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. GDK_PIXBUF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gdk-pixbuf-2.0 >= 2.1.2"` fi else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GDK_PIXBUF_DIR="gtk-2.0/$GTK_VERSION/loaders" wmf_gdk_pixbuf=yes else wmf_gdk_pixbuf=no fi fi if test $wmf_gdk_pixbuf = yes; then LIBWMF_GDK_PIXBUF_TRUE= LIBWMF_GDK_PIXBUF_FALSE='#' else LIBWMF_GDK_PIXBUF_TRUE='#' LIBWMF_GDK_PIXBUF_FALSE= fi # Check whether --with-docdir or --without-docdir was given. if test "${with_docdir+set}" = set; then withval="$with_docdir" WMF_DOCDIR=$withval else if test "x$prefix" = "xNONE"; then WMF_DOCDIR=$ac_default_prefix/share/doc/$PACKAGE else WMF_DOCDIR=$prefix/share/doc/$PACKAGE fi fi; # Check whether --with-fontdir or --without-fontdir was given. if test "${with_fontdir+set}" = set; then withval="$with_fontdir" WMF_FONTDIR=$withval else if test "x$prefix" = "xNONE"; then WMF_FONTDIR=$ac_default_prefix/share/$PACKAGE/fonts else WMF_FONTDIR=$prefix/share/$PACKAGE/fonts fi fi; # Check whether --with-sysfontmap or --without-sysfontmap was given. if test "${with_sysfontmap+set}" = set; then withval="$with_sysfontmap" WMF_SYS_FONTMAP=$withval else WMF_SYS_FONTMAP=/usr/share/fonts/fontmap fi; # Check whether --with-xtrafontmap or --without-xtrafontmap was given. if test "${with_xtrafontmap+set}" = set; then withval="$with_xtrafontmap" WMF_XTRA_FONTMAP=$withval else WMF_XTRA_FONTMAP=$WMF_FONTDIR/fontmap fi; # Check whether --with-gsfontmap or --without-gsfontmap was given. if test "${with_gsfontmap+set}" = set; then withval="$with_gsfontmap" WMF_GS_FONTMAP=$withval else if test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS ; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS elif test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap ; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap elif test -r 'c:/progra~1/gs/gs/lib/fontmap.gs' ; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap.gs' elif test -r 'c:/progra~1/gs/gs/lib/fontmap' ; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap' elif test -r 'c:/gs/fonts/fontmap.gs' ; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap.gs' elif test -r 'c:/gs/fonts/fontmap' ; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap' else WMF_GS_FONTMAP=/usr/share/ghostscript/5.50/Fontmap if test -d /usr/share/ghostscript; then for i in `ls /usr/share/ghostscript`; do if test -r "/usr/share/ghostscript/$i/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap" fi done fi fi fi; # Check whether --with-gsfontdir or --without-gsfontdir was given. if test "${with_gsfontdir+set}" = set; then withval="$with_gsfontdir" WMF_GS_FONTDIR=$withval else if test -d /var/lib/defoma/gs.d/dirs/fonts ; then WMF_GS_FONTDIR=/var/lib/defoma/gs.d/dirs/fonts elif test -d 'c:/progra~1/gs/gs/lib/fonts' ; then WMF_GS_FONTDIR='c:/progra~1/gs/gs/lib/fonts' elif test -d 'c:/gs/fonts' ; then WMF_GS_FONTDIR='c:/gs/fonts' else WMF_GS_FONTDIR=/usr/share/fonts/default/Type1 fi fi; WMF_CFLAGS="$WMF_FT_CFLAGS $WMF_X_CFLAGS $WMF_PLOT_CFLAGS $WMF_XML_CFLAGS" WMF_CFLAGS="$WMF_CFLAGS $WMF_GD_CFLAGS $WMF_JPEG_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" WMF_CONFIG_CFLAGS="$WMF_FT_CONFIG_CFLAGS $WMF_Z_CONFIG_CFLAGS $WMF_X_CONFIG_CFLAGS" WMF_LIBFLAGS="$WMF_PLOT_LDFLAGS $WMF_GD_LDFLAGS $WMF_FT_LDFLAGS $WMF_X_LDFLAGS $WMF_XML_LDFLAGS" WMF_LIBFLAGS="$WMF_LIBFLAGS $WMF_JPEG_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS $SYS_LIBM" ac_config_files="$ac_config_files Makefile doc/Makefile doc/caolan/Makefile doc/caolan/pics/Makefile doc/html/Makefile fonts/Makefile fonts/libwmf-fontmap fonts/fontmap include/Makefile include/libwmf/Makefile src/Makefile src/extra/Makefile src/extra/trio/Makefile src/extra/gd/Makefile src/ipa/Makefile src/convert/Makefile libwmf-config libwmf.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${LIBWMF_BUILD_ALL_TRUE}" && test -z "${LIBWMF_BUILD_ALL_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_BUILD_ALL\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_BUILD_ALL\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_TRIO_TRUE}" && test -z "${LIBWMF_OPT_TRIO_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_TRIO\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_TRIO\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_MODULES_TRUE}" && test -z "${LIBWMF_OPT_MODULES_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_MODULES\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_MODULES\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_LAYERS_TRUE}" && test -z "${LIBWMF_OPT_LAYERS_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_LAYERS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_LAYERS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_X_TRUE}" && test -z "${LIBWMF_OPT_X_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_X\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_X\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_GD_TRUE}" && test -z "${LIBWMF_OPT_GD_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_SYS_GD_TRUE}" && test -z "${LIBWMF_OPT_SYS_GD_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_SYS_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_SYS_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_PLOT_TRUE}" && test -z "${LIBWMF_OPT_PLOT_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_PLOT\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_PLOT\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_GDK_PIXBUF_TRUE}" && test -z "${LIBWMF_GDK_PIXBUF_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_GDK_PIXBUF\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_GDK_PIXBUF\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by libwmf $as_me 0.2.8, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ libwmf config.status 0.2.8 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/caolan/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/caolan/Makefile" ;; "doc/caolan/pics/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/caolan/pics/Makefile" ;; "doc/html/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/Makefile" ;; "fonts/Makefile" ) CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "fonts/libwmf-fontmap" ) CONFIG_FILES="$CONFIG_FILES fonts/libwmf-fontmap" ;; "fonts/fontmap" ) CONFIG_FILES="$CONFIG_FILES fonts/fontmap" ;; "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/libwmf/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/libwmf/Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/extra/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;; "src/extra/trio/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/trio/Makefile" ;; "src/extra/gd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/gd/Makefile" ;; "src/ipa/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ipa/Makefile" ;; "src/convert/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/convert/Makefile" ;; "libwmf-config" ) CONFIG_FILES="$CONFIG_FILES libwmf-config" ;; "libwmf.spec" ) CONFIG_FILES="$CONFIG_FILES libwmf.spec" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "wmfconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS wmfconfig.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@LIBWMF_PACKAGE@,$LIBWMF_PACKAGE,;t t s,@LIBWMF_VERSION@,$LIBWMF_VERSION,;t t s,@LIBWMF_RELEASE@,$LIBWMF_RELEASE,;t t s,@LT_RELEASE@,$LT_RELEASE,;t t s,@LT_CURRENT@,$LT_CURRENT,;t t s,@LT_REVISION@,$LT_REVISION,;t t s,@LT_AGE@,$LT_AGE,;t t s,@LT_LITE_CURRENT@,$LT_LITE_CURRENT,;t t s,@LT_LITE_REVISION@,$LT_LITE_REVISION,;t t s,@LT_LITE_AGE@,$LT_LITE_AGE,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@AMTAR@,$AMTAR,;t t s,@am__tar@,$am__tar,;t t s,@am__untar@,$am__untar,;t t s,@LIBWMF_BUILDSTYLE@,$LIBWMF_BUILDSTYLE,;t t s,@LIBWMF_BUILD_ALL_TRUE@,$LIBWMF_BUILD_ALL_TRUE,;t t s,@LIBWMF_BUILD_ALL_FALSE@,$LIBWMF_BUILD_ALL_FALSE,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@SYS_LIBM@,$SYS_LIBM,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@CPP@,$CPP,;t t s,@LN_S@,$LN_S,;t t s,@EGREP@,$EGREP,;t t s,@ECHO@,$ECHO,;t t s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@DLLTOOL@,$DLLTOOL,;t t s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t s,@AS@,$AS,;t t s,@ac_ct_AS@,$ac_ct_AS,;t t s,@OBJDUMP@,$OBJDUMP,;t t s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@CXXCPP@,$CXXCPP,;t t s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@LIBWMF_OPT_TRIO_TRUE@,$LIBWMF_OPT_TRIO_TRUE,;t t s,@LIBWMF_OPT_TRIO_FALSE@,$LIBWMF_OPT_TRIO_FALSE,;t t s,@LIBWMF_OPT_MODULES_TRUE@,$LIBWMF_OPT_MODULES_TRUE,;t t s,@LIBWMF_OPT_MODULES_FALSE@,$LIBWMF_OPT_MODULES_FALSE,;t t s,@LIBWMF_OPT_LAYERS_TRUE@,$LIBWMF_OPT_LAYERS_TRUE,;t t s,@LIBWMF_OPT_LAYERS_FALSE@,$LIBWMF_OPT_LAYERS_FALSE,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@LIBWMF_OPT_X_TRUE@,$LIBWMF_OPT_X_TRUE,;t t s,@LIBWMF_OPT_X_FALSE@,$LIBWMF_OPT_X_FALSE,;t t s,@XML2_CONFIG@,$XML2_CONFIG,;t t s,@FREETYPE_CONFIG@,$FREETYPE_CONFIG,;t t s,@LIBWMF_OPT_GD_TRUE@,$LIBWMF_OPT_GD_TRUE,;t t s,@LIBWMF_OPT_GD_FALSE@,$LIBWMF_OPT_GD_FALSE,;t t s,@LIBWMF_OPT_SYS_GD_TRUE@,$LIBWMF_OPT_SYS_GD_TRUE,;t t s,@LIBWMF_OPT_SYS_GD_FALSE@,$LIBWMF_OPT_SYS_GD_FALSE,;t t s,@LIBWMF_OPT_PLOT_TRUE@,$LIBWMF_OPT_PLOT_TRUE,;t t s,@LIBWMF_OPT_PLOT_FALSE@,$LIBWMF_OPT_PLOT_FALSE,;t t s,@PKG_CONFIG@,$PKG_CONFIG,;t t s,@GDK_PIXBUF_CFLAGS@,$GDK_PIXBUF_CFLAGS,;t t s,@GDK_PIXBUF_LIBS@,$GDK_PIXBUF_LIBS,;t t s,@LIBWMF_GDK_PIXBUF_TRUE@,$LIBWMF_GDK_PIXBUF_TRUE,;t t s,@LIBWMF_GDK_PIXBUF_FALSE@,$LIBWMF_GDK_PIXBUF_FALSE,;t t s,@GDK_PIXBUF_DIR@,$GDK_PIXBUF_DIR,;t t s,@WMF_CFLAGS@,$WMF_CFLAGS,;t t s,@WMF_CONFIG_CFLAGS@,$WMF_CONFIG_CFLAGS,;t t s,@WMF_LIBFLAGS@,$WMF_LIBFLAGS,;t t s,@WMF_DOCDIR@,$WMF_DOCDIR,;t t s,@WMF_FONTDIR@,$WMF_FONTDIR,;t t s,@WMF_SYS_FONTMAP@,$WMF_SYS_FONTMAP,;t t s,@WMF_XTRA_FONTMAP@,$WMF_XTRA_FONTMAP,;t t s,@WMF_GS_FONTMAP@,$WMF_GS_FONTMAP,;t t s,@WMF_GS_FONTDIR@,$WMF_GS_FONTDIR,;t t s,@WMF_DEFS@,$WMF_DEFS,;t t s,@GD_DEFS@,$GD_DEFS,;t t s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi echo "" echo " Support for X: $libwmf_x" echo " Support for GD: $libwmf_gd" echo " Support for JPEG though GD: $libwmf_gd_jpeg" echo " Support for XML: $libwmf_xml" echo "" echo " Documentation directory: $WMF_DOCDIR" echo " Font directory: $WMF_FONTDIR" echo " System XML fontmap file: $WMF_SYS_FONTMAP" echo " Non-system XML fontmap file: $WMF_XTRA_FONTMAP" echo " ghostscript fontmap file: $WMF_GS_FONTMAP" echo " ghostscript font directory: $WMF_GS_FONTDIR" echo "" echo " building gdk-pixbuf plug-in? $wmf_gdk_pixbuf" echo "" libwmf-0.2.8.4/autom4te.cache/traces.10000664000077100007710000013151010272000327016646 0ustar fjffjf00000000000000m4trace:aclocal.m4:7028: -1- m4_include([acinclude.m4]) m4trace:configure.ac:1: -1- AC_INIT([libwmf], [0.2.8], [wvware-devel@sourceforge.net]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:1: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.ac:1: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.ac:1: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.ac:1: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.ac:1: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.ac:1: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.ac:1: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.ac:1: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.ac:1: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.ac:1: -1- AC_SUBST([datadir], ['${prefix}/share']) m4trace:configure.ac:1: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.ac:1: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.ac:1: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.ac:1: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.ac:1: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.ac:1: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.ac:1: -1- AC_SUBST([infodir], ['${prefix}/info']) m4trace:configure.ac:1: -1- AC_SUBST([mandir], ['${prefix}/man']) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.ac:1: -1- AC_SUBST([build_alias]) m4trace:configure.ac:1: -1- AC_SUBST([host_alias]) m4trace:configure.ac:1: -1- AC_SUBST([target_alias]) m4trace:configure.ac:1: -1- AC_SUBST([DEFS]) m4trace:configure.ac:1: -1- AC_SUBST([ECHO_C]) m4trace:configure.ac:1: -1- AC_SUBST([ECHO_N]) m4trace:configure.ac:1: -1- AC_SUBST([ECHO_T]) m4trace:configure.ac:1: -1- AC_SUBST([LIBS]) m4trace:configure.ac:5: -1- AC_SUBST([LIBWMF_PACKAGE]) m4trace:configure.ac:30: -1- AC_SUBST([LIBWMF_VERSION]) m4trace:configure.ac:31: -1- AC_SUBST([LIBWMF_RELEASE]) m4trace:configure.ac:35: -1- AC_SUBST([LT_RELEASE]) m4trace:configure.ac:40: -1- AC_SUBST([LT_CURRENT]) m4trace:configure.ac:41: -1- AC_SUBST([LT_REVISION]) m4trace:configure.ac:42: -1- AC_SUBST([LT_AGE]) m4trace:configure.ac:47: -1- AC_SUBST([LT_LITE_CURRENT]) m4trace:configure.ac:48: -1- AC_SUBST([LT_LITE_REVISION]) m4trace:configure.ac:49: -1- AC_SUBST([LT_LITE_AGE]) m4trace:configure.ac:56: -1- AM_INIT_AUTOMAKE([$PACKAGE], [$VERSION], [no-define]) m4trace:configure.ac:56: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.ac:56: -1- AM_AUTOMAKE_VERSION([1.9.2]) m4trace:configure.ac:56: -1- AC_PROG_INSTALL m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.ac:56: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.ac:56: -1- AC_SUBST([PACKAGE], [$PACKAGE]) m4trace:configure.ac:56: -1- AC_SUBST([VERSION], [$VERSION]) m4trace:configure.ac:56: -1- AC_SUBST([ACLOCAL]) m4trace:configure.ac:56: -1- AC_SUBST([AUTOCONF]) m4trace:configure.ac:56: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.ac:56: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.ac:56: -1- AC_SUBST([MAKEINFO]) m4trace:configure.ac:56: -1- AC_SUBST([install_sh]) m4trace:configure.ac:56: -1- AC_SUBST([STRIP]) m4trace:configure.ac:56: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.ac:56: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.ac:56: -1- AC_SUBST([mkdir_p]) m4trace:configure.ac:56: -1- AC_PROG_AWK m4trace:configure.ac:56: -1- AC_SUBST([AWK]) m4trace:configure.ac:56: -1- AC_PROG_MAKE_SET m4trace:configure.ac:56: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:56: -1- AC_SUBST([am__leading_dot]) m4trace:configure.ac:56: -1- AC_SUBST([AMTAR]) m4trace:configure.ac:56: -1- AC_SUBST([am__tar]) m4trace:configure.ac:56: -1- AC_SUBST([am__untar]) m4trace:configure.ac:59: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.], [aclocal.m4:6404: AM_CONFIG_HEADER is expanded from... configure.ac:59: the top level]) m4trace:configure.ac:59: -1- AC_CONFIG_HEADERS([wmfconfig.h]) m4trace:configure.ac:64: -1- AH_OUTPUT([00001], [ #ifndef LIBWMF_CONFIG_H #define LIBWMF_CONFIG_H ]) m4trace:configure.ac:107: -1- AC_SUBST([LIBWMF_BUILDSTYLE]) m4trace:configure.ac:108: -1- AM_CONDITIONAL([LIBWMF_BUILD_ALL], [ test "x$libwmf_build_all" = "xyes" ]) m4trace:configure.ac:108: -1- AC_SUBST([LIBWMF_BUILD_ALL_TRUE]) m4trace:configure.ac:108: -1- AC_SUBST([LIBWMF_BUILD_ALL_FALSE]) m4trace:configure.ac:115: -1- _m4_warn([obsolete], [The macro `AC_CYGWIN' is obsolete. You should run autoupdate.], [autoconf/specific.m4:363: AC_CYGWIN is expanded from... configure.ac:115: the top level]) m4trace:configure.ac:115: -1- AC_CANONICAL_HOST m4trace:configure.ac:115: -1- AC_CANONICAL_BUILD m4trace:configure.ac:115: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.ac:115: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.ac:115: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.ac:115: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.ac:115: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.ac:115: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.ac:115: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.ac:115: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.ac:115: -1- _m4_warn([obsolete], [AC_CYGWIN is obsolete: use AC_CANONICAL_HOST and $host_os], [autoconf/specific.m4:363: AC_CYGWIN is expanded from... configure.ac:115: the top level]) m4trace:configure.ac:118: -1- _m4_warn([obsolete], [The macro `AC_MINGW32' is obsolete. You should run autoupdate.], [autoconf/specific.m4:393: AC_MINGW32 is expanded from... configure.ac:118: the top level]) m4trace:configure.ac:118: -1- AC_CANONICAL_HOST m4trace:configure.ac:118: -1- _m4_warn([syntax], [AC_CANONICAL_HOST invoked multiple times], [autoconf/specific.m4:393: AC_MINGW32 is expanded from... configure.ac:118: the top level]) m4trace:configure.ac:118: -1- _m4_warn([obsolete], [AC_MINGW32 is obsolete: use AC_CANONICAL_HOST and $host_os], [autoconf/specific.m4:393: AC_MINGW32 is expanded from... configure.ac:118: the top level]) m4trace:configure.ac:134: -1- AC_SUBST([SYS_LIBM]) m4trace:configure.ac:138: -1- AC_PROG_AWK m4trace:configure.ac:138: -1- AC_SUBST([AWK]) m4trace:configure.ac:139: -1- AC_PROG_CC m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([CFLAGS]) m4trace:configure.ac:139: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:139: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([CC]) m4trace:configure.ac:139: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:139: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.ac:139: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.ac:139: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.ac:139: -1- AC_SUBST([am__include]) m4trace:configure.ac:139: -1- AC_SUBST([am__quote]) m4trace:configure.ac:139: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.ac:139: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.ac:139: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.ac:139: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.ac:139: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.ac:139: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:139: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.ac:139: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.ac:140: -1- AC_PROG_CPP m4trace:configure.ac:140: -1- AC_SUBST([CPP]) m4trace:configure.ac:140: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:140: -1- AC_SUBST([CPP]) m4trace:configure.ac:141: -1- AC_PROG_INSTALL m4trace:configure.ac:141: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.ac:141: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.ac:141: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.ac:142: -1- AC_PROG_LN_S m4trace:configure.ac:142: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.ac:143: -1- AC_PROG_MAKE_SET m4trace:configure.ac:143: -1- AC_SUBST([SET_MAKE]) m4trace:configure.ac:147: -1- AC_PROG_LIBTOOL m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... aclocal.m4:1778: AC_ENABLE_SHARED is expanded from... configure.ac:147: AC_ENABLE_SHARED is required by... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... aclocal.m4:1817: AC_ENABLE_STATIC is expanded from... configure.ac:147: AC_ENABLE_STATIC is required by... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... aclocal.m4:1856: AC_ENABLE_FAST_INSTALL is expanded from... configure.ac:147: AC_ENABLE_FAST_INSTALL is required by... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1331: AC_ARG_WITH is expanded from... aclocal.m4:2053: AC_PROG_LD is expanded from... configure.ac:147: AC_PROG_LD is required by... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_SUBST([EGREP]) m4trace:configure.ac:147: -1- AC_SUBST([ECHO]) m4trace:configure.ac:147: -1- AC_SUBST([AR]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_AR]) m4trace:configure.ac:147: -1- AC_SUBST([RANLIB]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_RANLIB]) m4trace:configure.ac:147: -1- AC_SUBST([STRIP]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1331: AC_ARG_WITH is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... aclocal.m4:550: _LT_AC_LOCK is expanded from... configure.ac:147: _LT_AC_LOCK is required by... aclocal.m4:981: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from... aclocal.m4:2609: _LT_AC_LANG_C_CONFIG is expanded from... aclocal.m4:2476: AC_LIBTOOL_LANG_C_CONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_SUBST([DLLTOOL]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_DLLTOOL]) m4trace:configure.ac:147: -1- AC_SUBST([AS]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_AS]) m4trace:configure.ac:147: -1- AC_SUBST([OBJDUMP]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_OBJDUMP]) m4trace:configure.ac:147: -1- AC_CHECK_HEADERS([dlfcn.h]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) m4trace:configure.ac:147: -1- AC_HEADER_STDC m4trace:configure.ac:147: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.ac:147: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.ac:147: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.ac:147: -1- _LT_AC_TAGCONFIG m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... autoconf/general.m4:1331: AC_ARG_WITH is expanded from... aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_PROG_CXX m4trace:configure.ac:147: -1- AC_SUBST([CXX]) m4trace:configure.ac:147: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([CXX]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.ac:147: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.ac:147: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.ac:147: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.ac:147: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.ac:147: -1- AC_SUBST([CXXCPP]) m4trace:configure.ac:147: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([CXXCPP]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.ac:147: -1- AC_SUBST([F77]) m4trace:configure.ac:147: -1- AC_SUBST([FFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([LDFLAGS]) m4trace:configure.ac:147: -1- AC_SUBST([F77]) m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_F77]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... aclocal.m4:3786: _LT_AC_LANG_GCJ_CONFIG is expanded from... aclocal.m4:3743: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE', and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... aclocal.m4:3786: _LT_AC_LANG_GCJ_CONFIG is expanded from... aclocal.m4:3743: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.ac:147: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from... aclocal.m4:3786: _LT_AC_LANG_GCJ_CONFIG is expanded from... aclocal.m4:3743: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... aclocal.m4:3825: _LT_AC_LANG_RC_CONFIG is expanded from... aclocal.m4:3794: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [instead of using `AC_LANG', `AC_LANG_SAVE', and `AC_LANG_RESTORE', you should use `AC_LANG_PUSH' and `AC_LANG_POP'.], [autoconf/lang.m4:166: AC_LANG_SAVE is expanded from... aclocal.m4:3825: _LT_AC_LANG_RC_CONFIG is expanded from... aclocal.m4:3794: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. You should run autoupdate.], [autoconf/lang.m4:172: AC_LANG_RESTORE is expanded from... aclocal.m4:3825: _LT_AC_LANG_RC_CONFIG is expanded from... aclocal.m4:3794: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... aclocal.m4:1732: _LT_AC_TAGCONFIG is expanded from... aclocal.m4:223: AC_LIBTOOL_SETUP is expanded from... configure.ac:147: AC_LIBTOOL_SETUP is required by... aclocal.m4:81: _AC_PROG_LIBTOOL is expanded from... configure.ac:147: _AC_PROG_LIBTOOL is required by... aclocal.m4:61: AC_PROG_LIBTOOL is expanded from... aclocal.m4:5857: AM_PROG_LIBTOOL is expanded from... configure.ac:147: the top level]) m4trace:configure.ac:147: -1- AC_SUBST([LIBTOOL]) m4trace:configure.ac:151: -1- AC_HEADER_STDC m4trace:configure.ac:151: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.ac:151: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.ac:152: -1- AC_CHECK_HEADERS([time.h]) m4trace:configure.ac:152: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TIME_H]) m4trace:configure.ac:156: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) m4trace:configure.ac:156: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* define if you have unistd.h */ #undef HAVE_UNISTD_H]) m4trace:configure.ac:159: -1- AC_C_CONST m4trace:configure.ac:159: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.ac:159: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ #undef const]) m4trace:configure.ac:161: -1- AC_TYPE_OFF_T m4trace:configure.ac:161: -1- AC_DEFINE_TRACE_LITERAL([off_t]) m4trace:configure.ac:161: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ #undef off_t]) m4trace:configure.ac:162: -1- AC_TYPE_SIZE_T m4trace:configure.ac:162: -1- AC_DEFINE_TRACE_LITERAL([size_t]) m4trace:configure.ac:162: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ #undef size_t]) m4trace:configure.ac:165: -1- AC_CHECK_FUNCS([strstr]) m4trace:configure.ac:165: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */ #undef HAVE_STRSTR]) m4trace:configure.ac:172: -1- AC_CHECK_FUNCS([printf fprintf vfprintf sprintf], [], [require_trio=yes]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_PRINTF], [/* Define to 1 if you have the `printf\' function. */ #undef HAVE_PRINTF]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_FPRINTF], [/* Define to 1 if you have the `fprintf\' function. */ #undef HAVE_FPRINTF]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_VFPRINTF], [/* Define to 1 if you have the `vfprintf\' function. */ #undef HAVE_VFPRINTF]) m4trace:configure.ac:172: -1- AH_OUTPUT([HAVE_SPRINTF], [/* Define to 1 if you have the `sprintf\' function. */ #undef HAVE_SPRINTF]) m4trace:configure.ac:173: -1- AC_CHECK_FUNCS([vprintf vsprintf]) m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */ #undef HAVE_VPRINTF]) m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_VSPRINTF], [/* Define to 1 if you have the `vsprintf\' function. */ #undef HAVE_VSPRINTF]) m4trace:configure.ac:174: -1- AC_CHECK_FUNCS([sscanf], [], [require_trio=yes]) m4trace:configure.ac:174: -1- AH_OUTPUT([HAVE_SSCANF], [/* Define to 1 if you have the `sscanf\' function. */ #undef HAVE_SSCANF]) m4trace:configure.ac:175: -1- AC_CHECK_FUNCS([scanf vscanf fscanf vsscanf]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_SCANF], [/* Define to 1 if you have the `scanf\' function. */ #undef HAVE_SCANF]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_VSCANF], [/* Define to 1 if you have the `vscanf\' function. */ #undef HAVE_VSCANF]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_FSCANF], [/* Define to 1 if you have the `fscanf\' function. */ #undef HAVE_FSCANF]) m4trace:configure.ac:175: -1- AH_OUTPUT([HAVE_VSSCANF], [/* Define to 1 if you have the `vsscanf\' function. */ #undef HAVE_VSSCANF]) m4trace:configure.ac:178: -1- AC_CHECK_FUNCS([vsnprintf], [], [check_for_vsnprintf=yes]) m4trace:configure.ac:178: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ #undef HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* define if you have vsnprintf */ #undef HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([vsnprintf]) m4trace:configure.ac:192: -1- AH_OUTPUT([vsnprintf], [/* define to your implementation of vsnprintf */ #undef vsnprintf]) m4trace:configure.ac:192: -1- AC_CHECK_LIB([db], [vsnprintf], [ AC_DEFINE(HAVE_VSNPRINTF,1,[define if you have vsnprintf]) WMF_LIBFLAGS="$WMF_LIBFLAGS -ldb" ], [ require_trio=yes ]) m4trace:configure.ac:192: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF]) m4trace:configure.ac:192: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* define if you have vsnprintf */ #undef HAVE_VSNPRINTF]) m4trace:configure.ac:196: -1- AC_CHECK_FUNCS([snprintf], [], [check_for_snprintf=yes]) m4trace:configure.ac:196: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ #undef HAVE_SNPRINTF]) m4trace:configure.ac:202: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF]) m4trace:configure.ac:202: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* define if you have snprintf */ #undef HAVE_SNPRINTF]) m4trace:configure.ac:202: -1- AC_DEFINE_TRACE_LITERAL([snprintf]) m4trace:configure.ac:202: -1- AH_OUTPUT([snprintf], [/* define to your implementation of snprintf */ #undef snprintf]) m4trace:configure.ac:206: -1- AC_CHECK_FUNCS([vfscanf], [], [check_for_vfscanf=yes]) m4trace:configure.ac:206: -1- AH_OUTPUT([HAVE_VFSCANF], [/* Define to 1 if you have the `vfscanf\' function. */ #undef HAVE_VFSCANF]) m4trace:configure.ac:214: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VFSCANF]) m4trace:configure.ac:214: -1- AH_OUTPUT([HAVE_VFSCANF], [/* define if you have vfscanf */ #undef HAVE_VFSCANF]) m4trace:configure.ac:219: -1- AM_CONDITIONAL([LIBWMF_OPT_TRIO], [ test "x$require_trio" = "xyes" ]) m4trace:configure.ac:219: -1- AC_SUBST([LIBWMF_OPT_TRIO_TRUE]) m4trace:configure.ac:219: -1- AC_SUBST([LIBWMF_OPT_TRIO_FALSE]) m4trace:configure.ac:222: -1- AC_DEFINE_TRACE_LITERAL([TRIO_REPLACE_STDIO]) m4trace:configure.ac:222: -1- AH_OUTPUT([TRIO_REPLACE_STDIO], [/* If any *printf or *scanf functions are missing, cover them with trio functions */ #undef TRIO_REPLACE_STDIO]) m4trace:configure.ac:246: -1- AC_DEFINE_TRACE_LITERAL([WITHOUT_LAYERS]) m4trace:configure.ac:246: -1- AH_OUTPUT([WITHOUT_LAYERS], [/* defining this will disable egs, fig, svg & foreign layers */ #undef WITHOUT_LAYERS]) m4trace:configure.ac:249: -1- AM_CONDITIONAL([LIBWMF_OPT_MODULES], [ test $libwmf_layers = modules ]) m4trace:configure.ac:249: -1- AC_SUBST([LIBWMF_OPT_MODULES_TRUE]) m4trace:configure.ac:249: -1- AC_SUBST([LIBWMF_OPT_MODULES_FALSE]) m4trace:configure.ac:250: -1- AM_CONDITIONAL([LIBWMF_OPT_LAYERS], [ test $libwmf_layers != no ]) m4trace:configure.ac:250: -1- AC_SUBST([LIBWMF_OPT_LAYERS_TRUE]) m4trace:configure.ac:250: -1- AC_SUBST([LIBWMF_OPT_LAYERS_FALSE]) m4trace:configure.ac:258: -1- AC_PATH_X m4trace:configure.ac:259: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) m4trace:configure.ac:259: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([nsl], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([bsd], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"]) m4trace:configure.ac:259: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], [], [$X_EXTRA_LIBS]) m4trace:configure.ac:259: -1- AC_SUBST([X_CFLAGS]) m4trace:configure.ac:259: -1- AC_SUBST([X_PRE_LIBS]) m4trace:configure.ac:259: -1- AC_SUBST([X_LIBS]) m4trace:configure.ac:259: -1- AC_SUBST([X_EXTRA_LIBS]) m4trace:configure.ac:278: -1- AM_CONDITIONAL([LIBWMF_OPT_X], [ test "x$no_x" != "xyes" ]) m4trace:configure.ac:278: -1- AC_SUBST([LIBWMF_OPT_X_TRUE]) m4trace:configure.ac:278: -1- AC_SUBST([LIBWMF_OPT_X_FALSE]) m4trace:configure.ac:348: -1- AC_CHECK_LIB([expat], [XML_ParserFree], [ libwmf_xml=expat ], [ if test $libwmf_xml = expat; then AC_MSG_ERROR([* * * unable to find expat * * *]) fi ]) m4trace:configure.ac:357: -1- AC_SUBST([XML2_CONFIG], [$ac_cv_path_XML2_CONFIG]) m4trace:configure.ac:359: -1- AC_SUBST([XML2_CONFIG], [$ac_cv_path_XML2_CONFIG]) m4trace:configure.ac:372: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EXPAT]) m4trace:configure.ac:372: -1- AH_OUTPUT([HAVE_EXPAT], [/* define if you have expat */ #undef HAVE_EXPAT]) m4trace:configure.ac:374: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBXML2]) m4trace:configure.ac:374: -1- AH_OUTPUT([HAVE_LIBXML2], [/* define if you have libxml2 */ #undef HAVE_LIBXML2]) m4trace:configure.ac:403: -1- AC_SUBST([FREETYPE_CONFIG], [$ac_cv_path_FREETYPE_CONFIG]) m4trace:configure.ac:405: -1- AC_SUBST([FREETYPE_CONFIG], [$ac_cv_path_FREETYPE_CONFIG]) m4trace:configure.ac:432: -1- AC_CHECK_LIB([freetype], [FT_Init_FreeType], [ WMF_FT_LDFLAGS="$freetype_libs" ], [ AC_MSG_ERROR([* * * freetype(2) is required * * *]) ]) m4trace:configure.ac:490: -1- AC_CHECK_LIB([z], [gzputs], [ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lz" else WMF_Z_LDFLAGS="-lz" fi ], [ AC_CHECK_LIB(gz,gzputs,[ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi ],[ AC_MSG_ERROR(* * * unable to find libz which is required by libwmf * * *) ]) ]) m4trace:configure.ac:490: -1- AC_CHECK_LIB([gz], [gzputs], [ if [ test "x$ZLIB_DIR" != "x" ]; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi ], [ AC_MSG_ERROR(* * * unable to find libz which is required by libwmf * * *) ]) m4trace:configure.ac:533: -1- AC_CHECK_LIB([png], [png_write_image], [ if [ test "x$PNG_DIR" != "x" ]; then WMF_PNG_CFLAGS="-I$PNG_DIR/include" WMF_PNG_LDFLAGS="-L$PNG_DIR/lib -lpng" else WMF_PNG_LDFLAGS="-lpng" fi ], [ AC_MSG_ERROR(* * * unable to find libpng which is required by libwmf * * *) ], [-lz -lm]) m4trace:configure.ac:535: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPNG]) m4trace:configure.ac:535: -1- AH_OUTPUT([HAVE_LIBPNG], [/* define if you have libpng */ #undef HAVE_LIBPNG]) m4trace:configure.ac:582: -1- AC_CHECK_LIB([jpeg], [jpeg_CreateCompress], [ if [ test "x$JPEG_DIR" != "x" ]; then WMF_JPEG_CFLAGS="-I$JPEG_DIR/include" WMF_JPEG_LDFLAGS="-L$JPEG_DIR/lib -ljpeg" else WMF_JPEG_LDFLAGS="-ljpeg" fi AC_DEFINE(HAVE_LIBJPEG,1,[define if you have libjpeg]) GD_DEFS="$GD_DEFS -DHAVE_LIBJPEG" libwmf_gd_jpeg=yes ]) m4trace:configure.ac:582: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBJPEG]) m4trace:configure.ac:582: -1- AH_OUTPUT([HAVE_LIBJPEG], [/* define if you have libjpeg */ #undef HAVE_LIBJPEG]) m4trace:configure.ac:637: -1- AC_CHECK_LIB([Xpm], [main], [ other_libs="$other_libs -lXpm" WMF_GD_LDFLAGS="-lXpm" ]) m4trace:configure.ac:656: -1- AC_CHECK_LIB([gd], [gdClipSetAdd], [ AC_CHECK_LIB(gd,gdft_draw_bitmap,[ libwmf_gd="sys" ],,$other_libs) ], [], [$other_libs]) m4trace:configure.ac:656: -1- AC_CHECK_LIB([gd], [gdft_draw_bitmap], [ libwmf_gd="sys" ], [], [$other_libs]) m4trace:configure.ac:660: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GD]) m4trace:configure.ac:660: -1- AH_OUTPUT([HAVE_GD], [/* define if you have libgd */ #undef HAVE_GD]) m4trace:configure.ac:680: -1- AM_CONDITIONAL([LIBWMF_OPT_GD], [ test "x$build_gd_layer" = "xyes" ]) m4trace:configure.ac:680: -1- AC_SUBST([LIBWMF_OPT_GD_TRUE]) m4trace:configure.ac:680: -1- AC_SUBST([LIBWMF_OPT_GD_FALSE]) m4trace:configure.ac:681: -1- AM_CONDITIONAL([LIBWMF_OPT_SYS_GD], [ test "x$libwmf_gd" = "xsys" ]) m4trace:configure.ac:681: -1- AC_SUBST([LIBWMF_OPT_SYS_GD_TRUE]) m4trace:configure.ac:681: -1- AC_SUBST([LIBWMF_OPT_SYS_GD_FALSE]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([plot], [pl_libplot_ver], [ AC_LIBPLOT_LIBS if [ test $ac_can_link_libplot != no ]; then if [ test "x$PLOT_DIR" != "x" ]; then WMF_PLOT_CFLAGS="-I$PLOT_DIR/include" WMF_PLOT_LDFLAGS="-L$PLOT_DIR/lib $LIBPLOT_LIBS" else WMF_PLOT_LDFLAGS="$LIBPLOT_LIBS" fi AC_DEFINE(HAVE_LIBPLOT,1,[define if you have libplot]) libwmf_plot=maybe else AC_MSG_ERROR(* * * sorry - unable to link against libplot * * *) fi ], [ AC_MSG_ERROR(GNU plotutils >= 2.4.0 required) ]) m4trace:configure.ac:729: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... acinclude.m4:131: AC_LIBPLOT_LIBS is expanded from... autoconf/libs.m4:134: AC_CHECK_LIB is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... configure.ac:729: the top level]) m4trace:configure.ac:729: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... acinclude.m4:131: AC_LIBPLOT_LIBS is expanded from... autoconf/libs.m4:134: AC_CHECK_LIB is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... configure.ac:729: the top level]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([Xp], [main], [libXp="-lXp"], [libXp=""], [-lXext -lX11]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([gen], [main], [LIBPLOT_LIBS="$LIBPLOT_LIBS -lgen"]) m4trace:configure.ac:729: -1- AC_CHECK_LIB([PW], [main], [LIBPLOT_LIBS="$LIBPLOT_LIBS -lPW"]) m4trace:configure.ac:729: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... acinclude.m4:131: AC_LIBPLOT_LIBS is expanded from... autoconf/libs.m4:134: AC_CHECK_LIB is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... configure.ac:729: the top level]) m4trace:configure.ac:729: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPLOT]) m4trace:configure.ac:729: -1- AH_OUTPUT([HAVE_LIBPLOT], [/* define if you have libplot */ #undef HAVE_LIBPLOT]) m4trace:configure.ac:732: -1- AM_CONDITIONAL([LIBWMF_OPT_PLOT], [ test "x$libwmf_plot" != "xno" ]) m4trace:configure.ac:732: -1- AC_SUBST([LIBWMF_OPT_PLOT_TRUE]) m4trace:configure.ac:732: -1- AC_SUBST([LIBWMF_OPT_PLOT_FALSE]) m4trace:configure.ac:751: -1- AC_SUBST([PKG_CONFIG], [$ac_cv_path_PKG_CONFIG]) m4trace:configure.ac:751: -1- AC_SUBST([GDK_PIXBUF_CFLAGS]) m4trace:configure.ac:751: -1- AC_SUBST([GDK_PIXBUF_LIBS]) m4trace:configure.ac:753: -1- AM_CONDITIONAL([LIBWMF_GDK_PIXBUF], [test $wmf_gdk_pixbuf = yes]) m4trace:configure.ac:753: -1- AC_SUBST([LIBWMF_GDK_PIXBUF_TRUE]) m4trace:configure.ac:753: -1- AC_SUBST([LIBWMF_GDK_PIXBUF_FALSE]) m4trace:configure.ac:755: -1- AC_SUBST([GDK_PIXBUF_CFLAGS]) m4trace:configure.ac:756: -1- AC_SUBST([GDK_PIXBUF_LIBS]) m4trace:configure.ac:757: -1- AC_SUBST([GDK_PIXBUF_DIR]) m4trace:configure.ac:851: -1- AC_SUBST([WMF_CFLAGS]) m4trace:configure.ac:855: -1- AC_SUBST([WMF_CONFIG_CFLAGS]) m4trace:configure.ac:860: -1- AC_SUBST([WMF_LIBFLAGS]) m4trace:configure.ac:862: -1- AC_SUBST([WMF_DOCDIR]) m4trace:configure.ac:863: -1- AC_SUBST([WMF_FONTDIR]) m4trace:configure.ac:864: -1- AC_SUBST([WMF_SYS_FONTMAP]) m4trace:configure.ac:865: -1- AC_SUBST([WMF_XTRA_FONTMAP]) m4trace:configure.ac:866: -1- AC_SUBST([WMF_GS_FONTMAP]) m4trace:configure.ac:867: -1- AC_SUBST([WMF_GS_FONTDIR]) m4trace:configure.ac:869: -1- AC_SUBST([WMF_DEFS]) m4trace:configure.ac:870: -1- AC_SUBST([GD_DEFS]) m4trace:configure.ac:875: -1- AH_OUTPUT([zzzz2], [ #endif /* ! LIBWMF_CONFIG_H */ ]) m4trace:configure.ac:896: -1- AC_CONFIG_FILES([ Makefile doc/Makefile doc/caolan/Makefile doc/caolan/pics/Makefile doc/html/Makefile fonts/Makefile fonts/libwmf-fontmap fonts/fontmap include/Makefile include/libwmf/Makefile src/Makefile src/extra/Makefile src/extra/trio/Makefile src/extra/gd/Makefile src/ipa/Makefile src/convert/Makefile libwmf-config libwmf.spec ]) m4trace:configure.ac:897: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.ac:897: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) libwmf-0.2.8.4/libwmf-config.in0000644000077100007710000000437110012150566015557 0ustar fjffjf00000000000000#!/bin/sh exec_prefix_set=no case `uname` in CYGWIN*) prefix=`bash -c "type -p libwmf-config"` prefix=`dirname $prefix` prefix=`dirname $prefix` prefix=`cygpath -m "$prefix"` exec_prefix="$prefix" ;; *) prefix=@prefix@ exec_prefix=@exec_prefix@ ;; esac usage() { cat <&2 fi lib_gd=no lib_wmf=yes while test $# -gt 0; do case "$1" in -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac case $1 in --prefix=*) prefix=$optarg if test $exec_prefix_set = no ; then exec_prefix=$optarg fi ;; --prefix) echo_prefix=yes ;; --exec-prefix=*) exec_prefix=$optarg exec_prefix_set=yes ;; --exec-prefix) echo_exec_prefix=yes ;; --version) echo @LIBWMF_VERSION@ ;; --cflags) echo_cflags=yes ;; --libs) echo_libs=yes ;; gd) lib_gd=yes ;; wmf) lib_wmf=yes ;; *) usage 1 1>&2 ;; esac shift done if test "$echo_prefix" = "yes"; then echo $prefix fi if test "$echo_exec_prefix" = "yes"; then echo $exec_prefix fi wmf_cflags="@WMF_CONFIG_CFLAGS@" wmf_liblflags="@WMF_LIBFLAGS@" case `uname` in CYGWIN*) wmf_cflags=`echo $wmf_cflags | sed -e "s%@prefix@%$prefix%"` wmf_liblflags=`echo $wmf_liblflags | sed -e "s%@prefix@%$prefix%"` ;; esac libwmf_buildstyle=@LIBWMF_BUILDSTYLE@ if test $libwmf_buildstyle = heavy; then wmf_libs="-lwmf -lwmflite $wmf_liblflags" else wmf_libs="-lwmflite" fi if test "$echo_cflags" = "yes"; then includes="$wmf_cflags" if test "$lib_gd" = "yes"; then includes="$includes -I@includedir@/libwmf/gd" fi if test "$lib_wmf" = "yes"; then includes="$includes -I@includedir@" fi echo $includes fi if test "$echo_libs" = "yes"; then libdirs=-L@libdir@ my_wmf_libs= for i in $wmf_libs ; do if test "x$i" != "x-L@libdir@" ; then if test -z "$my_wmf_libs" ; then my_wmf_libs="$i" else my_wmf_libs="$my_wmf_libs $i" fi fi done echo $libdirs $my_wmf_libs fi libwmf-0.2.8.4/libwmf.spec.in0000644000077100007710000000442207503054521015247 0ustar fjffjf00000000000000%define name @LIBWMF_PACKAGE@ %define version @LIBWMF_VERSION@ %define release @LIBWMF_RELEASE@ %define prefix /usr %define bindir %{prefix}/bin %define libdir %{prefix}/lib %define includedir %{prefix}/include %define datadir %{prefix}/share %define wmffontdir %{datadir}/%{name}/fonts Name: %{name} Summary: library and utilities for displaying and converting metafile images Version: %{version} Release: %{release} Source: %{name}-%{version}.tar.gz Group: System Environment/Libraries URL: http://wvware.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot License: LGPL Prefix: %{prefix} Epoch: 1 %description libwmf is a library for interpreting metafile images and either displaying them using X or converting them to standard formats such as PNG, JPEG, PS, EPS and SVG(Z)... %package devel Summary: Development tools for programs to manipulate metafile images Group: Development/Libraries Requires: %{name} = %{PACKAGE_VERSION} Serial: 1 %description devel The libwmf-devel package contains the header files and static libraries necessary for developing programs using libwmf. If you want to develop programs which will manipulate metafile images, you should install libwmf-devel. You'll also need to install the libwmf package. %prep [ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT %setup -q -n %{name}-%{version} ./configure \ --prefix=%{prefix} \ --bindir=%{bindir} \ --libdir=%{libdir} \ --includedir=%{includedir} \ --datadir=%{datadir} \ --with-fontdir=%{wmffontdir} %build make %install make DESTDIR=$RPM_BUILD_ROOT install %files %defattr(-,root,root) %{bindir}/wmf2* %{bindir}/libwmf-fontmap %{libdir}/libwmf*so* %{libdir}/libwmf*la %{wmffontdir} %doc README COPYING ChangeLog %doc doc/*.html doc/*.png doc/*.gif %doc doc/caolan/*.html doc/caolan/*.gif %doc doc/caolan/pics/weave.jpg %doc doc/html/*.html doc/html/doxygen.* %files devel %defattr(-,root,root) %{bindir}/libwmf-config %{includedir}/libwmf %{libdir}/libwmf*.a %changelog * Thu Feb 21 2002 Francis James Franklin * Wed Feb 20 2002 Francis James Franklin - incorporating suggestions by Michal Jaegermann * Mon Feb 18 2002 Francis James Franklin - spec adapted from AbiWord's spec template libwmf-0.2.8.4/wmfconfig.h.in0000664000077100007710000000670410272000316015240 0ustar fjffjf00000000000000/* wmfconfig.h.in. Generated from configure.ac by autoheader. */ #ifndef LIBWMF_CONFIG_H #define LIBWMF_CONFIG_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* define if you have expat */ #undef HAVE_EXPAT /* Define to 1 if you have the `fprintf' function. */ #undef HAVE_FPRINTF /* Define to 1 if you have the `fscanf' function. */ #undef HAVE_FSCANF /* define if you have libgd */ #undef HAVE_GD /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* define if you have libjpeg */ #undef HAVE_LIBJPEG /* define if you have libplot */ #undef HAVE_LIBPLOT /* define if you have libpng */ #undef HAVE_LIBPNG /* define if you have libxml2 */ #undef HAVE_LIBXML2 /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `printf' function. */ #undef HAVE_PRINTF /* Define to 1 if you have the `scanf' function. */ #undef HAVE_SCANF /* define if you have snprintf */ #undef HAVE_SNPRINTF /* Define to 1 if you have the `sprintf' function. */ #undef HAVE_SPRINTF /* Define to 1 if you have the `sscanf' function. */ #undef HAVE_SSCANF /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* define if you have unistd.h */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vfprintf' function. */ #undef HAVE_VFPRINTF /* define if you have vfscanf */ #undef HAVE_VFSCANF /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the `vscanf' function. */ #undef HAVE_VSCANF /* define if you have vsnprintf */ #undef HAVE_VSNPRINTF /* Define to 1 if you have the `vsprintf' function. */ #undef HAVE_VSPRINTF /* Define to 1 if you have the `vsscanf' function. */ #undef HAVE_VSSCANF /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* If any *printf or *scanf functions are missing, cover them with trio functions */ #undef TRIO_REPLACE_STDIO /* defining this will disable egs, fig, svg & foreign layers */ #undef WITHOUT_LAYERS /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `long' if does not define. */ #undef off_t /* Define to `unsigned' if does not define. */ #undef size_t /* define to your implementation of snprintf */ #undef snprintf /* define to your implementation of vsnprintf */ #undef vsnprintf #endif /* ! LIBWMF_CONFIG_H */ libwmf-0.2.8.4/install-sh0000755000077100007710000002176610272000327014514 0ustar fjffjf00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2004-09-10.20 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit 0;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit 0;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. test -n "$dir_arg$dstarg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then mkdircmd=: chmodcmd= else mkdircmd=$mkdirprog fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -d "$dstdir"; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` IFS=$oIFS pathcomp= while test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test -d "$pathcomp" || exit fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $mkdircmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } fi || { (exit 1); exit; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: libwmf-0.2.8.4/missing0000755000077100007710000002453310272000327014102 0ustar fjffjf00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2004-09-07.08 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit 0 ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit 0 ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case "$1" in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: libwmf-0.2.8.4/depcomp0000755000077100007710000003554510272000332014061 0ustar fjffjf00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2004-05-31.23 # Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit 0 ;; -v | --v*) echo "depcomp $scriptversion" exit 0 ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # Dependencies are output in .lo.d with libtool 1.4. # With libtool 1.5 they are output both in $dir.libs/$base.o.d # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the # latter, because the former will be cleaned when $dir.libs is # erased. tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir$base.o.d" tmpdepfile3="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" tmpdepfile3="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" elif test -f "$tmpdepfile2"; then tmpdepfile="$tmpdepfile2" else tmpdepfile="$tmpdepfile3" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: libwmf-0.2.8.4/BUILDING0000644000077100007710000000050407312143456013627 0ustar fjffjf00000000000000RPMS If any files are added to the package, or if files-to-be-installed changes, then libwmf.spec needs to be updated. To create the RPMs, I use the sequence: # ./configure # make dist # cp libwmf.spec /usr/src/redhat/SPECS # cp libwmf-0.2.0.tar.gz /usr/src/redhat/SOURCES # cd /usr/src/redhat # rpm -ba SPECS/libwmf.spec libwmf-0.2.8.4/CREDITS0000644000077100007710000000260407340471336013534 0ustar fjffjf00000000000000(1) Export to PNG and JPEG uses Thomas Boutell's GD library. http://www.boutell.com/gd/ (2) Font support in GD and in libwmf is provided by the FreeType library. http://freetype.sourceforge.net/ (3) Also deserving of credit are: (a) allegro http://www.talula.demon.co.uk/allegro/ (b) Gdtclft http://www.tcltk.com/ (c) wine http://www.winehq.com/ (d) Bjorn Reese and Daniel Stenberg for trio. (4) Caolan McNamara was original author of libwmf, and although I (Francis James Franklin) have reworked much of it the core of the interpreter (i.e., the most important part) owes everything to Caolan. http://www.csn.ul.ie/~caolan http://www.alinameridon.com/ (5) Export to FIG format (readable/editable by xfig) was added by David Airlie, Frdric Vivien and Martin Vermeer. http://www.csn.ul.ie/~airlied http://www.netby.net/Oest/Europa-Alle/vermeer (6) Bob Friesenhahn linked libwmf into ImageMagick, so now you are able to convert WMF files to anything ImageMagick supports using the handy ImageMagick command syntax. (7) Other contributors include Raj Manandhar, Steven Michael Robbins, Bob Bell Albert Chin and Matej Vila. Also, Benjamin Geer, Peter Ohlerich, Steve Oney and Michael Cree have helped with debugging. (8) Finally, special thanks to Dom Lachowicz for all sorts of reasons. http://www.seas.upenn.edu/~dominicl/ libwmf-0.2.8.4/configure0000775000077100007710000323777310272000340014426 0ustar fjffjf00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for libwmf 0.2.8. # # Report bugs to . # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='libwmf' PACKAGE_TARNAME='libwmf' PACKAGE_VERSION='0.2.8' PACKAGE_STRING='libwmf 0.2.8' PACKAGE_BUGREPORT='wvware-devel@sourceforge.net' ac_unique_file="src/player.c" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LIBWMF_PACKAGE LIBWMF_VERSION LIBWMF_RELEASE LT_RELEASE LT_CURRENT LT_REVISION LT_AGE LT_LITE_CURRENT LT_LITE_REVISION LT_LITE_AGE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar LIBWMF_BUILDSTYLE LIBWMF_BUILD_ALL_TRUE LIBWMF_BUILD_ALL_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os SYS_LIBM CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP LN_S EGREP ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBWMF_OPT_TRIO_TRUE LIBWMF_OPT_TRIO_FALSE LIBWMF_OPT_MODULES_TRUE LIBWMF_OPT_MODULES_FALSE LIBWMF_OPT_LAYERS_TRUE LIBWMF_OPT_LAYERS_FALSE X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBWMF_OPT_X_TRUE LIBWMF_OPT_X_FALSE XML2_CONFIG FREETYPE_CONFIG LIBWMF_OPT_GD_TRUE LIBWMF_OPT_GD_FALSE LIBWMF_OPT_SYS_GD_TRUE LIBWMF_OPT_SYS_GD_FALSE LIBWMF_OPT_PLOT_TRUE LIBWMF_OPT_PLOT_FALSE PKG_CONFIG GDK_PIXBUF_CFLAGS GDK_PIXBUF_LIBS LIBWMF_GDK_PIXBUF_TRUE LIBWMF_GDK_PIXBUF_FALSE GDK_PIXBUF_DIR WMF_CFLAGS WMF_CONFIG_CFLAGS WMF_LIBFLAGS WMF_DOCDIR WMF_FONTDIR WMF_SYS_FONTMAP WMF_XTRA_FONTMAP WMF_GS_FONTMAP WMF_GS_FONTDIR WMF_DEFS GD_DEFS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP ac_env_F77_set=${F77+set} ac_env_F77_value=$F77 ac_cv_env_F77_set=${F77+set} ac_cv_env_F77_value=$F77 ac_env_FFLAGS_set=${FFLAGS+set} ac_env_FFLAGS_value=$FFLAGS ac_cv_env_FFLAGS_set=${FFLAGS+set} ac_cv_env_FFLAGS_value=$FFLAGS # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures libwmf 0.2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libwmf 0.2.8:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-debug set DEBUG option to libwmf default=no --enable-ansi set -ansi option to libwmf default=no --enable-pedantic set -pedantic option to libwmf default=no --disable-heavy only build libwmflite default=build all --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-gd don't build GD, don't look for it, don't require it Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] --with-layers whether to build layers default is yes --with-x use the X Window System --with-expat=DIR use expat in DIR --with-libxml2=DIR use libxml2 in DIR --with-freetype=DIR use freetype2 in DIR --with-zlib=DIR use libz in DIR --with-png=DIR use libpng in DIR --with-jpeg=DIR use libjpeg in DIR --with-sys-gd=DIR use system GD in DIR (if compatible) --with-docdir=DIR install documentation in DIR --with-fontdir=DIR install Type1 fonts in DIR --with-sysfontmap=FILE default is /usr/share/fonts/fontmap --with-xtrafontmap=FILE non-system XML fontmap --with-gsfontmap=FILE ghostscript fontmap --with-gsfontdir=DIR directory for ghostscript fonts Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF libwmf configure 0.2.8 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libwmf $as_me 0.2.8, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBWMF_PACKAGE=libwmf # Making releases: # WMF_MICRO_VERSION += 1; # WMF_INTERFACE_AGE += 1; # WMF_BINARY_AGE += 1; # if any functions have been added, set WMF_INTERFACE_AGE to 0. # if backwards compatibility has been broken, # set WMF_BINARY_AGE and WMF_INTERFACE_AGE to 0. # WMF_MAJOR_VERSION=0 WMF_MINOR_VERSION=2 WMF_MICRO_VERSION=8 WMF_INTERFACE_AGE=0 WMF_BINARY_AGE=1 WMFLITE_INTERFACE_AGE=1 WMFLITE_BINARY_AGE=1 LIBWMF_VERSION=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION.$WMF_MICRO_VERSION LIBWMF_RELEASE=1 # libtool versioning LT_RELEASE=$WMF_MAJOR_VERSION.$WMF_MINOR_VERSION LT_CURRENT=`expr $WMF_MICRO_VERSION - $WMF_INTERFACE_AGE` LT_REVISION=$WMF_INTERFACE_AGE LT_AGE=`expr $WMF_BINARY_AGE - $WMF_INTERFACE_AGE` LT_LITE_CURRENT=`expr $WMF_MICRO_VERSION - $WMFLITE_INTERFACE_AGE` LT_LITE_REVISION=$WMFLITE_INTERFACE_AGE LT_LITE_AGE=`expr $WMFLITE_BINARY_AGE - $WMFLITE_INTERFACE_AGE` # For automake. PACKAGE=$LIBWMF_PACKAGE VERSION=$LIBWMF_VERSION am__api_version="1.9" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=$PACKAGE VERSION=$VERSION # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Specify a configuration file ac_config_headers="$ac_config_headers wmfconfig.h" # CFLAGS to be listed by libwmf-config should be added to this: WMF_CONFIG_CFLAGS= # Other CFLAGS, not to be listed by libwmf-config, should be added to this: WMF_CFLAGS= # LDFLAGS to be listed by libwmf-config should be added to this: WMF_LIBFLAGS= # WMF_DEFS is for flags such as -DDEBUG which are to applied only to # libwmf source not extra packages such as gd - more global defs should be # added to WMF_CFLAGS # Check whether --enable-debug or --disable-debug was given. if test "${enable_debug+set}" = set; then enableval="$enable_debug" if test "x$enableval" != "xno" ; then WMF_DEFS="-DDEBUG=1" else WMF_DEFS= fi else WMF_DEFS= fi; # Check whether --enable-ansi or --disable-ansi was given. if test "${enable_ansi+set}" = set; then enableval="$enable_ansi" if test "x$enableval" != "xno" ; then WMF_DEFS="$WMF_DEFS -ansi" fi fi; # Check whether --enable-pedantic or --disable-pedantic was given. if test "${enable_pedantic+set}" = set; then enableval="$enable_pedantic" if test "x$enableval" != "xno" ; then WMF_DEFS="$WMF_DEFS -pedantic" fi fi; LIBWMF_BUILDSTYLE=heavy libwmf_build_all=yes # Check whether --enable-heavy or --disable-heavy was given. if test "${enable_heavy+set}" = set; then enableval="$enable_heavy" if test "x$enableval" = "xno" ; then LIBWMF_BUILDSTYLE=lite libwmf_build_all=no fi fi; if test "x$libwmf_build_all" = "xyes" ; then LIBWMF_BUILD_ALL_TRUE= LIBWMF_BUILD_ALL_FALSE='#' else LIBWMF_BUILD_ALL_TRUE='#' LIBWMF_BUILD_ALL_FALSE= fi # gd does not read config.h so need to pass it options on the command line: GD_DEFS= # Tests for Windows # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` case $host_os in *cygwin* ) CYGWIN=yes;; * ) CYGWIN=no;; esac case $host_os in *mingw32* ) MINGW32=yes;; * ) MINGW32=no;; esac # End Tests for Windows echo "$as_me:$LINENO: checking for Win32" >&5 echo $ECHO_N "checking for Win32... $ECHO_C" >&6 case "$host" in *-*-mingw*) os_win32=yes SYS_LIBM="" ;; *) os_win32=no SYS_LIBM="-lm" ;; esac echo "$as_me:$LINENO: result: $os_win32" >&5 echo "${ECHO_T}$os_win32" >&6 for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval="$enable_dependency_tracking" fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi # Configure libtool # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi; echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && break cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done SED=$lt_cv_path_SED fi echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/${ac_tool_prefix}nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac esac fi done IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6 NM="$lt_cv_path_NM" echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump'. lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | kfreebsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case "$host_cpu" in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux*) case $host_cpu in alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 4226 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case "`/usr/bin/file conftest.o`" in *32-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*-cygwin* | *-*-mingw* | *-*-pw32*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then echo "$as_me:$LINENO: result: $DLLTOOL" >&5 echo "${ECHO_T}$DLLTOOL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false" fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 echo "${ECHO_T}$ac_ct_DLLTOOL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi DLLTOOL=$ac_ct_DLLTOOL else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then echo "$as_me:$LINENO: result: $AS" >&5 echo "${ECHO_T}$AS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false" fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 echo "${ECHO_T}$ac_ct_AS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AS=$ac_ct_AS else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then echo "$as_me:$LINENO: result: $OBJDUMP" >&5 echo "${ECHO_T}$OBJDUMP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false" fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 echo "${ECHO_T}$ac_ct_OBJDUMP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi OBJDUMP=$ac_ct_OBJDUMP else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac need_locks="$enable_libtool_lock" echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_F77" && break done F77=$ac_ct_F77 fi # Provide some information about the compiler. echo "$as_me:5806:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDRT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6 objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi AR=$ac_ct_AR else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac enable_dlopen=no enable_win32_dll=yes # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}\n' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # # Check for any special shared library compilation flags. # lt_prog_cc_shlib= if test "$GCC" = no; then case $host_os in sco3.2v5*) lt_prog_cc_shlib='-belf' ;; esac fi if test -n "$lt_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 if test "${lt_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_prog_compiler_static" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 else lt_prog_compiler_static_works=yes fi fi $rm conftest* LDFLAGS="$save_LDFLAGS" fi echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 if test x"$lt_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:6840: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:6844: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic='-Kpic' lt_prog_compiler_static='-dn' ;; solaris*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7073: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7077: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 if test x"$lt_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7133: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:7137: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds="$tmp_archive_cmds" fi else ld_shlibs=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec=' ' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=no hardcode_shlibpath_var=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no hardcode_shlibpath_var=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 8467 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var " || \ test "X$hardcode_automatic"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which librarie types wil actually be built echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; darwin* | rhapsody*) if test "$GCC" = yes; then archive_cmds_need_lc=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag='-undefined dynamic_lookup' ;; esac fi ;; esac output_verbose_link_cmd='echo' archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='-all_load $convenience' link_all_deplibs=yes else ld_shlibs=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags or --without-tags was given. if test "${with_tags+set}" = set; then withval="$with_tags" tagnames="$withval" fi; if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && test "X$CXX" != "Xno"; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. ac_ext=cc # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_CXX=yes else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_CXX=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX=' ' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) if test "$GXX" = yes; then archive_cmds_need_lc_CXX=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_CXX='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_CXX='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_CXX='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_CXX='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='-all_load $convenience' link_all_deplibs_CXX=yes else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd12*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | kfreebsd*-gnu) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_CXX='+b $libdir' hardcode_libdir_separator_CXX=: ;; ia64*) hardcode_libdir_flag_spec_CXX='-L$libdir' ;; *) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case "$host_cpu" in hppa*64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC) case "$host_cpu" in hppa*64*|ia64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case "$host_cpu" in ia64*|hppa*64*) archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; irix5* | irix6*) case $cc_basename in CC) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc) # Intel C++ with_gnu_ld=yes archive_cmds_need_lc_CXX=no archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; cxx) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; osf3*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sco*) archive_cmds_need_lc_CXX=no case $cc_basename in CC) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.0-5 | solaris2.0-5.*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system # linker. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' fi ;; esac ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) archive_cmds_need_lc_CXX=no ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | kfreebsd*-gnu) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux*) case $cc_basename in KCC) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; cxx) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; sco*) case $cc_basename in CC) lt_prog_compiler_pic_CXX='-fPIC' ;; *) ;; esac ;; solaris*) case $cc_basename in CC) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; unixware*) ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:11615: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:11619: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:11675: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:11679: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix4* | aix5*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 12186 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var CXX" || \ test "X$hardcode_automatic_CXX"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6 if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_CXX" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code=" subroutine t\n return\n end\n" # Code to be used in simple link tests lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_F77='-Kpic' lt_prog_compiler_static_F77='-dn' ;; solaris*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13982: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:13986: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 if test x"$lt_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14042: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14046: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_F77="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_F77="$tmp_archive_cmds" fi else ld_shlibs_F77=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_F77=yes else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_F77=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77=' ' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi4*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc_F77=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_F77='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='-all_load $convenience' link_all_deplibs_F77=yes else ld_shlibs_F77=no fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; ia64*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; *) hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; sco3.2v5*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4.2uw2*) archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_F77='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv5*) no_undefined_flag_F77=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_F77= hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 15356 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var F77" || \ test "X$hardcode_automatic_F77"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6 if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_F77" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:16097: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:16101: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case "$host_cpu" in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux*) case $CC in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; sco3.2v5*) lt_prog_compiler_pic_GCJ='-Kpic' lt_prog_compiler_static_GCJ='-dn' ;; solaris*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:16330: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:16334: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s conftest.err; then lt_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case "$host_os" in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out printf "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:16390: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:16394: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test ! -s out/conftest.err; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_cmds_GCJ="$tmp_archive_cmds" supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' else archive_expsym_cmds_GCJ="$tmp_archive_cmds" fi else ld_shlibs_GCJ=no fi ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.012|aix4.012.*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct_GCJ=yes else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'`; fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # -bexpall does not export symbols beginning with underscore (_) always_export_symbols_GCJ=yes # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ=' ' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds it's shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi4*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) if test "$GXX" = yes ; then archive_cmds_need_lc_GCJ=no case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='-undefined suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' ;; 10.*) allow_undefined_flag_GCJ='-undefined dynamic_lookup' ;; esac fi ;; esac lt_int_apple_cc_single_mod=no output_verbose_link_cmd='echo' if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then lt_int_apple_cc_single_mod=yes fi if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' fi module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's if test "X$lt_int_apple_cc_single_mod" = Xyes ; then archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' fi module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='-all_load $convenience' link_all_deplibs_GCJ=yes else ld_shlibs_GCJ=no fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | kfreebsd*-gnu) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10* | hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case "$host_cpu" in hppa*64*|ia64*) archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ;; *) archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac fi if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; ia64*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; *) hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; sco3.2v5*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4.2uw2*) archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) no_undefined_flag_GCJ='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv5*) no_undefined_flag_GCJ=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec_GCJ= hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6 test "$ld_shlibs_GCJ" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 $rm conftest* printf "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 ;; esac fi ;; esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` else sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' fi sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; kfreebsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.01* | freebsdelf3.01*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case "$host_cpu" in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # find out which ABI we are using libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) echo '#line 17724 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *64-bit*) libsuff=64 sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" ;; esac fi rm -rf conftest* ;; esac # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; knetbsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='GNU ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=yes library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var GCJ" || \ test "X$hardcode_automatic_GCJ"="Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6 if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ;; *) echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else char (*f) () = shl_load; #endif #ifdef __cplusplus } #endif int main () { return f != shl_load; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else char (*f) () = dlopen; #endif #ifdef __cplusplus } #endif int main () { return f != dlopen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_GCJ" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # Allow CC to be a program name with arguments. compiler=$CC # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path_RC" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion #end libtool stuff echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi for ac_header in time.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_unistd_h+set}" = set; then echo "$as_me:$LINENO: checking for unistd.h" >&5 echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 if test "${ac_cv_header_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking unistd.h usability" >&5 echo $ECHO_N "checking unistd.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking unistd.h presence" >&5 echo $ECHO_N "checking unistd.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: unistd.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: unistd.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: unistd.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: unistd.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: unistd.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: unistd.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: unistd.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: unistd.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for unistd.h" >&5 echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 if test "${ac_cv_header_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_unistd_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 fi if test $ac_cv_header_unistd_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_UNISTD_H 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_UNISTD_H" fi echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:$LINENO: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF #define off_t long _ACEOF fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned _ACEOF fi for ac_func in strstr do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done require_trio=no if test $LIBWMF_BUILDSTYLE = heavy; then for ac_func in printf fprintf vfprintf sprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else require_trio=yes fi done for ac_func in vprintf vsprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else require_trio=yes fi done for ac_func in scanf vscanf fscanf vsscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in vsnprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_vsnprintf=yes fi done if test "x$check_for_vsnprintf" = "xyes" ; then echo "$as_me:$LINENO: checking for _vsnprintf" >&5 echo $ECHO_N "checking for _vsnprintf... $ECHO_C" >&6 if test "${ac_cv_func__vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define _vsnprintf to an innocuous variant, in case declares _vsnprintf. For example, HP-UX 11i declares gettimeofday. */ #define _vsnprintf innocuous__vsnprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _vsnprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _vsnprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _vsnprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__vsnprintf) || defined (__stub____vsnprintf) choke me #else char (*f) () = _vsnprintf; #endif #ifdef __cplusplus } #endif int main () { return f != _vsnprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__vsnprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__vsnprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__vsnprintf" >&5 echo "${ECHO_T}$ac_cv_func__vsnprintf" >&6 if test $ac_cv_func__vsnprintf = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_VSNPRINTF 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define vsnprintf _vsnprintf _ACEOF else echo "$as_me:$LINENO: checking for vsnprintf in -ldb" >&5 echo $ECHO_N "checking for vsnprintf in -ldb... $ECHO_C" >&6 if test "${ac_cv_lib_db_vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldb $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char vsnprintf (); int main () { vsnprintf (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_db_vsnprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_db_vsnprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_db_vsnprintf" >&5 echo "${ECHO_T}$ac_cv_lib_db_vsnprintf" >&6 if test $ac_cv_lib_db_vsnprintf = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_VSNPRINTF 1 _ACEOF WMF_LIBFLAGS="$WMF_LIBFLAGS -ldb" else require_trio=yes fi fi fi for ac_func in snprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_snprintf=yes fi done if test "x$check_for_snprintf" = "xyes" ; then echo "$as_me:$LINENO: checking for _snprintf" >&5 echo $ECHO_N "checking for _snprintf... $ECHO_C" >&6 if test "${ac_cv_func__snprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define _snprintf to an innocuous variant, in case declares _snprintf. For example, HP-UX 11i declares gettimeofday. */ #define _snprintf innocuous__snprintf /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _snprintf (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _snprintf /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _snprintf (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__snprintf) || defined (__stub____snprintf) choke me #else char (*f) () = _snprintf; #endif #ifdef __cplusplus } #endif int main () { return f != _snprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__snprintf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__snprintf=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__snprintf" >&5 echo "${ECHO_T}$ac_cv_func__snprintf" >&6 if test $ac_cv_func__snprintf = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SNPRINTF 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define snprintf _snprintf _ACEOF fi fi for ac_func in vfscanf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else check_for_vfscanf=yes fi done if test "x$check_for_vfscanf" = "xyes" ; then echo "$as_me:$LINENO: checking for vfscanf in stdio.h" >&5 echo $ECHO_N "checking for vfscanf in stdio.h... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "vfscanf" >/dev/null 2>&1; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define HAVE_VFSCANF 1 _ACEOF else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest* fi fi # $LIBWMF_BUILDSTYLE = heavy if test "x$require_trio" = "xyes" ; then LIBWMF_OPT_TRIO_TRUE= LIBWMF_OPT_TRIO_FALSE='#' else LIBWMF_OPT_TRIO_TRUE='#' LIBWMF_OPT_TRIO_FALSE= fi cat >>confdefs.h <<\_ACEOF #define TRIO_REPLACE_STDIO 1 _ACEOF # Check whether --with-layers or --without-layers was given. if test "${with_layers+set}" = set; then withval="$with_layers" if test "x$withval" = "xyes" ; then libwmf_layers=yes elif test "x$withval" = "xno" ; then libwmf_layers=no elif test "x$withval" = "xmodules" ; then { { echo "$as_me:$LINENO: error: * * * Sorry, modules not yet supported! * * *" >&5 echo "$as_me: error: * * * Sorry, modules not yet supported! * * *" >&2;} { (exit 1); exit 1; }; } libwmf_layers=modules else { echo "$as_me:$LINENO: WARNING: * * * Bad option to --with-layers! * * *" >&5 echo "$as_me: WARNING: * * * Bad option to --with-layers! * * *" >&2;} libwmf_layers=yes fi else libwmf_layers=yes fi; if test $LIBWMF_BUILDSTYLE = lite; then libwmf_layers=no fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_layers = no ; then cat >>confdefs.h <<\_ACEOF #define WITHOUT_LAYERS 1 _ACEOF fi if test $libwmf_layers = modules ; then LIBWMF_OPT_MODULES_TRUE= LIBWMF_OPT_MODULES_FALSE='#' else LIBWMF_OPT_MODULES_TRUE='#' LIBWMF_OPT_MODULES_FALSE= fi if test $libwmf_layers != no ; then LIBWMF_OPT_LAYERS_TRUE= LIBWMF_OPT_LAYERS_FALSE='#' else LIBWMF_OPT_LAYERS_TRUE='#' LIBWMF_OPT_LAYERS_FALSE= fi libwmf_x=no libwmf_xml=no libwmf_gd_jpeg=no libwmf_plot=no if test $libwmf_layers != no ; then echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then withval="$with_x" fi; # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && test -f $ac_im_libdir/libX11.$ac_extension; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # Record where we found X for the cache. ac_cv_have_x="have_x=yes \ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6 no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes \ ac_x_includes=$x_includes ac_x_libraries=$x_libraries" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. cat >>confdefs.h <<\_ACEOF #define X_DISPLAY_MISSING 1 _ACEOF X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi else X_CFLAGS="-DX_DISPLAY_MISSING=1" no_x=yes fi WMF_X_CONFIG_CFLAGS="" WMF_X_CFLAGS="" WMF_X_LDFLAGS="" WMF_X_CFLAGS="$X_CFLAGS" if test "x$no_x" != "xyes" ; then WMF_X_CONFIG_CFLAGS="$X_CFLAGS" WMF_X_LDFLAGS="$X_LIBS -lX11" libwmf_x=yes fi if test "x$no_x" != "xyes" ; then LIBWMF_OPT_X_TRUE= LIBWMF_OPT_X_FALSE='#' else LIBWMF_OPT_X_TRUE='#' LIBWMF_OPT_X_FALSE= fi WMF_XML_DIR="" WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" libwmf_xml=unknown # Check whether --with-expat or --without-expat was given. if test "${with_expat+set}" = set; then withval="$with_expat" if test "x$withval" = "xno"; then libwmf_xml=libxml2 elif test "x$withval" = "xyes"; then libwmf_xml=expat else libwmf_xml=expat WMF_XML_DIR="$withval" fi fi; # Check whether --with-libxml2 or --without-libxml2 was given. if test "${with_libxml2+set}" = set; then withval="$with_libxml2" if test "x$withval" = "xno"; then if test $libwmf_xml = libxml2; then libwmf_xml=none else libwmf_xml=expat fi elif test "x$withval" = "xyes"; then if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * Can't specify both expat and libxml2! * * *" >&5 echo "$as_me: error: * * * Can't specify both expat and libxml2! * * *" >&2;} { (exit 1); exit 1; }; } else libwmf_xml=libxml2 fi else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * Can't specify both expat and libxml2! * * *" >&5 echo "$as_me: error: * * * Can't specify both expat and libxml2! * * *" >&2;} { (exit 1); exit 1; }; } else libwmf_xml=libxml2 WMF_XML_DIR="$withval" fi fi fi; if test $LIBWMF_BUILDSTYLE = lite; then libwmf_xml=none fi # $LIBWMF_BUILDSTYLE = lite if test $libwmf_xml = expat -o $libwmf_xml = unknown; then if test "x$WMF_XML_DIR" != "x"; then _cppflags=$CPPFLAGS _ldflags=$LDFLAGS CPPFLAGS="$CPPFLAGS -I$WMF_XML_DIR/include" LDFLAGS="$LDFLAGS -L$WMF_XML_DIR/lib" WMF_XML_CFLAGS="-I$WMF_XML_DIR/include" WMF_XML_LDFLAGS="-L$WMF_XML_DIR/lib -lexpat" else WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="-lexpat" fi if test "${ac_cv_header_expat_h+set}" = set; then echo "$as_me:$LINENO: checking for expat.h" >&5 echo $ECHO_N "checking for expat.h... $ECHO_C" >&6 if test "${ac_cv_header_expat_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 echo "${ECHO_T}$ac_cv_header_expat_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking expat.h usability" >&5 echo $ECHO_N "checking expat.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking expat.h presence" >&5 echo $ECHO_N "checking expat.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: expat.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: expat.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: expat.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: expat.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: expat.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: expat.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: expat.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: expat.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for expat.h" >&5 echo $ECHO_N "checking for expat.h... $ECHO_C" >&6 if test "${ac_cv_header_expat_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_expat_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 echo "${ECHO_T}$ac_cv_header_expat_h" >&6 fi if test $ac_cv_header_expat_h = yes; then echo "$as_me:$LINENO: checking for XML_ParserFree in -lexpat" >&5 echo $ECHO_N "checking for XML_ParserFree in -lexpat... $ECHO_C" >&6 if test "${ac_cv_lib_expat_XML_ParserFree+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lexpat $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XML_ParserFree (); int main () { XML_ParserFree (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_expat_XML_ParserFree=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_expat_XML_ParserFree=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_expat_XML_ParserFree" >&5 echo "${ECHO_T}$ac_cv_lib_expat_XML_ParserFree" >&6 if test $ac_cv_lib_expat_XML_ParserFree = yes; then libwmf_xml=expat else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * unable to find expat * * *" >&5 echo "$as_me: error: * * * unable to find expat * * *" >&2;} { (exit 1); exit 1; }; } fi fi else if test $libwmf_xml = expat; then { { echo "$as_me:$LINENO: error: * * * unable to find expat * * *" >&5 echo "$as_me: error: * * * unable to find expat * * *" >&2;} { (exit 1); exit 1; }; } fi fi if test "x$WMF_XML_DIR" != "x"; then CPPFLAGS=$_cppflags LDFLAGS=$_ldflags fi fi if test $libwmf_xml = libxml2 -o $libwmf_xml = unknown; then if test -n "$WMF_XML_DIR" ; then # Extract the first word of "xml2-config", so it can be a program name with args. set dummy xml2-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XML2_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $XML2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $WMF_XML_DIR/bin $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi XML2_CONFIG=$ac_cv_path_XML2_CONFIG if test -n "$XML2_CONFIG"; then echo "$as_me:$LINENO: result: $XML2_CONFIG" >&5 echo "${ECHO_T}$XML2_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else # Extract the first word of "xml2-config", so it can be a program name with args. set dummy xml2-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XML2_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $XML2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi XML2_CONFIG=$ac_cv_path_XML2_CONFIG if test -n "$XML2_CONFIG"; then echo "$as_me:$LINENO: result: $XML2_CONFIG" >&5 echo "${ECHO_T}$XML2_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test "x$XML2_CONFIG" != "x"; then WMF_XML_CFLAGS=`$XML2_CONFIG --cflags` WMF_XML_LDFLAGS=`$XML2_CONFIG --libs` libwmf_xml=libxml2 elif test $libwmf_xml = libxml2; then { { echo "$as_me:$LINENO: error: * * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *" >&5 echo "$as_me: error: * * * unable to find xml2-config; see ftp://xmlsoft.org/ * * *" >&2;} { (exit 1); exit 1; }; } fi fi if test $libwmf_xml = expat; then cat >>confdefs.h <<\_ACEOF #define HAVE_EXPAT 1 _ACEOF elif test $libwmf_xml = libxml2; then cat >>confdefs.h <<\_ACEOF #define HAVE_LIBXML2 1 _ACEOF else libwmf_xml=none WMF_XML_CFLAGS="" WMF_XML_LDFLAGS="" fi WMF_FT_CONFIG_CFLAGS="" WMF_FT_CFLAGS="" WMF_FT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS have_freetype=no # Check whether --with-freetype or --without-freetype was given. if test "${with_freetype+set}" = set; then withval="$with_freetype" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then FREETYPE_DIR=$withval fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires freetype2 * * *" >&5 echo "$as_me: error: * * * libwmf requires freetype2 * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test -n "$FREETYPE_DIR" ; then # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$FREETYPE_DIR/bin:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5 echo "${ECHO_T}$FREETYPE_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5 echo "${ECHO_T}$FREETYPE_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -n "$FREETYPE_CONFIG" ; then if test -n "$FREETYPE_DIR" ; then freetype_cflags="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include" freetype_libs=`$FREETYPE_CONFIG --libs` else freetype_cflags=`$FREETYPE_CONFIG --cflags` freetype_libs=`$FREETYPE_CONFIG --libs` fi else if test -n "$FREETYPE_DIR" ; then freetype_cflags="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include" freetype_libs="-L$FREETYPE_DIR/lib -lfreetype" else freetype_cflags="" freetype_libs="-lfreetype" fi fi CPPFLAGS="$freetype_cflags $CPPFLAGS" LDFLAGS="$LDFLAGS $freetype_libs" echo "$as_me:$LINENO: checking for FT_Init_FreeType in -lfreetype" >&5 echo $ECHO_N "checking for FT_Init_FreeType in -lfreetype... $ECHO_C" >&6 if test "${ac_cv_lib_freetype_FT_Init_FreeType+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfreetype $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char FT_Init_FreeType (); int main () { FT_Init_FreeType (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_freetype_FT_Init_FreeType=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_freetype_FT_Init_FreeType=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_FT_Init_FreeType" >&5 echo "${ECHO_T}$ac_cv_lib_freetype_FT_Init_FreeType" >&6 if test $ac_cv_lib_freetype_FT_Init_FreeType = yes; then WMF_FT_LDFLAGS="$freetype_libs" else { { echo "$as_me:$LINENO: error: * * * freetype(2) is required * * *" >&5 echo "$as_me: error: * * * freetype(2) is required * * *" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_ft2build_h+set}" = set; then echo "$as_me:$LINENO: checking for ft2build.h" >&5 echo $ECHO_N "checking for ft2build.h... $ECHO_C" >&6 if test "${ac_cv_header_ft2build_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_ft2build_h" >&5 echo "${ECHO_T}$ac_cv_header_ft2build_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking ft2build.h usability" >&5 echo $ECHO_N "checking ft2build.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking ft2build.h presence" >&5 echo $ECHO_N "checking ft2build.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: ft2build.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: ft2build.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: ft2build.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: ft2build.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: ft2build.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: ft2build.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: ft2build.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: ft2build.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: ft2build.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: ft2build.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: ft2build.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for ft2build.h" >&5 echo $ECHO_N "checking for ft2build.h... $ECHO_C" >&6 if test "${ac_cv_header_ft2build_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_ft2build_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_ft2build_h" >&5 echo "${ECHO_T}$ac_cv_header_ft2build_h" >&6 fi if test $ac_cv_header_ft2build_h = yes; then WMF_FT_CFLAGS="$freetype_cflags" WMF_FT_CONFIG_CFLAGS="$freetype_cflags" else { { echo "$as_me:$LINENO: error: * * * freetype(2) is required * * *" >&5 echo "$as_me: error: * * * freetype(2) is required * * *" >&2;} { (exit 1); exit 1; }; } fi GD_DEFS="$GD_DEFS -DHAVE_LIBFREETYPE" CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_Z_CONFIG_CFLAGS="" WMF_Z_CFLAGS="" WMF_Z_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-zlib or --without-zlib was given. if test "${with_zlib+set}" = set; then withval="$with_zlib" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then ZLIB_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires zlib * * *" >&5 echo "$as_me: error: * * * libwmf requires zlib * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test $LIBWMF_BUILDSTYLE = heavy; then if test "${ac_cv_header_zlib_h+set}" = set; then echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking zlib.h usability" >&5 echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking zlib.h presence" >&5 echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for zlib.h" >&5 echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 if test "${ac_cv_header_zlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_zlib_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 fi if test $ac_cv_header_zlib_h = yes; then echo "$as_me:$LINENO: checking for gzputs in -lz" >&5 echo $ECHO_N "checking for gzputs in -lz... $ECHO_C" >&6 if test "${ac_cv_lib_z_gzputs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gzputs (); int main () { gzputs (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_z_gzputs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_z_gzputs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzputs" >&5 echo "${ECHO_T}$ac_cv_lib_z_gzputs" >&6 if test $ac_cv_lib_z_gzputs = yes; then if test "x$ZLIB_DIR" != "x" ; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lz" else WMF_Z_LDFLAGS="-lz" fi else echo "$as_me:$LINENO: checking for gzputs in -lgz" >&5 echo $ECHO_N "checking for gzputs in -lgz... $ECHO_C" >&6 if test "${ac_cv_lib_gz_gzputs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gzputs (); int main () { gzputs (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gz_gzputs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gz_gzputs=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gz_gzputs" >&5 echo "${ECHO_T}$ac_cv_lib_gz_gzputs" >&6 if test $ac_cv_lib_gz_gzputs = yes; then if test "x$ZLIB_DIR" != "x" ; then WMF_Z_CONFIG_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_CFLAGS="-I$ZLIB_DIR/include" WMF_Z_LDFLAGS="-L$ZLIB_DIR/lib -lgz" else WMF_Z_LDFLAGS="-lgz" fi else { { echo "$as_me:$LINENO: error: * * * unable to find libz which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find libz which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi fi else { { echo "$as_me:$LINENO: error: * * * unable to find \"zlib.h\" which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find \"zlib.h\" which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_PNG_CFLAGS="" WMF_PNG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-png or --without-png was given. if test "${with_png+set}" = set; then withval="$with_png" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then PNG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi else { { echo "$as_me:$LINENO: error: * * * libwmf requires libpng * * *" >&5 echo "$as_me: error: * * * libwmf requires libpng * * *" >&2;} { (exit 1); exit 1; }; } fi fi; if test $LIBWMF_BUILDSTYLE = heavy; then CPPFLAGS="$CPPFLAGS $WMF_Z_CFLAGS" if test "${ac_cv_header_png_h+set}" = set; then echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6 if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking png.h usability" >&5 echo $ECHO_N "checking png.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking png.h presence" >&5 echo $ECHO_N "checking png.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: png.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: png.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: png.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: png.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: png.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6 if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_png_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6 fi if test $ac_cv_header_png_h = yes; then echo "$as_me:$LINENO: checking for png_write_image in -lpng" >&5 echo $ECHO_N "checking for png_write_image in -lpng... $ECHO_C" >&6 if test "${ac_cv_lib_png_png_write_image+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpng -lz -lm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char png_write_image (); int main () { png_write_image (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_png_png_write_image=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_png_png_write_image=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_write_image" >&5 echo "${ECHO_T}$ac_cv_lib_png_png_write_image" >&6 if test $ac_cv_lib_png_png_write_image = yes; then if test "x$PNG_DIR" != "x" ; then WMF_PNG_CFLAGS="-I$PNG_DIR/include" WMF_PNG_LDFLAGS="-L$PNG_DIR/lib -lpng" else WMF_PNG_LDFLAGS="-lpng" fi else { { echo "$as_me:$LINENO: error: * * * unable to find libpng which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find libpng which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi else { { echo "$as_me:$LINENO: error: * * * unable to find \"png.h\" which is required by libwmf * * *" >&5 echo "$as_me: error: * * * unable to find \"png.h\" which is required by libwmf * * *" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <<\_ACEOF #define HAVE_LIBPNG 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_LIBPNG" fi # $LIBWMF_BUILDSTYLE = heavy CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_JPEG_CFLAGS="" WMF_JPEG_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-jpeg or --without-jpeg was given. if test "${with_jpeg+set}" = set; then withval="$with_jpeg" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then JPEG_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_jpeg=yes else search_for_jpeg=no fi else search_for_jpeg=yes fi; if test $LIBWMF_BUILDSTYLE = lite; then search_for_jpeg=no fi # $LIBWMF_BUILDSTYLE = lite if test "$search_for_jpeg" != "no" ; then if test "${ac_cv_header_jpeglib_h+set}" = set; then echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6 if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_jpeglib_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6 fi if test $ac_cv_header_jpeglib_h = yes; then echo "$as_me:$LINENO: checking for jpeg_CreateCompress in -ljpeg" >&5 echo $ECHO_N "checking for jpeg_CreateCompress in -ljpeg... $ECHO_C" >&6 if test "${ac_cv_lib_jpeg_jpeg_CreateCompress+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char jpeg_CreateCompress (); int main () { jpeg_CreateCompress (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_jpeg_jpeg_CreateCompress=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_jpeg_jpeg_CreateCompress=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_CreateCompress" >&5 echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_CreateCompress" >&6 if test $ac_cv_lib_jpeg_jpeg_CreateCompress = yes; then if test "x$JPEG_DIR" != "x" ; then WMF_JPEG_CFLAGS="-I$JPEG_DIR/include" WMF_JPEG_LDFLAGS="-L$JPEG_DIR/lib -ljpeg" else WMF_JPEG_LDFLAGS="-ljpeg" fi cat >>confdefs.h <<\_ACEOF #define HAVE_LIBJPEG 1 _ACEOF GD_DEFS="$GD_DEFS -DHAVE_LIBJPEG" libwmf_gd_jpeg=yes fi fi fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_GD_CFLAGS="" WMF_GD_LDFLAGS="" libwmf_gd="wmf" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # Check whether --with-sys-gd or --without-sys-gd was given. if test "${with_sys_gd+set}" = set; then withval="$with_sys_gd" if test "x$withval" != "xno" ; then if test "x$withval" != "xyes" ; then GD_DIR=$withval CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi search_for_gd=yes else search_for_gd=no fi else search_for_gd=yes fi; # Check whether --enable-gd or --disable-gd was given. if test "${enable_gd+set}" = set; then enableval="$enable_gd" if test "x$enableval" = "xno" ; then search_for_gd=no libwmf_gd="none" fi else if test $libwmf_layers = no ; then search_for_gd=no libwmf_gd="none" fi fi; if test "$search_for_gd" != "no" ; then other_libs="" if test "x$libwmf_x" = "xyes" ; then CPPFLAGS="$CPPFLAGS $WMF_X_CFLAGS" LDFLAGS="$LDFLAGS $WMF_X_LDFLAGS" echo "$as_me:$LINENO: checking for main in -lXpm" >&5 echo $ECHO_N "checking for main in -lXpm... $ECHO_C" >&6 if test "${ac_cv_lib_Xpm_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXpm $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xpm_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xpm_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_main" >&5 echo "${ECHO_T}$ac_cv_lib_Xpm_main" >&6 if test $ac_cv_lib_Xpm_main = yes; then other_libs="$other_libs -lXpm" WMF_GD_LDFLAGS="-lXpm" fi fi if test "x$libwmf_gd_jpeg" = "xyes" ; then CPPFLAGS="$CPPFLAGS $WMF_JPEG_CFLAGS" LDFLAGS="$LDFLAGS $WMF_JPEG_LDFLAGS" other_libs="$other_libs -ljpeg" fi CPPFLAGS="$CPPFLAGS $WMF_FT_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" LDFLAGS="$LDFLAGS $WMF_FT_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS" other_libs="$other_libs -lfreetype -lpng -lz -lm" if test "${ac_cv_header_gd_h+set}" = set; then echo "$as_me:$LINENO: checking for gd.h" >&5 echo $ECHO_N "checking for gd.h... $ECHO_C" >&6 if test "${ac_cv_header_gd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 echo "${ECHO_T}$ac_cv_header_gd_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking gd.h usability" >&5 echo $ECHO_N "checking gd.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking gd.h presence" >&5 echo $ECHO_N "checking gd.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: gd.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: gd.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: gd.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: gd.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: gd.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: gd.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: gd.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: gd.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for gd.h" >&5 echo $ECHO_N "checking for gd.h... $ECHO_C" >&6 if test "${ac_cv_header_gd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_gd_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 echo "${ECHO_T}$ac_cv_header_gd_h" >&6 fi if test $ac_cv_header_gd_h = yes; then echo "$as_me:$LINENO: checking for gdClipSetAdd in -lgd" >&5 echo $ECHO_N "checking for gdClipSetAdd in -lgd... $ECHO_C" >&6 if test "${ac_cv_lib_gd_gdClipSetAdd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgd $other_libs $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gdClipSetAdd (); int main () { gdClipSetAdd (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gd_gdClipSetAdd=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gd_gdClipSetAdd=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdClipSetAdd" >&5 echo "${ECHO_T}$ac_cv_lib_gd_gdClipSetAdd" >&6 if test $ac_cv_lib_gd_gdClipSetAdd = yes; then echo "$as_me:$LINENO: checking for gdft_draw_bitmap in -lgd" >&5 echo $ECHO_N "checking for gdft_draw_bitmap in -lgd... $ECHO_C" >&6 if test "${ac_cv_lib_gd_gdft_draw_bitmap+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgd $other_libs $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gdft_draw_bitmap (); int main () { gdft_draw_bitmap (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gd_gdft_draw_bitmap=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gd_gdft_draw_bitmap=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdft_draw_bitmap" >&5 echo "${ECHO_T}$ac_cv_lib_gd_gdft_draw_bitmap" >&6 if test $ac_cv_lib_gd_gdft_draw_bitmap = yes; then libwmf_gd="sys" fi fi fi fi if test "x$libwmf_gd" != "xnone" ; then cat >>confdefs.h <<\_ACEOF #define HAVE_GD 1 _ACEOF build_gd_layer=yes else build_gd_layer=no fi if test "x$libwmf_gd" = "xsys" ; then if test "x$GD_DIR" != "x" ; then WMF_GD_CFLAGS="-I$GD_DIR/include" WMF_GD_LDFLAGS="-L$GD_DIR/lib -lgd $WMF_GD_LDFLAGS" else WMF_GD_LDFLAGS="-lgd $WMF_GD_LDFLAGS" fi elif test "x$libwmf_gd" = "xnone" ; then libwmf_gd="sys" else WMF_GD_LDFLAGS="" fi if test "x$build_gd_layer" = "xyes" ; then LIBWMF_OPT_GD_TRUE= LIBWMF_OPT_GD_FALSE='#' else LIBWMF_OPT_GD_TRUE='#' LIBWMF_OPT_GD_FALSE= fi if test "x$libwmf_gd" = "xsys" ; then LIBWMF_OPT_SYS_GD_TRUE= LIBWMF_OPT_SYS_GD_FALSE='#' else LIBWMF_OPT_SYS_GD_TRUE='#' LIBWMF_OPT_SYS_GD_FALSE= fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags WMF_PLOT_CFLAGS="" WMF_PLOT_LDFLAGS="" _cppflags=$CPPFLAGS _ldflags=$LDFLAGS # AC_ARG_WITH(plot,[ --with-plot=DIR use GNU plotutils (>= 2.4.0) in DIR (default no)],[ # if [ test "x$withval" != "xno" ]; then # AC_MSG_ERROR([* * * plotutils is not supported, sorry * * *]) # if [ test "x$withval" != "xyes" ]; then # PLOT_DIR=$withval # CPPFLAGS="$CPPFLAGS -I$withval/include" # LDFLAGS="$LDFLAGS -L$withval/lib" # fi # search_for_plot=yes # else # search_for_plot=no # fi #],[ search_for_plot=no #]) search_for_plot=no if test "$search_for_plot" != "no" ; then if test "${ac_cv_header_plot_h+set}" = set; then echo "$as_me:$LINENO: checking for plot.h" >&5 echo $ECHO_N "checking for plot.h... $ECHO_C" >&6 if test "${ac_cv_header_plot_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_plot_h" >&5 echo "${ECHO_T}$ac_cv_header_plot_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking plot.h usability" >&5 echo $ECHO_N "checking plot.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking plot.h presence" >&5 echo $ECHO_N "checking plot.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: plot.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: plot.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: plot.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: plot.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: plot.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: plot.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: plot.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: plot.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: plot.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: plot.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: plot.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to wvware-devel@sourceforge.net ## ## ------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for plot.h" >&5 echo $ECHO_N "checking for plot.h... $ECHO_C" >&6 if test "${ac_cv_header_plot_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_plot_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_plot_h" >&5 echo "${ECHO_T}$ac_cv_header_plot_h" >&6 fi if test $ac_cv_header_plot_h = yes; then echo "$as_me:$LINENO: checking for pl_libplot_ver in -lplot" >&5 echo $ECHO_N "checking for pl_libplot_ver in -lplot... $ECHO_C" >&6 if test "${ac_cv_lib_plot_pl_libplot_ver+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lplot $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pl_libplot_ver (); int main () { pl_libplot_ver (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_plot_pl_libplot_ver=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_plot_pl_libplot_ver=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_plot_pl_libplot_ver" >&5 echo "${ECHO_T}$ac_cv_lib_plot_pl_libplot_ver" >&6 if test $ac_cv_lib_plot_pl_libplot_ver = yes; then ac_can_link_libplot=no LIBPLOT_LIBS="-lplot" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot requires X" >&5 echo $ECHO_N "checking whether libplot requires X... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags if test "x$no_x" != "xyes" ; then if test $ac_can_link_libplot != yes ; then LIBPLOT_LIBS="-lplot $X_LIBS -lXaw -lXmu -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot links against Athena" >&5 echo $ECHO_N "checking whether libplot links against Athena... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags fi if test $ac_can_link_libplot != yes ; then ac_libplot_ldflags=$LDFLAGS LDFLAGS="$LDFLAGS $X_LIBS" echo "$as_me:$LINENO: checking for main in -lXp" >&5 echo $ECHO_N "checking for main in -lXp... $ECHO_C" >&6 if test "${ac_cv_lib_Xp_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXp -lXext -lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_Xp_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xp_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_main" >&5 echo "${ECHO_T}$ac_cv_lib_Xp_main" >&6 if test $ac_cv_lib_Xp_main = yes; then libXp="-lXp" else libXp="" fi LIBPLOT_LIBS="-lplot $X_LIBS -lXm $libXp -lXt $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS -lm" echo "$as_me:$LINENO: checking for main in -lgen" >&5 echo $ECHO_N "checking for main in -lgen... $ECHO_C" >&6 if test "${ac_cv_lib_gen_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgen $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_gen_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gen_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_gen_main" >&5 echo "${ECHO_T}$ac_cv_lib_gen_main" >&6 if test $ac_cv_lib_gen_main = yes; then LIBPLOT_LIBS="$LIBPLOT_LIBS -lgen" fi echo "$as_me:$LINENO: checking for main in -lPW" >&5 echo $ECHO_N "checking for main in -lPW... $ECHO_C" >&6 if test "${ac_cv_lib_PW_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lPW $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_PW_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_PW_main=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_PW_main" >&5 echo "${ECHO_T}$ac_cv_lib_PW_main" >&6 if test $ac_cv_lib_PW_main = yes; then LIBPLOT_LIBS="$LIBPLOT_LIBS -lPW" fi LDFLAGS=$ac_libplot_ldflags LDFLAGS="$LDFLAGS $LIBPLOT_LIBS" echo "$as_me:$LINENO: checking whether libplot links against Motif" >&5 echo $ECHO_N "checking whether libplot links against Motif... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { plPlotter* plotter; plPlotterParams* params; params = pl_newplparams (); plotter = pl_newpl_r ("X",stdin,stdout,stderr,params); pl_deletepl_r (plotter); pl_deleteplparams (params); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_can_link_libplot=yes echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ac_libplot_ldflags fi fi if test $ac_can_link_libplot != no ; then if test "x$PLOT_DIR" != "x" ; then WMF_PLOT_CFLAGS="-I$PLOT_DIR/include" WMF_PLOT_LDFLAGS="-L$PLOT_DIR/lib $LIBPLOT_LIBS" else WMF_PLOT_LDFLAGS="$LIBPLOT_LIBS" fi cat >>confdefs.h <<\_ACEOF #define HAVE_LIBPLOT 1 _ACEOF libwmf_plot=maybe else { { echo "$as_me:$LINENO: error: * * * sorry - unable to link against libplot * * *" >&5 echo "$as_me: error: * * * sorry - unable to link against libplot * * *" >&2;} { (exit 1); exit 1; }; } fi else { { echo "$as_me:$LINENO: error: GNU plotutils >= 2.4.0 required" >&5 echo "$as_me: error: GNU plotutils >= 2.4.0 required" >&2;} { (exit 1); exit 1; }; } fi fi fi if test "x$libwmf_plot" != "xno" ; then LIBWMF_OPT_PLOT_TRUE= LIBWMF_OPT_PLOT_FALSE='#' else LIBWMF_OPT_PLOT_TRUE='#' LIBWMF_OPT_PLOT_FALSE= fi CPPFLAGS=$_cppflags LDFLAGS=$_ldflags wmf_gdk_pixbuf=no GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" GDK_PIXBUF_DIR="" if test $LIBWMF_BUILDSTYLE != lite; then succeeded=no if test -z "$PKG_CONFIG"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test "$PKG_CONFIG" = "no" ; then echo "*** The pkg-config script could not be found. Make sure it is" echo "*** in your path, or set the PKG_CONFIG environment variable" echo "*** to the full path to pkg-config." echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." else PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo "$as_me:$LINENO: checking for gdk-pixbuf-2.0 >= 2.1.2" >&5 echo $ECHO_N "checking for gdk-pixbuf-2.0 >= 2.1.2... $ECHO_C" >&6 if $PKG_CONFIG --exists "gdk-pixbuf-2.0 >= 2.1.2" ; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 succeeded=yes echo "$as_me:$LINENO: checking GDK_PIXBUF_CFLAGS" >&5 echo $ECHO_N "checking GDK_PIXBUF_CFLAGS... $ECHO_C" >&6 GDK_PIXBUF_CFLAGS=`$PKG_CONFIG --cflags "gdk-pixbuf-2.0 >= 2.1.2"` echo "$as_me:$LINENO: result: $GDK_PIXBUF_CFLAGS" >&5 echo "${ECHO_T}$GDK_PIXBUF_CFLAGS" >&6 echo "$as_me:$LINENO: checking GDK_PIXBUF_LIBS" >&5 echo $ECHO_N "checking GDK_PIXBUF_LIBS... $ECHO_C" >&6 GDK_PIXBUF_LIBS=`$PKG_CONFIG --libs "gdk-pixbuf-2.0 >= 2.1.2"` echo "$as_me:$LINENO: result: $GDK_PIXBUF_LIBS" >&5 echo "${ECHO_T}$GDK_PIXBUF_LIBS" >&6 else GDK_PIXBUF_CFLAGS="" GDK_PIXBUF_LIBS="" ## If we have a custom action on failure, don't print errors, but ## do set a variable so people can do so. GDK_PIXBUF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gdk-pixbuf-2.0 >= 2.1.2"` fi else echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." echo "*** See http://www.freedesktop.org/software/pkgconfig" fi fi if test $succeeded = yes; then GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GDK_PIXBUF_DIR="gtk-2.0/$GTK_VERSION/loaders" wmf_gdk_pixbuf=yes else wmf_gdk_pixbuf=no fi fi if test $wmf_gdk_pixbuf = yes; then LIBWMF_GDK_PIXBUF_TRUE= LIBWMF_GDK_PIXBUF_FALSE='#' else LIBWMF_GDK_PIXBUF_TRUE='#' LIBWMF_GDK_PIXBUF_FALSE= fi # Check whether --with-docdir or --without-docdir was given. if test "${with_docdir+set}" = set; then withval="$with_docdir" WMF_DOCDIR=$withval else if test "x$prefix" = "xNONE"; then WMF_DOCDIR=$ac_default_prefix/share/doc/$PACKAGE else WMF_DOCDIR=$prefix/share/doc/$PACKAGE fi fi; # Check whether --with-fontdir or --without-fontdir was given. if test "${with_fontdir+set}" = set; then withval="$with_fontdir" WMF_FONTDIR=$withval else if test "x$prefix" = "xNONE"; then WMF_FONTDIR=$ac_default_prefix/share/$PACKAGE/fonts else WMF_FONTDIR=$prefix/share/$PACKAGE/fonts fi fi; # Check whether --with-sysfontmap or --without-sysfontmap was given. if test "${with_sysfontmap+set}" = set; then withval="$with_sysfontmap" WMF_SYS_FONTMAP=$withval else WMF_SYS_FONTMAP=/usr/share/fonts/fontmap fi; # Check whether --with-xtrafontmap or --without-xtrafontmap was given. if test "${with_xtrafontmap+set}" = set; then withval="$with_xtrafontmap" WMF_XTRA_FONTMAP=$withval else WMF_XTRA_FONTMAP=$WMF_FONTDIR/fontmap fi; # Check whether --with-gsfontmap or --without-gsfontmap was given. if test "${with_gsfontmap+set}" = set; then withval="$with_gsfontmap" WMF_GS_FONTMAP=$withval else if test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS ; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap.GS elif test -r /var/lib/defoma/gs.d/dirs/fonts/Fontmap ; then WMF_GS_FONTMAP=/var/lib/defoma/gs.d/dirs/fonts/Fontmap elif test -r 'c:/progra~1/gs/gs/lib/fontmap.gs' ; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap.gs' elif test -r 'c:/progra~1/gs/gs/lib/fontmap' ; then WMF_GS_FONTMAP='c:/progra~1/gs/gs/lib/fontmap' elif test -r 'c:/gs/fonts/fontmap.gs' ; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap.gs' elif test -r 'c:/gs/fonts/fontmap' ; then WMF_GS_FONTMAP='c:/gs/fonts/fontmap' else WMF_GS_FONTMAP=/usr/share/ghostscript/5.50/Fontmap if test -d /usr/share/ghostscript; then for i in `ls /usr/share/ghostscript`; do if test -r "/usr/share/ghostscript/$i/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/Fontmap" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap.GS"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap.GS" elif test -r "/usr/share/ghostscript/$i/lib/Fontmap"; then WMF_GS_FONTMAP="/usr/share/ghostscript/$i/lib/Fontmap" fi done fi fi fi; # Check whether --with-gsfontdir or --without-gsfontdir was given. if test "${with_gsfontdir+set}" = set; then withval="$with_gsfontdir" WMF_GS_FONTDIR=$withval else if test -d /var/lib/defoma/gs.d/dirs/fonts ; then WMF_GS_FONTDIR=/var/lib/defoma/gs.d/dirs/fonts elif test -d 'c:/progra~1/gs/gs/lib/fonts' ; then WMF_GS_FONTDIR='c:/progra~1/gs/gs/lib/fonts' elif test -d 'c:/gs/fonts' ; then WMF_GS_FONTDIR='c:/gs/fonts' else WMF_GS_FONTDIR=/usr/share/fonts/default/Type1 fi fi; WMF_CFLAGS="$WMF_FT_CFLAGS $WMF_X_CFLAGS $WMF_PLOT_CFLAGS $WMF_XML_CFLAGS" WMF_CFLAGS="$WMF_CFLAGS $WMF_GD_CFLAGS $WMF_JPEG_CFLAGS $WMF_PNG_CFLAGS $WMF_Z_CFLAGS" WMF_CONFIG_CFLAGS="$WMF_FT_CONFIG_CFLAGS $WMF_Z_CONFIG_CFLAGS $WMF_X_CONFIG_CFLAGS" WMF_LIBFLAGS="$WMF_PLOT_LDFLAGS $WMF_GD_LDFLAGS $WMF_FT_LDFLAGS $WMF_X_LDFLAGS $WMF_XML_LDFLAGS" WMF_LIBFLAGS="$WMF_LIBFLAGS $WMF_JPEG_LDFLAGS $WMF_PNG_LDFLAGS $WMF_Z_LDFLAGS $SYS_LIBM" ac_config_files="$ac_config_files Makefile doc/Makefile doc/caolan/Makefile doc/caolan/pics/Makefile doc/html/Makefile fonts/Makefile fonts/libwmf-fontmap fonts/fontmap include/Makefile include/libwmf/Makefile src/Makefile src/extra/Makefile src/extra/trio/Makefile src/extra/gd/Makefile src/ipa/Makefile src/convert/Makefile libwmf-config libwmf.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${LIBWMF_BUILD_ALL_TRUE}" && test -z "${LIBWMF_BUILD_ALL_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_BUILD_ALL\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_BUILD_ALL\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_TRIO_TRUE}" && test -z "${LIBWMF_OPT_TRIO_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_TRIO\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_TRIO\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_MODULES_TRUE}" && test -z "${LIBWMF_OPT_MODULES_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_MODULES\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_MODULES\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_LAYERS_TRUE}" && test -z "${LIBWMF_OPT_LAYERS_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_LAYERS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_LAYERS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_X_TRUE}" && test -z "${LIBWMF_OPT_X_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_X\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_X\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_GD_TRUE}" && test -z "${LIBWMF_OPT_GD_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_SYS_GD_TRUE}" && test -z "${LIBWMF_OPT_SYS_GD_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_SYS_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_SYS_GD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_OPT_PLOT_TRUE}" && test -z "${LIBWMF_OPT_PLOT_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_OPT_PLOT\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_OPT_PLOT\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBWMF_GDK_PIXBUF_TRUE}" && test -z "${LIBWMF_GDK_PIXBUF_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"LIBWMF_GDK_PIXBUF\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"LIBWMF_GDK_PIXBUF\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by libwmf $as_me 0.2.8, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ libwmf config.status 0.2.8 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/caolan/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/caolan/Makefile" ;; "doc/caolan/pics/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/caolan/pics/Makefile" ;; "doc/html/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/Makefile" ;; "fonts/Makefile" ) CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "fonts/libwmf-fontmap" ) CONFIG_FILES="$CONFIG_FILES fonts/libwmf-fontmap" ;; "fonts/fontmap" ) CONFIG_FILES="$CONFIG_FILES fonts/fontmap" ;; "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/libwmf/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/libwmf/Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/extra/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/Makefile" ;; "src/extra/trio/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/trio/Makefile" ;; "src/extra/gd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/extra/gd/Makefile" ;; "src/ipa/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ipa/Makefile" ;; "src/convert/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/convert/Makefile" ;; "libwmf-config" ) CONFIG_FILES="$CONFIG_FILES libwmf-config" ;; "libwmf.spec" ) CONFIG_FILES="$CONFIG_FILES libwmf.spec" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "wmfconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS wmfconfig.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@LIBWMF_PACKAGE@,$LIBWMF_PACKAGE,;t t s,@LIBWMF_VERSION@,$LIBWMF_VERSION,;t t s,@LIBWMF_RELEASE@,$LIBWMF_RELEASE,;t t s,@LT_RELEASE@,$LT_RELEASE,;t t s,@LT_CURRENT@,$LT_CURRENT,;t t s,@LT_REVISION@,$LT_REVISION,;t t s,@LT_AGE@,$LT_AGE,;t t s,@LT_LITE_CURRENT@,$LT_LITE_CURRENT,;t t s,@LT_LITE_REVISION@,$LT_LITE_REVISION,;t t s,@LT_LITE_AGE@,$LT_LITE_AGE,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@AMTAR@,$AMTAR,;t t s,@am__tar@,$am__tar,;t t s,@am__untar@,$am__untar,;t t s,@LIBWMF_BUILDSTYLE@,$LIBWMF_BUILDSTYLE,;t t s,@LIBWMF_BUILD_ALL_TRUE@,$LIBWMF_BUILD_ALL_TRUE,;t t s,@LIBWMF_BUILD_ALL_FALSE@,$LIBWMF_BUILD_ALL_FALSE,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@SYS_LIBM@,$SYS_LIBM,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@CPP@,$CPP,;t t s,@LN_S@,$LN_S,;t t s,@EGREP@,$EGREP,;t t s,@ECHO@,$ECHO,;t t s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@DLLTOOL@,$DLLTOOL,;t t s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t s,@AS@,$AS,;t t s,@ac_ct_AS@,$ac_ct_AS,;t t s,@OBJDUMP@,$OBJDUMP,;t t s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@CXXCPP@,$CXXCPP,;t t s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@LIBWMF_OPT_TRIO_TRUE@,$LIBWMF_OPT_TRIO_TRUE,;t t s,@LIBWMF_OPT_TRIO_FALSE@,$LIBWMF_OPT_TRIO_FALSE,;t t s,@LIBWMF_OPT_MODULES_TRUE@,$LIBWMF_OPT_MODULES_TRUE,;t t s,@LIBWMF_OPT_MODULES_FALSE@,$LIBWMF_OPT_MODULES_FALSE,;t t s,@LIBWMF_OPT_LAYERS_TRUE@,$LIBWMF_OPT_LAYERS_TRUE,;t t s,@LIBWMF_OPT_LAYERS_FALSE@,$LIBWMF_OPT_LAYERS_FALSE,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@LIBWMF_OPT_X_TRUE@,$LIBWMF_OPT_X_TRUE,;t t s,@LIBWMF_OPT_X_FALSE@,$LIBWMF_OPT_X_FALSE,;t t s,@XML2_CONFIG@,$XML2_CONFIG,;t t s,@FREETYPE_CONFIG@,$FREETYPE_CONFIG,;t t s,@LIBWMF_OPT_GD_TRUE@,$LIBWMF_OPT_GD_TRUE,;t t s,@LIBWMF_OPT_GD_FALSE@,$LIBWMF_OPT_GD_FALSE,;t t s,@LIBWMF_OPT_SYS_GD_TRUE@,$LIBWMF_OPT_SYS_GD_TRUE,;t t s,@LIBWMF_OPT_SYS_GD_FALSE@,$LIBWMF_OPT_SYS_GD_FALSE,;t t s,@LIBWMF_OPT_PLOT_TRUE@,$LIBWMF_OPT_PLOT_TRUE,;t t s,@LIBWMF_OPT_PLOT_FALSE@,$LIBWMF_OPT_PLOT_FALSE,;t t s,@PKG_CONFIG@,$PKG_CONFIG,;t t s,@GDK_PIXBUF_CFLAGS@,$GDK_PIXBUF_CFLAGS,;t t s,@GDK_PIXBUF_LIBS@,$GDK_PIXBUF_LIBS,;t t s,@LIBWMF_GDK_PIXBUF_TRUE@,$LIBWMF_GDK_PIXBUF_TRUE,;t t s,@LIBWMF_GDK_PIXBUF_FALSE@,$LIBWMF_GDK_PIXBUF_FALSE,;t t s,@GDK_PIXBUF_DIR@,$GDK_PIXBUF_DIR,;t t s,@WMF_CFLAGS@,$WMF_CFLAGS,;t t s,@WMF_CONFIG_CFLAGS@,$WMF_CONFIG_CFLAGS,;t t s,@WMF_LIBFLAGS@,$WMF_LIBFLAGS,;t t s,@WMF_DOCDIR@,$WMF_DOCDIR,;t t s,@WMF_FONTDIR@,$WMF_FONTDIR,;t t s,@WMF_SYS_FONTMAP@,$WMF_SYS_FONTMAP,;t t s,@WMF_XTRA_FONTMAP@,$WMF_XTRA_FONTMAP,;t t s,@WMF_GS_FONTMAP@,$WMF_GS_FONTMAP,;t t s,@WMF_GS_FONTDIR@,$WMF_GS_FONTDIR,;t t s,@WMF_DEFS@,$WMF_DEFS,;t t s,@GD_DEFS@,$GD_DEFS,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi echo "" echo " Support for X: $libwmf_x" echo " Support for GD: $libwmf_gd" echo " Support for JPEG though GD: $libwmf_gd_jpeg" echo " Support for XML: $libwmf_xml" echo "" echo " Documentation directory: $WMF_DOCDIR" echo " Font directory: $WMF_FONTDIR" echo " System XML fontmap file: $WMF_SYS_FONTMAP" echo " Non-system XML fontmap file: $WMF_XTRA_FONTMAP" echo " ghostscript fontmap file: $WMF_GS_FONTMAP" echo " ghostscript font directory: $WMF_GS_FONTDIR" echo "" echo " building gdk-pixbuf plug-in? $wmf_gdk_pixbuf" echo "" libwmf-0.2.8.4/src/0000755000077100007710000000000010272000331013256 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/player/0000755000077100007710000000000010271770014014565 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/player/clip.h0000644000077100007710000000423007470252457015701 0ustar fjffjf00000000000000/* libwmf ("player/clip.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_CLIP_H #define WMFPLAYER_CLIP_H static void Clipping (wmfAPI* API,wmfRegion* clip,wmfRegion* vis,wmfD_Rect* rect,U16 flags) { wmfRegion rgn; rgn.rects = 0; if (clip->numRects == 0) { if (clip->rects) { rgn.rects = clip->rects; rgn.size = clip->size; clip->rects = 0; clip->size = 0; } } if (rgn.rects == 0) { rgn.rects = (wmfD_Rect*) wmf_malloc (API,8 * sizeof (wmfD_Rect)); rgn.size = 8; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } WmfSetRectRgn (API,&rgn,rect); if ((clip->numRects == 0) && (flags & CLIP_INTERSECT)) { (*clip) = rgn; return; } /* else if (flags & CLIP_EXCLUDE) ... */ if (clip->numRects == 0) { if (clip->rects == 0) { clip->rects = (wmfD_Rect*) wmf_malloc (API,8 * sizeof (wmfD_Rect)); clip->size = 8; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } WmfSetRectRgn (API,clip,0); WmfCombineRgn (API,clip,vis,0,RGN_COPY); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } WmfCombineRgn (API,&rgn,clip,&rgn,(U16)((flags & CLIP_EXCLUDE) ? RGN_DIFF : RGN_AND)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } (*clip) = rgn; /* What about what *was* in clip ?? Check WmfCombineRgn */ } #endif /* ! WMFPLAYER_CLIP_H */ libwmf-0.2.8.4/src/player/color.h0000644000077100007710000003056607367010431016070 0ustar fjffjf00000000000000/* libwmf ("player/color.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_COLOR_H #define WMFPLAYER_COLOR_H /* These are the colors defined in the SVG standard (I haven't checked the final recommendation for changes) */ wmfRGB wmf_aliceblue = { 240, 248, 255 }; wmfRGB wmf_antiquewhite = { 250, 235, 215 }; wmfRGB wmf_aqua = { 0, 255, 255 }; wmfRGB wmf_aquamarine = { 127, 255, 212 }; wmfRGB wmf_azure = { 240, 255, 255 }; wmfRGB wmf_beige = { 245, 245, 220 }; wmfRGB wmf_bisque = { 255, 228, 196 }; wmfRGB wmf_black = { 0, 0, 0 }; wmfRGB wmf_blanchedalmond = { 255, 235, 205 }; wmfRGB wmf_blue = { 0, 0, 255 }; wmfRGB wmf_blueviolet = { 138, 43, 226 }; wmfRGB wmf_brown = { 165, 42, 42 }; wmfRGB wmf_burlywood = { 222, 184, 135 }; wmfRGB wmf_cadetblue = { 95, 158, 160 }; wmfRGB wmf_chartreuse = { 127, 255, 0 }; wmfRGB wmf_chocolate = { 210, 105, 30 }; wmfRGB wmf_coral = { 255, 127, 80 }; wmfRGB wmf_cornflowerblue = { 100, 149, 237 }; wmfRGB wmf_cornsilk = { 255, 248, 220 }; wmfRGB wmf_crimson = { 220, 20, 60 }; wmfRGB wmf_cyan = { 0, 255, 255 }; wmfRGB wmf_darkblue = { 0, 0, 139 }; wmfRGB wmf_darkcyan = { 0, 139, 139 }; wmfRGB wmf_darkgoldenrod = { 184, 134, 11 }; wmfRGB wmf_darkgray = { 169, 169, 169 }; wmfRGB wmf_darkgreen = { 0, 100, 0 }; wmfRGB wmf_darkgrey = { 169, 169, 169 }; wmfRGB wmf_darkkhaki = { 189, 183, 107 }; wmfRGB wmf_darkmagenta = { 139, 0, 139 }; wmfRGB wmf_darkolivegreen = { 85, 107, 47 }; wmfRGB wmf_darkorange = { 255, 140, 0 }; wmfRGB wmf_darkorchid = { 153, 50, 204 }; wmfRGB wmf_darkred = { 139, 0, 0 }; wmfRGB wmf_darksalmon = { 233, 150, 122 }; wmfRGB wmf_darkseagreen = { 143, 188, 143 }; wmfRGB wmf_darkslateblue = { 72, 61, 139 }; wmfRGB wmf_darkslategray = { 47, 79, 79 }; wmfRGB wmf_darkslategrey = { 47, 79, 79 }; wmfRGB wmf_darkturquoise = { 0, 206, 209 }; wmfRGB wmf_darkviolet = { 148, 0, 211 }; wmfRGB wmf_deeppink = { 255, 20, 147 }; wmfRGB wmf_deepskyblue = { 0, 191, 255 }; wmfRGB wmf_dimgray = { 105, 105, 105 }; wmfRGB wmf_dimgrey = { 105, 105, 105 }; wmfRGB wmf_dodgerblue = { 30, 144, 255 }; wmfRGB wmf_firebrick = { 178, 34, 34 }; wmfRGB wmf_floralwhite = { 255, 250, 240 }; wmfRGB wmf_forestgreen = { 34, 139, 34 }; wmfRGB wmf_fuchsia = { 255, 0, 255 }; wmfRGB wmf_gainsboro = { 220, 220, 220 }; wmfRGB wmf_ghostwhite = { 248, 248, 255 }; wmfRGB wmf_gold = { 255, 215, 0 }; wmfRGB wmf_goldenrod = { 218, 165, 32 }; wmfRGB wmf_gray = { 128, 128, 128 }; wmfRGB wmf_grey = { 128, 128, 128 }; wmfRGB wmf_green = { 0, 128, 0 }; wmfRGB wmf_greenyellow = { 173, 255, 47 }; wmfRGB wmf_honeydew = { 240, 255, 240 }; wmfRGB wmf_hotpink = { 255, 105, 180 }; wmfRGB wmf_indianred = { 205, 92, 92 }; wmfRGB wmf_indigo = { 75, 0, 130 }; wmfRGB wmf_ivory = { 255, 255, 240 }; wmfRGB wmf_khaki = { 240, 230, 140 }; wmfRGB wmf_lavender = { 230, 230, 250 }; wmfRGB wmf_lavenderblush = { 255, 240, 245 }; wmfRGB wmf_lawngreen = { 124, 252, 0 }; wmfRGB wmf_lemonchiffon = { 255, 250, 205 }; wmfRGB wmf_lightblue = { 173, 216, 230 }; wmfRGB wmf_lightcoral = { 240, 128, 128 }; wmfRGB wmf_lightcyan = { 224, 255, 255 }; wmfRGB wmf_lightgoldenrodyellow = { 250, 250, 210 }; wmfRGB wmf_lightgray = { 211, 211, 211 }; wmfRGB wmf_lightgreen = { 144, 238, 144 }; wmfRGB wmf_lightgrey = { 211, 211, 211 }; wmfRGB wmf_lightpink = { 255, 182, 193 }; wmfRGB wmf_lightsalmon = { 255, 160, 122 }; wmfRGB wmf_lightseagreen = { 32, 178, 170 }; wmfRGB wmf_lightskyblue = { 135, 206, 250 }; wmfRGB wmf_lightslategray = { 119, 136, 153 }; wmfRGB wmf_lightslategrey = { 119, 136, 153 }; wmfRGB wmf_lightsteelblue = { 176, 196, 222 }; wmfRGB wmf_lightyellow = { 255, 255, 224 }; wmfRGB wmf_lime = { 0, 255, 0 }; wmfRGB wmf_limegreen = { 50, 205, 50 }; wmfRGB wmf_linen = { 250, 240, 230 }; wmfRGB wmf_magenta = { 255, 0, 255 }; wmfRGB wmf_maroon = { 128, 0, 0 }; wmfRGB wmf_mediumaquamarine = { 102, 205, 170 }; wmfRGB wmf_mediumblue = { 0, 0, 205 }; wmfRGB wmf_mediumorchid = { 186, 85, 211 }; wmfRGB wmf_mediumpurple = { 147, 112, 219 }; wmfRGB wmf_mediumseagreen = { 60, 179, 113 }; wmfRGB wmf_mediumslateblue = { 123, 104, 238 }; wmfRGB wmf_mediumspringgreen = { 0, 250, 154 }; wmfRGB wmf_mediumturquoise = { 72, 209, 204 }; wmfRGB wmf_mediumvioletred = { 199, 21, 133 }; wmfRGB wmf_midnightblue = { 25, 25, 112 }; wmfRGB wmf_mintcream = { 245, 255, 250 }; wmfRGB wmf_mistyrose = { 255, 228, 225 }; wmfRGB wmf_moccasin = { 255, 228, 181 }; wmfRGB wmf_navajowhite = { 255, 222, 173 }; wmfRGB wmf_navy = { 0, 0, 128 }; wmfRGB wmf_oldlace = { 253, 245, 230 }; wmfRGB wmf_olive = { 128, 128, 0 }; wmfRGB wmf_olivedrab = { 107, 142, 35 }; wmfRGB wmf_orange = { 255, 165, 0 }; wmfRGB wmf_orangered = { 255, 69, 0 }; wmfRGB wmf_orchid = { 218, 112, 214 }; wmfRGB wmf_palegoldenrod = { 238, 232, 170 }; wmfRGB wmf_palegreen = { 152, 251, 152 }; wmfRGB wmf_paleturquoise = { 175, 238, 238 }; wmfRGB wmf_palevioletred = { 219, 112, 147 }; wmfRGB wmf_papayawhip = { 255, 239, 213 }; wmfRGB wmf_peachpuff = { 255, 218, 185 }; wmfRGB wmf_peru = { 205, 133, 63 }; wmfRGB wmf_pink = { 255, 192, 203 }; wmfRGB wmf_plum = { 221, 160, 221 }; wmfRGB wmf_powderblue = { 176, 224, 230 }; wmfRGB wmf_purple = { 128, 0, 128 }; wmfRGB wmf_red = { 255, 0, 0 }; wmfRGB wmf_rosybrown = { 188, 143, 143 }; wmfRGB wmf_royalblue = { 65, 105, 225 }; wmfRGB wmf_saddlebrown = { 139, 69, 19 }; wmfRGB wmf_salmon = { 250, 128, 114 }; wmfRGB wmf_sandybrown = { 244, 164, 96 }; wmfRGB wmf_seagreen = { 46, 139, 87 }; wmfRGB wmf_seashell = { 255, 245, 238 }; wmfRGB wmf_sienna = { 160, 82, 45 }; wmfRGB wmf_silver = { 192, 192, 192 }; wmfRGB wmf_skyblue = { 135, 206, 235 }; wmfRGB wmf_slateblue = { 106, 90, 205 }; wmfRGB wmf_slategray = { 112, 128, 144 }; wmfRGB wmf_slategrey = { 112, 128, 144 }; wmfRGB wmf_snow = { 255, 250, 250 }; wmfRGB wmf_springgreen = { 0, 255, 127 }; wmfRGB wmf_steelblue = { 70, 130, 180 }; wmfRGB wmf_tan = { 210, 180, 140 }; wmfRGB wmf_teal = { 0, 128, 128 }; wmfRGB wmf_thistle = { 216, 191, 216 }; wmfRGB wmf_tomato = { 255, 99, 71 }; wmfRGB wmf_turquoise = { 64, 224, 208 }; wmfRGB wmf_violet = { 238, 130, 238 }; wmfRGB wmf_wheat = { 245, 222, 179 }; wmfRGB wmf_white = { 255, 255, 255 }; wmfRGB wmf_whitesmoke = { 245, 245, 245 }; wmfRGB wmf_yellow = { 255, 255, 0 }; wmfRGB wmf_yellowgreen = { 154, 205, 50 }; /* Color table */ /** * Initialize internal color table * * @param API the API handle */ void wmf_ipa_color_init (wmfAPI* API) { wmfColorData* color; API->color_data = wmf_malloc (API,sizeof (wmfColorData)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } color = (wmfColorData*) API->color_data; color->max = 32; color->count = 0; color->rgb = (wmfRGB*) wmf_malloc (API,color->max * sizeof (wmfRGB)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } color->rgb[0] = wmf_red; /* not a real entry; don't increment count... */ } /** * Add a color to the internal table. * * @param API the API handle * @param rgb pointer to the color to be added */ void wmf_ipa_color_add (wmfAPI* API,wmfRGB* rgb) { wmfRGB* more = 0; wmfColorData* color = (wmfColorData*) API->color_data; unsigned long i; int new_color = 1; for (i = 0; i < color->count; i++) { if ( (rgb->r == color->rgb[i].r) && (rgb->g == color->rgb[i].g) && (rgb->b == color->rgb[i].b)) { new_color = 0; break; } } if (!new_color) return; if (color->count == color->max) { more = wmf_realloc (API,color->rgb,(color->max + 32) * sizeof (wmfRGB)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } color->rgb = more; color->max += 32; } color->rgb[color->count] = (*rgb); color->count++; } /** * Find closest matching color in internal table and return its index. * * @param API the API handle * @param rgb pointer to the color to be matched * * @return Returns the index of the closest matching color. */ unsigned long wmf_ipa_color_index (wmfAPI* API,wmfRGB* rgb) { wmfColorData* color = (wmfColorData*) API->color_data; unsigned long i; unsigned long best = 0; unsigned int dbest = 766; unsigned int di; unsigned int dr; unsigned int dg; unsigned int db; if (color->count == 0) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Color table has no entries!"); } else { WMF_ERROR (API,"Color table has no entries!"); API->err = wmf_E_Glitch; } return (best); /* This should dereference safely to red. */ } /* First check for an exact match... */ for (i = 0; i < color->count; i++) { if ((rgb->r == color->rgb[i].r) && (rgb->g == color->rgb[i].g) && (rgb->b == color->rgb[i].b)) { best = i; dbest = 0; break; } } if (dbest == 0) return (best); /* Otherwise return best match; I'm going to use minimax rather than r.m.s. */ for (i = 0; i < color->count; i++) { dr = (unsigned int) ABS (((int) (rgb->r)) - ((int) (color->rgb[i].r))); dg = (unsigned int) ABS (((int) (rgb->g)) - ((int) (color->rgb[i].g))); db = (unsigned int) ABS (((int) (rgb->b)) - ((int) (color->rgb[i].b))); di = MAX (dr,dg); di = MAX (di,db); if (di < dbest) { best = i; dbest = di; } } return (best); } /** * Get the number of indexed colors. * * @param API the API handle * * @return Returns the number of indexed colors. */ unsigned long wmf_ipa_color_count (wmfAPI* API) { wmfColorData* color = (wmfColorData*) API->color_data; return (color->count); } /** * Get indexed color. * * @param API the API handle * @param index the index of the color * * @return Returns pointer to the indexed color. */ wmfRGB* wmf_ipa_color (wmfAPI* API,unsigned long index) { wmfColorData* color = (wmfColorData*) API->color_data; if (index >= color->count) { WMF_ERROR (API,"Glitch! Color index out of range!"); API->err = wmf_E_Glitch; return (&wmf_red); } return (color->rgb + index); } static wmfRGB rgb (wmfAPI* API,U16 one,U16 two) { wmfRGB color; color.r = (unsigned char) (one & 0x00FF); color.g = (unsigned char) ((one & 0xFF00) >> 8); color.b = (unsigned char) (two & 0x00FF); return (color); } /** * The color white. * * @param API the API handle * * @return Returns \b wmf_white. */ wmfRGB wmf_rgb_white (wmfAPI* API) { return (wmf_white); } /** * The color black. * * @param API the API handle * * @return Returns \b wmf_black. */ wmfRGB wmf_rgb_black (wmfAPI* API) { return (wmf_black); } /** * Create a color with specified fractions of red, green and blue. * * @param API the API handle * @param red fraction (0 to 1 inclusive) of color red * @param green fraction (0 to 1 inclusive) of color green * @param blue fraction (0 to 1 inclusive) of color blue * * \b wmf_rgb_color (API,1,1,1) returns \b wmf_white. * * \b wmf_rgb_color (API,0,0,0) returns \b wmf_black. * * @return Returns the color. */ wmfRGB wmf_rgb_color (wmfAPI* API,float red,float green,float blue) { wmfRGB color; int i_red; int i_green; int i_blue; if (red > 1) red = 1; if (green > 1) green = 1; if (blue > 1) blue = 1; if (red < 0) red = 0; if (green < 0) green = 0; if (blue < 0) blue = 0; i_red = (int) (red * (float) 256); i_green = (int) (green * (float) 256); i_blue = (int) (blue * (float) 256); if (i_red > 255) i_red = 255; if (i_green > 255) i_green = 255; if (i_blue > 255) i_blue = 255; if (i_red < 0) i_red = 0; if (i_green < 0) i_green = 0; if (i_blue < 0) i_blue = 0; color.r = (unsigned char) i_red; color.g = (unsigned char) i_green; color.b = (unsigned char) i_blue; return (color); } #endif /* ! WMFPLAYER_COLOR_H */ libwmf-0.2.8.4/src/player/coord.h0000644000077100007710000001711710271767712016066 0ustar fjffjf00000000000000/* libwmf ("player/coord.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* File to be included from player/player.c */ #ifndef WMFPLAYER_COORD_H #define WMFPLAYER_COORD_H /** * Set the device origin coordinate. * * @param API the API handle * @param d_pt origin in device coordinates * * Not really recommended. */ void wmf_set_viewport_origin (wmfAPI* API,wmfD_Coord d_pt) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; P->Viewport_Origin = d_pt; } static wmfL_Coord L_Coord (wmfAPI* API,U16 u16_x,U16 u16_y) { wmfL_Coord l_pt; l_pt.x = U16_2_S32 (u16_x); l_pt.y = U16_2_S32 (u16_y); return (l_pt); } static void D_Rect (wmfAPI* API,wmfD_Rect* d_r,U16 u16_x1,U16 u16_y1,U16 u16_x2,U16 u16_y2) { wmfL_Coord l_pt_1; wmfL_Coord l_pt_2; wmfD_Coord d_pt_1; wmfD_Coord d_pt_2; l_pt_1.x = U16_2_S32 (u16_x1); l_pt_1.y = U16_2_S32 (u16_y1); l_pt_2.x = U16_2_S32 (u16_x2); l_pt_2.y = U16_2_S32 (u16_y2); d_pt_1 = wmf_D_Coord_translate (API,l_pt_1); d_pt_2 = wmf_D_Coord_translate (API,l_pt_2); if (d_pt_1.x <= d_pt_2.x) { d_r->TL.x = d_pt_1.x; d_r->BR.x = d_pt_2.x; } else { d_r->TL.x = d_pt_2.x; d_r->BR.x = d_pt_1.x; } if (d_pt_1.y <= d_pt_2.y) { d_r->TL.y = d_pt_1.y; d_r->BR.y = d_pt_2.y; } else { d_r->TL.y = d_pt_2.y; d_r->BR.y = d_pt_1.y; } } static void D_Coord_Register (wmfAPI* API,wmfD_Coord d_pt,float scope) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; if ((P->flags & PLAYER_TLBR_D_SET) == 0) { P->D_TL = d_pt; P->D_BR = d_pt; P->flags |= PLAYER_TLBR_D_SET; } scope = ABS (scope); if (P->D_TL.x > (d_pt.x - scope)) P->D_TL.x = d_pt.x - scope; if (P->D_TL.y > (d_pt.y - scope)) P->D_TL.y = d_pt.y - scope; if (P->D_BR.x < (d_pt.x + scope)) P->D_BR.x = d_pt.x + scope; if (P->D_BR.y < (d_pt.y + scope)) P->D_BR.y = d_pt.y + scope; } static wmfL_Coord wmf_L_Coord_translate (wmfAPI* API,wmfD_Coord d_pt) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfL_Coord l_pt; d_pt.x += P->Viewport_Origin.x; d_pt.y += P->Viewport_Origin.y; l_pt.x = (float) ((double) d_pt.x / PixelWidth (API)); l_pt.y = (float) ((double) d_pt.y / PixelHeight (API)); l_pt.x += P->dc->Window.Ox; l_pt.y += P->dc->Window.Oy; return (l_pt); } static wmfD_Coord wmf_D_Coord_translate (wmfAPI* API,wmfL_Coord l_pt) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfD_Coord d_pt; l_pt.x -= P->dc->Window.Ox; l_pt.y -= P->dc->Window.Oy; d_pt.x = (float) ((double) l_pt.x * PixelWidth (API)); d_pt.y = (float) ((double) l_pt.y * PixelHeight (API)); d_pt.x -= P->Viewport_Origin.x; d_pt.y -= P->Viewport_Origin.y; return (d_pt); } static void WmfSetMapMode (wmfAPI* API,U16 map_mode) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; switch (map_mode) { case (MM_TEXT): /* each unit is 1pt */ WMF_DEBUG (API,"map_mode: MM_TEXT"); P->dc->pixel_width = 1; P->dc->pixel_height = 1; break; case (MM_LOMETRIC): /* each unit is 0.1mm */ WMF_DEBUG (API,"map_mode: MM_LOMETRIC"); P->dc->pixel_width = INCH_TO_POINT (MM_TO_INCH (0.1)); P->dc->pixel_height = INCH_TO_POINT (MM_TO_INCH (0.1)); break; case (MM_HIMETRIC): /* each unit is 0.01mm */ WMF_DEBUG (API,"map_mode: MM_HIMETRIC"); P->dc->pixel_width = INCH_TO_POINT (MM_TO_INCH (0.01)); P->dc->pixel_height = INCH_TO_POINT (MM_TO_INCH (0.01)); break; case (MM_LOENGLISH): /* each unit is 0.01 inch */ WMF_DEBUG (API,"map_mode: MM_LOENGLISH"); P->dc->pixel_width = INCH_TO_POINT (0.01); P->dc->pixel_height = INCH_TO_POINT (0.01); break; case (MM_HIENGLISH): /* each unit is 0.001 inch */ WMF_DEBUG (API,"map_mode: MM_HIENGLISH"); P->dc->pixel_width = INCH_TO_POINT (0.001); P->dc->pixel_height = INCH_TO_POINT (0.001); break; case (MM_TWIPS): /* each unit is 1/1440 inch */ WMF_DEBUG (API,"map_mode: MM_TWIPS"); P->dc->pixel_width = 0.05; P->dc->pixel_height = 0.05; break; case (MM_ISOTROPIC): case (MM_ANISOTROPIC): WMF_DEBUG (API,"map_mode: MM_[AN]ISOTROPIC"); /* scale here depends on window & viewport extents */ PixelWidth (API); PixelHeight (API); break; default: if (PLACEABLE (API)) { WMF_DEBUG (API,"map_mode: MM_DPI (placeable)"); P->dc->pixel_width = INCH_TO_POINT ((double) 1 / (double) DPI (API)); P->dc->pixel_height = INCH_TO_POINT ((double) 1 / (double) DPI (API)); map_mode = MM_DPI; /* [fjf] added this - uncertainly */ } else { WMF_ERROR (API,"unexpected mapping mode!"); API->err = wmf_E_BadFormat; } break; } P->dc->map_mode = map_mode; } static double PixelWidth (wmfAPI* API) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; switch (P->dc->map_mode) { case (MM_ISOTROPIC): /* scale here depends on window & viewport extents */ case (MM_ANISOTROPIC): if (P->dc->Window.width == 0) { WMF_ERROR (API,"PixelWidth: window has bad size!"); API->err = wmf_E_BadFormat; break; } if (P->Viewport_Width == 0) { WMF_ERROR (API,"PixelWidth: viewport has bad size!"); API->err = wmf_E_BadFormat; break; } P->dc->pixel_width = (double) P->Viewport_Width / (double) P->dc->Window.width; break; case (MM_TEXT): /* each unit is 1pt */ case (MM_LOMETRIC): /* each unit is 0.1mm */ case (MM_HIMETRIC): /* each unit is 0.01mm */ case (MM_LOENGLISH): /* each unit is 0.01 inch */ case (MM_HIENGLISH): /* each unit is 0.001 inch */ case (MM_TWIPS): /* each unit is 1/1440 inch */ case (MM_DPI): /* isotropic; placeable meta file */ if (P->dc->Window.width < 0) return -P->dc->pixel_width; break; default: if (!ERR (API)) { WMF_ERROR (API,"unexpected mapping mode!"); API->err = wmf_E_Glitch; } break; } if (ERR (API)) return (1); return (P->dc->pixel_width); } static double PixelHeight (wmfAPI* API) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; switch (P->dc->map_mode) { case (MM_ISOTROPIC): /* scale here depends on window & viewport extents */ case (MM_ANISOTROPIC): if (P->dc->Window.height == 0) { WMF_ERROR (API,"PixelHeight: window has bad size!"); API->err = wmf_E_BadFormat; break; } if (P->Viewport_Height == 0) { WMF_ERROR (API,"PixelHeight: viewport has bad size!"); API->err = wmf_E_BadFormat; break; } P->dc->pixel_height = (double) P->Viewport_Height / (double) P->dc->Window.height; break; case (MM_TEXT): /* each unit is 1pt */ case (MM_LOMETRIC): /* each unit is 0.1mm */ case (MM_HIMETRIC): /* each unit is 0.01mm */ case (MM_LOENGLISH): /* each unit is 0.01 inch */ case (MM_HIENGLISH): /* each unit is 0.001 inch */ case (MM_TWIPS): /* each unit is 1/1440 inch */ case (MM_DPI): /* isotropic; placeable meta file */ if (P->dc->Window.height < 0) return -P->dc->pixel_height; break; default: if (!ERR (API)) { WMF_ERROR (API,"unexpected mapping mode!"); API->err = wmf_E_Glitch; } break; } if (ERR (API)) return (1); return (P->dc->pixel_height); } #endif /* ! WMFPLAYER_COORD_H */ libwmf-0.2.8.4/src/player/dc.h0000644000077100007710000001076107324325170015335 0ustar fjffjf00000000000000/* libwmf ("player/dc.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_DC_H #define WMFPLAYER_DC_H static wmfDC* dc_copy (wmfAPI* API,wmfDC* dc) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfDC* dc_new = 0; wmfRegion* clip; wmfRegion* clip_new; wmfUserData_t userdata; dc_new = (wmfDC*) wmf_malloc (API,sizeof (wmfDC)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (0); } dc_new->clip = wmf_malloc (API,sizeof (wmfRegion)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); wmf_free (API,dc_new); return (0); } clip_new = (wmfRegion*) dc_new->clip; clip_new->numRects = 0; clip_new->size = 8; clip_new->rects = (wmfD_Rect*) wmf_malloc (API,clip_new->size * sizeof (wmfD_Rect)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); wmf_free (API,dc_new->clip); wmf_free (API,dc_new); return (0); } WMF_DC_SET_BACKGROUND (dc_new,&wmf_white); WMF_DC_SET_TEXTCOLOR (dc_new,&wmf_black); WMF_DC_SET_OPAQUE (dc_new); WMF_DC_SET_POLYFILL (dc_new,ALTERNATE); WMF_DC_SET_ROP (dc_new,R2_COPYPEN); WMF_DC_SET_TEXTALIGN (dc_new,TA_LEFT); WMF_DC_SET_CHAREXTRA (dc_new,0); WMF_DC_SET_BREAKEXTRA (dc_new,0); if (dc) { WMF_DC_SET_BRUSH (dc_new,dc->brush); WMF_DC_SET_PEN (dc_new,dc->pen ); WMF_DC_SET_FONT (dc_new,dc->font ); clip = (wmfRegion*) dc->clip; REGION_CopyRegion (API,clip_new,clip); dc_new->Window.Ox = dc->Window.Ox; dc_new->Window.Oy = dc->Window.Oy; dc_new->Window.width = dc->Window.width; dc_new->Window.height = dc->Window.height; dc_new->pixel_width = dc->pixel_width; dc_new->pixel_height = dc->pixel_height; dc_new->map_mode = dc->map_mode; userdata.dc = P->dc; userdata.data = P->dc->userdata; if (PLAY (API) && FR->udata_copy) FR->udata_copy (API,&userdata); dc_new->userdata = userdata.data; } else { SetDefaults (API,&(P->default_pen),&(P->default_brush),&(P->default_font)); WMF_DC_SET_BRUSH (dc_new,&(P->default_brush)); WMF_DC_SET_PEN (dc_new,&(P->default_pen )); WMF_DC_SET_FONT (dc_new,&(P->default_font )); dc_new->Window.Ox = 0; dc_new->Window.Oy = 0; dc_new->Window.width = 1024; dc_new->Window.height = 1024; dc_new->pixel_width = 1; dc_new->pixel_height = 1; dc_new->map_mode = MM_TEXT; userdata.dc = dc_new; userdata.data = 0; if (PLAY (API) && FR->udata_init) FR->udata_init (API,&userdata); dc_new->userdata = userdata.data; } return (dc_new); } static void dc_stack_push (wmfAPI* API,wmfDC* dc) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfDC** more = 0; if (ERR (API)) return; if (dc == 0) { API->err = wmf_E_Glitch; return; } if (P->dc_stack == 0) { P->dc_stack = (wmfDC**) wmf_malloc (API,8 * sizeof (wmfDC*)); if (ERR (API)) return; P->dc_stack_maxlen = 8; } if (P->dc_stack_length == P->dc_stack_maxlen) { more = (wmfDC**) wmf_realloc (API,P->dc_stack,(P->dc_stack_maxlen + 8) * sizeof (wmfDC*)); if (ERR (API)) return; P->dc_stack = more; P->dc_stack_maxlen += 8; } P->dc_stack[P->dc_stack_length] = dc; P->dc_stack_length++; } static wmfDC* dc_stack_pop (wmfAPI* API) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; if (ERR (API)) return (0); if (P->dc_stack_length == 0) { API->err = wmf_E_Glitch; return (0); } P->dc_stack_length--; return (P->dc_stack[P->dc_stack_length]); } static void dc_stack_free (wmfAPI* API) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; while (P->dc_stack_length) { P->dc_stack_length--; wmf_free (API,P->dc_stack[P->dc_stack_length]); } wmf_free (API,P->dc_stack); P->dc_stack = 0; P->dc_stack_maxlen = 0; } #endif /* ! WMFPLAYER_DC_H */ libwmf-0.2.8.4/src/player/defaults.h0000644000077100007710000000424607503067474016570 0ustar fjffjf00000000000000/* libwmf ("player/defaults.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_DEFAULTS_H #define WMFPLAYER_DEFAULTS_H static void SetDefaults (wmfAPI* API,wmfPen* pen,wmfBrush* brush,wmfFont* font) { wmfFontData* FD = (wmfFontData*) API->font_data; wmfBMP bmp; WMF_PEN_SET_COLOR (pen,&wmf_black); WMF_PEN_SET_WIDTH (pen,1); WMF_PEN_SET_HEIGHT (pen,1); WMF_PEN_SET_STYLE (pen,PS_SOLID); WMF_PEN_SET_ENDCAP (pen,PS_ENDCAP_ROUND); WMF_PEN_SET_JOIN (pen,PS_JOIN_ROUND); WMF_PEN_SET_TYPE (pen,PS_COSMETIC); bmp.width = 0; bmp.height = 0; bmp.data = 0; WMF_BRUSH_SET_COLOR (brush,&wmf_black); WMF_BRUSH_SET_STYLE (brush,BS_NULL); WMF_BRUSH_SET_HATCH (brush,HS_HORIZONTAL); WMF_BRUSH_SET_BITMAP (brush,&bmp); WMF_FONT_SET_HEIGHT (font,12); WMF_FONT_SET_WIDTH (font,12); WMF_FONT_SET_ESCAPEMENT (font, 0); WMF_FONT_SET_ORIENTATION (font, 0); WMF_FONT_SET_WEIGHT (font, 0); WMF_FONT_SET_ITALIC (font, 0); WMF_TEXT_SET_UNDERLINE (font, 0); WMF_TEXT_SET_STRIKEOUT (font, 0); WMF_FONT_SET_CHARSET (font, 0); WMF_FONT_SET_OUT (font, 0); WMF_FONT_SET_CLIP (font, 0); WMF_FONT_SET_QUALITY (font, 0); WMF_FONT_SET_PITCH (font, 0); WMF_FONT_SET_NAME (font,wmf_strdup (API,"Times")); font->user_data = 0; FD->map (API,font); } #endif /* ! WMFPLAYER_DEFAULTS_H */ libwmf-0.2.8.4/src/player/meta.h0000644000077100007710000024226610271767772015721 0ustar fjffjf00000000000000/* libwmf ("player/meta.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_META_H #define WMFPLAYER_META_H static int meta_mapmode (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; U16 par_U16; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } par_U16 = ParU16 (API,Record,0); WmfSetMapMode (API,par_U16); return (changed); } static int meta_orgext (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; S32 par_S32_x; S32 par_S32_y; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 1",Record->size); } par_S32_x = ParS32 (API,Record,1); par_S32_y = ParS32 (API,Record,0); switch (Record->function) { case META_SETWINDOWORG: P->dc->Window.Ox = par_S32_x; P->dc->Window.Oy = par_S32_y; break; case META_SETVIEWPORTORG: P->Viewport_Origin.x = (float) ((double) par_S32_x * P->dc->pixel_width ); P->Viewport_Origin.y = (float) ((double) par_S32_y * P->dc->pixel_height); break; case META_SETVIEWPORTEXT: P->Viewport_Width = par_S32_x; P->Viewport_Height = par_S32_y; PixelWidth (API); PixelHeight (API); /* Recalculate pixel size */ break; case META_SETWINDOWEXT: P->dc->Window.width = par_S32_x; P->dc->Window.height = par_S32_y; PixelWidth (API); PixelHeight (API); /* Recalculate pixel size */ break; case META_OFFSETWINDOWORG: P->dc->Window.Ox += par_S32_x; P->dc->Window.Oy += par_S32_y; break; case META_OFFSETVIEWPORTORG: P->Viewport_Origin.x += (float) ((double) par_S32_x * P->dc->pixel_width ); P->Viewport_Origin.y += (float) ((double) par_S32_y * P->dc->pixel_height); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } return (changed); } static int meta_scale (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; S32 par_S32_x1; S32 par_S32_x2; S32 par_S32_y1; S32 par_S32_y2; double x1; double x2; double y1; double y2; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 3",Record->size); } par_S32_x2 = ParS32 (API,Record,3); par_S32_x1 = ParS32 (API,Record,2); par_S32_y2 = ParS32 (API,Record,1); par_S32_y1 = ParS32 (API,Record,0); if ((par_S32_x1 == 0) || (par_S32_y1 == 0)) { WMF_ERROR (API,"meta file attempts division by zero!"); API->err = wmf_E_BadFormat; return (changed); } x2 = (double) par_S32_x2; x1 = (double) par_S32_x1; y2 = (double) par_S32_y2; y1 = (double) par_S32_y1; switch (Record->function) { case META_SCALEWINDOWEXT: P->dc->Window.width = (S32) (((double) P->dc->Window.width * x2) / x1); P->dc->Window.height = (S32) (((double) P->dc->Window.height * y2) / y1); break; case META_SCALEVIEWPORTEXT: P->Viewport_Width = (S32) (((double) P->Viewport_Width * x2) / x1); P->Viewport_Height = (S32) (((double) P->Viewport_Height * y2) / y1); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } PixelWidth (API); PixelHeight (API); /* Recalculate pixel size */ return (changed); } static int meta_moveto (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; U16 par_U16_x; U16 par_U16_y; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 1",Record->size); } par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); P->current = L_Coord (API,par_U16_x,par_U16_y); return (changed); } static int meta_flood (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfFlood_t flood; U16 par_U16_x; U16 par_U16_y; U16 par_U16_rg; U16 par_U16_b; U16 par_U16_t; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 4",Record->size); } par_U16_x = ParU16 (API,Record,4); par_U16_y = ParU16 (API,Record,3); par_U16_b = ParU16 (API,Record,2); par_U16_rg = ParU16 (API,Record,1); par_U16_t = ParU16 (API,Record,0); l_pt = L_Coord (API,par_U16_x,par_U16_y); flood.pt = wmf_D_Coord_translate (API,l_pt); flood.color = rgb (API,par_U16_rg,par_U16_b); if (SCAN (API)) { wmf_ipa_color_add (API,&(flood.color)); D_Coord_Register (API,flood.pt,0); return (changed); } flood.dc = P->dc; flood.type = par_U16_t; flood.pixel_width = ABS (P->dc->pixel_width ); flood.pixel_height = ABS (P->dc->pixel_height); switch (Record->function) { case META_FLOODFILL: if (FR->flood_interior) FR->flood_interior (API,&flood); break; case META_EXTFLOODFILL: if (FR->flood_exterior) FR->flood_exterior (API,&flood); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } return (changed); } static int meta_pixel (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfDrawPixel_t drawpixel; U16 par_U16_x; U16 par_U16_y; U16 par_U16_rg; U16 par_U16_b; float scope; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 3",Record->size); } par_U16_x = ParU16 (API,Record,3); par_U16_y = ParU16 (API,Record,2); par_U16_b = ParU16 (API,Record,1); par_U16_rg = ParU16 (API,Record,0); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawpixel.pt = wmf_D_Coord_translate (API,l_pt); drawpixel.color = rgb (API,par_U16_rg,par_U16_b); drawpixel.pixel_width = ABS (P->dc->pixel_width ); drawpixel.pixel_height = ABS (P->dc->pixel_height); if (SCAN (API)) { wmf_ipa_color_add (API,&(drawpixel.color)); scope = (float) MAX (drawpixel.pixel_width,drawpixel.pixel_height); D_Coord_Register (API,drawpixel.pt,scope); return (changed); } drawpixel.dc = P->dc; if (FR->draw_pixel) FR->draw_pixel (API,&drawpixel); return (changed); } static int meta_arc (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfD_Coord d_pt; wmfD_Coord c_pt; wmfDrawArc_t drawarc; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; U16 end_x; U16 end_y; char Qs; char Qe; float scope = 0; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 7",Record->size); } par_U16_x = ParU16 (API,Record,7); par_U16_y = ParU16 (API,Record,6); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawarc.TL = wmf_D_Coord_translate (API,l_pt); par_U16_x = ParU16 (API,Record,5); par_U16_y = ParU16 (API,Record,4); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawarc.BR = wmf_D_Coord_translate (API,l_pt); par_U16_x = ParU16 (API,Record,3); par_U16_y = ParU16 (API,Record,2); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawarc.end = wmf_D_Coord_translate (API,l_pt); end_x = par_U16_x; end_y = par_U16_y; par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); if ((end_x == par_U16_x) && (end_y == par_U16_y)) { /* start == end: This is probably an ellipse... TODO */ } l_pt = L_Coord (API,par_U16_x,par_U16_y); drawarc.start = wmf_D_Coord_translate (API,l_pt); if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; D_Coord_Register (API,drawarc.end,scope); D_Coord_Register (API,drawarc.start,scope); } c_pt.x = (drawarc.TL.x + drawarc.BR.x) / 2; /* ellipse origin */ c_pt.y = (drawarc.TL.y + drawarc.BR.y) / 2; drawarc.start.x -= c_pt.x; drawarc.start.y -= c_pt.y; drawarc.end.x -= c_pt.x; drawarc.end.y -= c_pt.y; if (SCAN (API)) { if ((drawarc.start.x > 0) && (drawarc.start.y >= 0)) Qs = '1'; else if ((drawarc.start.x <= 0) && (drawarc.start.y > 0)) Qs = '2'; else if ((drawarc.start.x < 0) && (drawarc.start.y <= 0)) Qs = '3'; else Qs = '4'; if ((drawarc.end.x > 0) && (drawarc.end.y >= 0)) Qe = '1'; else if ((drawarc.end.x <= 0) && (drawarc.end.y > 0)) Qe = '2'; else if ((drawarc.end.x < 0) && (drawarc.end.y <= 0)) Qe = '3'; else Qe = '4'; switch (Qs) { case '1': switch (Qe) { case '1': if ( (drawarc.end.x < drawarc.start.x) || (drawarc.end.y < drawarc.start.y)) break; d_pt.x = drawarc.BR.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); case '4': d_pt.x = c_pt.x; d_pt.y = drawarc.BR.y; D_Coord_Register (API,d_pt,scope); case '3': d_pt.x = drawarc.TL.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); case '2': d_pt.x = c_pt.x; d_pt.y = drawarc.TL.y; D_Coord_Register (API,d_pt,scope); break; default: WMF_ERROR (API,"Glitch!"); API->err = wmf_E_Glitch; break; } break; case '2': switch (Qe) { case '2': if ( (drawarc.end.x < drawarc.start.x) || (drawarc.end.y > drawarc.start.y)) break; d_pt.x = c_pt.x; d_pt.y = drawarc.TL.y; D_Coord_Register (API,d_pt,scope); case '1': d_pt.x = drawarc.BR.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); case '4': d_pt.x = c_pt.x; d_pt.y = drawarc.BR.y; D_Coord_Register (API,d_pt,scope); case '3': d_pt.x = drawarc.TL.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); break; default: WMF_ERROR (API,"Glitch!"); API->err = wmf_E_Glitch; break; } break; case '3': switch (Qe) { case '3': if ( (drawarc.end.x > drawarc.start.x) || (drawarc.end.y > drawarc.start.y)) break; d_pt.x = drawarc.TL.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); case '2': d_pt.x = c_pt.x; d_pt.y = drawarc.TL.y; D_Coord_Register (API,d_pt,scope); case '1': d_pt.x = drawarc.BR.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); case '4': d_pt.x = c_pt.x; d_pt.y = drawarc.BR.y; D_Coord_Register (API,d_pt,scope); break; default: WMF_ERROR (API,"Glitch!"); API->err = wmf_E_Glitch; break; } break; case '4': switch (Qe) { case '4': if ( (drawarc.end.x > drawarc.start.x) || (drawarc.end.y < drawarc.start.y)) break; d_pt.x = c_pt.x; d_pt.y = drawarc.BR.y; D_Coord_Register (API,d_pt,scope); case '3': d_pt.x = drawarc.TL.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); case '2': d_pt.x = c_pt.x; d_pt.y = drawarc.TL.y; D_Coord_Register (API,d_pt,scope); case '1': d_pt.x = drawarc.BR.x; d_pt.y = c_pt.y; D_Coord_Register (API,d_pt,scope); break; default: WMF_ERROR (API,"Glitch!"); API->err = wmf_E_Glitch; break; } break; default: WMF_ERROR (API,"Glitch!"); API->err = wmf_E_Glitch; break; } return (changed); } d_pt.x = (drawarc.BR.x - drawarc.TL.x) / 2; /* elliptic axes */ d_pt.y = (drawarc.BR.y - drawarc.TL.y) / 2; if ((drawarc.start.x == 0) && (drawarc.start.y == 0)) drawarc.start.x = d_pt.x; if (drawarc.start.x > d_pt.x ) drawarc.start.x = d_pt.x; if (drawarc.start.x < (-d_pt.x)) drawarc.start.x = - d_pt.x; if (drawarc.start.y > d_pt.y ) drawarc.start.y = d_pt.y; if (drawarc.start.y < (-d_pt.y)) drawarc.start.y = - d_pt.y; if ((drawarc.end.x == 0) && (drawarc.end.y == 0)) drawarc.end.x = d_pt.x; if (drawarc.end.x > d_pt.x ) drawarc.end.x = d_pt.x; if (drawarc.end.x < (-d_pt.x)) drawarc.end.x = - d_pt.x; if (drawarc.end.y > d_pt.y ) drawarc.end.y = d_pt.y; if (drawarc.end.y < (-d_pt.y)) drawarc.end.y = - d_pt.y; drawarc.dc = P->dc; switch (Record->function) { case META_PIE: if (FR->draw_pie) FR->draw_pie (API,&drawarc); break; case META_CHORD: if (FR->draw_chord) FR->draw_chord (API,&drawarc); break; case META_ARC: if (FR->draw_arc) FR->draw_arc (API,&drawarc); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } return (changed); } static int meta_ellipse (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfDrawArc_t drawarc; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; float scope; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 3",Record->size); } par_U16_x = ParU16 (API,Record,3); par_U16_y = ParU16 (API,Record,2); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawarc.TL = wmf_D_Coord_translate (API,l_pt); par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawarc.BR = wmf_D_Coord_translate (API,l_pt); if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; D_Coord_Register (API,drawarc.TL,scope); D_Coord_Register (API,drawarc.BR,scope); return (changed); } drawarc.dc = P->dc; if (FR->draw_ellipse) FR->draw_ellipse (API,&drawarc); return (changed); } static int meta_line (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfDrawLine_t drawline; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; float scope; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 1",Record->size); } drawline.from = wmf_D_Coord_translate (API,P->current); par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawline.to = wmf_D_Coord_translate (API,l_pt); P->current = l_pt; if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; D_Coord_Register (API,drawline.from,scope); D_Coord_Register (API,drawline.to,scope); return (changed); } drawline.dc = P->dc; if (FR->draw_line) FR->draw_line (API,&drawline); return (changed); } static int meta_lines (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfD_Coord d_pt; wmfPolyLine_t polyline; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; U16 i; unsigned long index; float scope; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } polyline.count = ParU16 (API,Record,0); if (SCAN (API) && DIAG (API)) { fprintf (stderr,",%lu",(unsigned long) (2 * polyline.count)); } if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; index = 1; for (i = 0; i < polyline.count; i++) { par_U16_x = ParU16 (API,Record,index); index++; par_U16_y = ParU16 (API,Record,index); index++; l_pt = L_Coord (API,par_U16_x,par_U16_y); d_pt = wmf_D_Coord_translate (API,l_pt); D_Coord_Register (API,d_pt,scope); } return (changed); } polyline.pt = (wmfD_Coord*) wmf_malloc (API,polyline.count * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } index = 1; for (i = 0; i < polyline.count; i++) { par_U16_x = ParU16 (API,Record,index); index++; par_U16_y = ParU16 (API,Record,index); index++; l_pt = L_Coord (API,par_U16_x,par_U16_y); polyline.pt[i] = wmf_D_Coord_translate (API,l_pt); } polyline.dc = P->dc; if (FR->poly_line) FR->poly_line (API,&polyline); wmf_free (API,polyline.pt); return (changed); } static int meta_polygon (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfD_Coord d_pt; wmfPolyLine_t polyline; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; U16 i; unsigned long index; float scope; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } polyline.count = ParU16 (API,Record,0); if (SCAN (API) && DIAG (API)) { fprintf (stderr,",%lu",(unsigned long) (2 * polyline.count)); } if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; index = 1; for (i = 0; i < polyline.count; i++) { par_U16_x = ParU16 (API,Record,index); index++; par_U16_y = ParU16 (API,Record,index); index++; l_pt = L_Coord (API,par_U16_x,par_U16_y); d_pt = wmf_D_Coord_translate (API,l_pt); D_Coord_Register (API,d_pt,scope); } return (changed); } polyline.pt = (wmfD_Coord*) wmf_malloc (API,polyline.count * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } index = 1; for (i = 0; i < polyline.count; i++) { par_U16_x = ParU16 (API,Record,index); index++; par_U16_y = ParU16 (API,Record,index); index++; l_pt = L_Coord (API,par_U16_x,par_U16_y); polyline.pt[i] = wmf_D_Coord_translate (API,l_pt); } polyline.dc = P->dc; if (FR->draw_polygon) FR->draw_polygon (API,&polyline); wmf_free (API,polyline.pt); return (changed); } static int meta_polygons (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfD_Coord d_pt; wmfPolyLine_t polyline; wmfPolyPoly_t polypoly; wmfRecord Polygon; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; U16 num_pars; U16 count; U16 style; U16 i; U16 j; unsigned long index; float scope; int skip_record; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } polypoly.npoly = ParU16 (API,Record,0); if (polypoly.npoly == 0) return (changed); if (SCAN (API) && DIAG (API)) { fprintf (stderr,",%lu",(unsigned long) polypoly.npoly); } polypoly.pt = (wmfD_Coord**) wmf_malloc (API, polypoly.npoly * sizeof (wmfD_Coord*)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polypoly.count = (U16*) wmf_malloc (API, polypoly.npoly * sizeof (U16)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } count = 0; num_pars = 0; skip_record = 0; for (i = 0; i < polypoly.npoly; i++) { polypoly.count[i] = ParU16 (API,Record,(unsigned long) (1 + i)); count += polypoly.count[i] + 2; /* for polypoly->polyline fill constructor */ num_pars += polypoly.count[i]; if ((polypoly.count[i] < 3) && (skip_record == 0)) { WMF_DEBUG (API,"strange polygon in polypolygon list; skipping record..."); skip_record = 1; } if (skip_record) { polypoly.pt[i] = 0; } else { polypoly.pt[i] = (wmfD_Coord*) wmf_malloc (API, polypoly.count[i] * sizeof (wmfD_Coord)); if (ERR (API)) break; } } if (skip_record) { for (i = 0; i < polypoly.npoly; i++) { if (polypoly.pt[i]) wmf_free (API, polypoly.pt[i]); } wmf_free (API, polypoly.pt); wmf_free (API, polypoly.count); return (changed); } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } if (SCAN (API) && DIAG (API)) { fprintf (stderr,",%lu",(unsigned long) (polypoly.npoly + 2 * num_pars)); } if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; index = 1 + polypoly.npoly; for (i = 0; i < num_pars; i++) { par_U16_x = ParU16 (API,Record,index); index++; par_U16_y = ParU16 (API,Record,index); index++; l_pt = L_Coord (API,par_U16_x,par_U16_y); d_pt = wmf_D_Coord_translate (API,l_pt); D_Coord_Register (API,d_pt,scope); } return (changed); } polypoly.dc = P->dc; Polygon = OffsetRecord (API,Record,(unsigned long) (1 + polypoly.npoly)); for (i = 0; i < polypoly.npoly; i++) { polyline.count = polypoly.count[i]; index = 0; for (j = 0; j < polyline.count; j++) { par_U16_x = ParU16 (API,&Polygon,index); index++; par_U16_y = ParU16 (API,&Polygon,index); index++; l_pt = L_Coord (API,par_U16_x,par_U16_y); polypoly.pt[i][j] = wmf_D_Coord_translate (API,l_pt); } Polygon = OffsetRecord (API,&Polygon,index); } if (FR->draw_polypolygon) { FR->draw_polypolygon (API,&polypoly); } else if (FR->draw_polygon) { if (TO_FILL (&polypoly)) { style = polypoly.dc->pen->lopnStyle; /* [TODO: use macros ??] */ polypoly.dc->pen->lopnStyle = PS_NULL; polyline.dc = polypoly.dc; polyline.pt = (wmfD_Coord*) wmf_malloc (API, count * sizeof (wmfD_Coord)); polyline.count = 0; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polypoly_construct (API, &polypoly, &polyline, 0); if (polyline.count > 2) FR->draw_polygon (API,&polyline); wmf_free (API, polyline.pt); polypoly.dc->pen->lopnStyle = style; } if (TO_DRAW (&polypoly)) { style = polypoly.dc->brush->lbStyle; /* [TODO: use macros ??] */ polypoly.dc->brush->lbStyle = BS_NULL; for (i = 0; i < polypoly.npoly; i++) { polyline.dc = polypoly.dc; polyline.pt = polypoly.pt[i]; polyline.count = polypoly.count[i]; if ((polyline.count > 2) && polyline.pt) { FR->draw_polygon (API,&polyline); } } polypoly.dc->brush->lbStyle = style; } } for (i = 0; i < polypoly.npoly; i++) { if (polypoly.pt[i]) wmf_free (API, polypoly.pt[i]); } wmf_free (API, polypoly.pt); wmf_free (API, polypoly.count); return (changed); } static void polypoly_construct (wmfAPI* API,wmfPolyPoly_t* polypoly,wmfPolyLine_t* polyline,U16 ipoly) { U16 count = polypoly->count[ipoly]; U16 i; U16 imin; U16 last; double x2; double y2; double r2; double r2_min = 0; if ((polyline->pt == 0) || (polypoly->pt == 0)) return; /* erk!! */ if ((polypoly->pt[ipoly] == 0) || (polypoly->count[ipoly] < 3)) return; while ((polypoly->pt[ipoly][0].x == polypoly->pt[ipoly][count-1].x) && (polypoly->pt[ipoly][0].y == polypoly->pt[ipoly][count-1].y)) { count--; if (count < 3) break; } if (count < 3) return; last = 0; if (ipoly < (polypoly->npoly - 1)) { if ((polypoly->pt[ipoly+1] == 0) || (polypoly->count[ipoly+1] < 3)) { last = 1; /* erk!! */ } } else { last = 1; /* last poly, yay! */ } if (last) { for (i = 0; i < count; i++) { polyline->pt[polyline->count].x = polypoly->pt[ipoly][i].x; polyline->pt[polyline->count].y = polypoly->pt[ipoly][i].y; polyline->count++; } polyline->pt[polyline->count].x = polypoly->pt[ipoly][0].x; polyline->pt[polyline->count].y = polypoly->pt[ipoly][0].y; polyline->count++; return; } /* find polygon point closest to point 0 in next polygon [TODO: improve this??] */ imin = 0; for (i = 0; i < count; i++) { x2 = (double) polypoly->pt[ipoly][i].x - (double) polypoly->pt[ipoly+1][0].x; x2 *= x2; y2 = (double) polypoly->pt[ipoly][i].y - (double) polypoly->pt[ipoly+1][0].y; y2 *= y2; r2 = x2 + y2; if (i == 0) { r2_min = r2; } else if (r2 < r2_min) { r2_min = r2; imin = i; } } for (i = 0; i <= imin; i++) { polyline->pt[polyline->count].x = polypoly->pt[ipoly][i].x; polyline->pt[polyline->count].y = polypoly->pt[ipoly][i].y; polyline->count++; } polypoly_construct (API, polypoly, polyline, (U16)(ipoly + 1)); for (i = imin; i < count; i++) { polyline->pt[polyline->count].x = polypoly->pt[ipoly][i].x; polyline->pt[polyline->count].y = polypoly->pt[ipoly][i].y; polyline->count++; } polyline->pt[polyline->count].x = polypoly->pt[ipoly][0].x; polyline->pt[polyline->count].y = polypoly->pt[ipoly][0].y; polyline->count++; } static int meta_round (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfDrawRectangle_t drawrect; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; float scope; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 5",Record->size); } par_U16_x = ParU16 (API,Record,5); par_U16_y = ParU16 (API,Record,4); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawrect.TL = wmf_D_Coord_translate (API,l_pt); par_U16_x = ParU16 (API,Record,3); par_U16_y = ParU16 (API,Record,2); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawrect.BR = wmf_D_Coord_translate (API,l_pt); if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; D_Coord_Register (API,drawrect.TL,scope); D_Coord_Register (API,drawrect.BR,scope); return (changed); } par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); drawrect.width = (float) ((double) par_U16_x * ABS (P->dc->pixel_width )); drawrect.height = (float) ((double) par_U16_y * ABS (P->dc->pixel_height)); drawrect.dc = P->dc; if (FR->draw_rectangle) FR->draw_rectangle (API,&drawrect); return (changed); } static int meta_rect (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfL_Coord l_pt; wmfDrawRectangle_t drawrect; wmfPen* pen = 0; U16 par_U16_x; U16 par_U16_y; float scope; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 3",Record->size); } par_U16_x = ParU16 (API,Record,3); par_U16_y = ParU16 (API,Record,2); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawrect.TL = wmf_D_Coord_translate (API,l_pt); par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawrect.BR = wmf_D_Coord_translate (API,l_pt); if (SCAN (API)) { pen = WMF_DC_PEN (P->dc); scope = (float) (MAX (WMF_PEN_WIDTH (pen),WMF_PEN_HEIGHT (pen))) / 2; D_Coord_Register (API,drawrect.TL,scope); D_Coord_Register (API,drawrect.BR,scope); return (changed); } drawrect.width = 0; drawrect.height = 0; drawrect.dc = P->dc; if (FR->draw_rectangle) FR->draw_rectangle (API,&drawrect); return (changed); } static int meta_rgn_brush (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfObject* objects; wmfObject* obj_region; wmfObject* obj_brush; wmfRegion* region; wmfRegion* clip; wmfBrush* brush; wmfBrush* temp_brush; wmfD_Coord d_pt; wmfPolyRectangle_t polyrect; U16 oid_region; U16 oid_brush; U16 par_U16_x; U16 par_U16_y; unsigned int i; unsigned long max_index; float width; float height; objects = P->objects; if (Record->function == META_FRAMEREGION) { max_index = 3; } else { max_index = 1; } if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = %lu",Record->size,max_index); } oid_region = ParU16 (API,Record,0); oid_brush = ParU16 (API,Record,1); if ((oid_region >= NUM_OBJECTS (API)) || (oid_brush >= NUM_OBJECTS (API))) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } obj_region = objects + oid_region; obj_brush = objects + oid_brush; if (SCAN (API) && DIAG (API)) { diagnose_object (API,(unsigned int) oid_region,obj_region); diagnose_object (API,(unsigned int) oid_brush, obj_brush ); } if ((obj_region->type != OBJ_REGION) || (obj_brush->type != OBJ_BRUSH)) { WMF_ERROR (API,"libwmf: have lost track of the objects in this metafile"); WMF_ERROR (API," please send it to us at http://www.wvware.com/"); API->err = wmf_E_Glitch; return (changed); } region = &(obj_region->obj.rgn); brush = &(obj_brush->obj.brush); if (Record->function == META_FRAMEREGION) { par_U16_x = ParU16 (API,Record,3); par_U16_y = ParU16 (API,Record,2); width = (float) ((double) par_U16_x * ABS (P->dc->pixel_width )); height = (float) ((double) par_U16_y * ABS (P->dc->pixel_height)); } else { width = 0; height = 0; } if (SCAN (API)) { d_pt = region->extents.TL; d_pt.x -= width; d_pt.y -= height; D_Coord_Register (API,d_pt,0); d_pt = region->extents.BR; d_pt.x += width; d_pt.y += height; D_Coord_Register (API,d_pt,0); return (changed); } polyrect.dc = P->dc; polyrect.TL = 0; polyrect.BR = 0; polyrect.count = 0; polyrect.width = 0; polyrect.height = 0; if (FR->region_clip) FR->region_clip (API,&polyrect); /* i.e., none */ clip = (wmfRegion*) P->dc->clip; polyrect.count = MAX (clip->numRects,region->numRects + 1); polyrect.TL = (wmfD_Coord*) wmf_malloc (API,polyrect.count * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.BR = (wmfD_Coord*) wmf_malloc (API,polyrect.count * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.count = region->numRects; for (i = 0; i < polyrect.count; i++) { polyrect.TL[i] = region->rects[i].TL; polyrect.BR[i] = region->rects[i].BR; } i = polyrect.count; polyrect.TL[i] = region->extents.TL; polyrect.BR[i] = region->extents.BR; polyrect.width = width; polyrect.height = height; switch (Record->function) { case META_FRAMEREGION: if (FR->region_frame) { temp_brush = WMF_DC_BRUSH (polyrect.dc); /* ultimately redundant ?? */ WMF_DC_SET_BRUSH (polyrect.dc,brush); FR->region_frame (API,&polyrect); WMF_DC_SET_BRUSH (polyrect.dc,temp_brush); /* ultimately redundant ?? */ } break; case META_FILLREGION: if (FR->region_paint) { temp_brush = WMF_DC_BRUSH (polyrect.dc); /* ultimately redundant ?? */ WMF_DC_SET_BRUSH (polyrect.dc,brush); FR->region_paint (API,&polyrect); WMF_DC_SET_BRUSH (polyrect.dc,temp_brush); /* ultimately redundant ?? */ } break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } polyrect.count = clip->numRects; for (i = 0; i < polyrect.count; i++) { polyrect.TL[i] = clip->rects[i].TL; polyrect.BR[i] = clip->rects[i].BR; } polyrect.width = 0; polyrect.height = 0; if (FR->region_clip) FR->region_clip (API,&polyrect); wmf_free (API,polyrect.TL); wmf_free (API,polyrect.BR); return (changed); } static int meta_rgn_paint (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfObject* objects; wmfObject* obj_region; wmfRegion* region; wmfRegion* clip; wmfD_Coord d_pt; wmfPolyRectangle_t polyrect; U16 oid_region; U16 temp_rop; unsigned int i; objects = P->objects; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } oid_region = ParU16 (API,Record,0); if (oid_region >= NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } obj_region = objects + oid_region; if (SCAN (API) && DIAG (API)) { diagnose_object (API,(unsigned int) oid_region,obj_region); } if (obj_region->type != OBJ_REGION) { WMF_ERROR (API,"libwmf: have lost track of the objects in this metafile"); WMF_ERROR (API," please send it to us at http://www.wvware.com/"); API->err = wmf_E_Glitch; return (changed); } region = &(obj_region->obj.rgn); if (SCAN (API)) { d_pt = region->extents.TL; D_Coord_Register (API,d_pt,0); d_pt = region->extents.BR; D_Coord_Register (API,d_pt,0); return (changed); } polyrect.dc = P->dc; polyrect.TL = 0; polyrect.BR = 0; polyrect.count = 0; polyrect.width = 0; polyrect.height = 0; if (FR->region_clip) FR->region_clip (API,&polyrect); /* i.e., none */ clip = (wmfRegion*) P->dc->clip; polyrect.count = MAX (clip->numRects,region->numRects + 1); polyrect.TL = (wmfD_Coord*) wmf_malloc (API,polyrect.count * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.BR = (wmfD_Coord*) wmf_malloc (API,polyrect.count * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.count = region->numRects; for (i = 0; i < polyrect.count; i++) { polyrect.TL[i] = region->rects[i].TL; polyrect.BR[i] = region->rects[i].BR; } i = polyrect.count; polyrect.TL[i] = region->extents.TL; polyrect.BR[i] = region->extents.BR; switch (Record->function) { case META_INVERTREGION: if (FR->region_paint) { temp_rop = WMF_DC_ROP (polyrect.dc); /* ultimately redundant ?? */ WMF_DC_SET_ROP (polyrect.dc,R2_NOT); FR->region_paint (API,&polyrect); WMF_DC_SET_ROP (polyrect.dc,temp_rop); /* ultimately redundant ?? */ } break; case META_PAINTREGION: if (FR->region_paint) FR->region_paint (API,&polyrect); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } polyrect.count = clip->numRects; for (i = 0; i < polyrect.count; i++) { polyrect.TL[i] = clip->rects[i].TL; polyrect.BR[i] = clip->rects[i].BR; } if (FR->region_clip) FR->region_clip (API,&polyrect); wmf_free (API,polyrect.TL); wmf_free (API,polyrect.BR); return (changed); } static int meta_rgn_create (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfRecord start; wmfRecord end; wmfObject* objects; wmfObject* obj_region; wmfRegion* region; wmfRegion temp_region; wmfD_Rect d_r; U16 i; U16 oid_region; U16 x1; U16 x2; U16 y1; U16 y2; U16 band; U16 num_band; U16 num_pair; U16 count; unsigned long max_index; objects = P->objects; i = 0; while (objects[i].type && (i < NUM_OBJECTS (API))) i++; if (i == NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } oid_region = i; obj_region = objects + oid_region; obj_region->type = OBJ_REGION; region = &(obj_region->obj.rgn); region->rects = (wmfD_Rect*) wmf_malloc (API,8 * sizeof (wmfD_Rect)); region->size = 8; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } WmfSetRectRgn (API,region,0); if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; index 0-4,6-10 skipped; max. index = 5",Record->size); diagnose_object (API,(unsigned int) oid_region,obj_region); } num_band = ParU16 (API,Record,5); if (num_band == 0) return (changed); temp_region.rects = (wmfD_Rect*) wmf_malloc (API,8 * sizeof (wmfD_Rect)); temp_region.size = 8; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } WmfSetRectRgn (API,&temp_region,0); end = OffsetRecord (API,Record,10); max_index = 10; for (band = 0; band < num_band; band++) { max_index++; if (SCAN (API) && DIAG (API)) { fprintf (stderr,",%lu",max_index); } start = OffsetRecord (API,&end,1); count = ParU16 (API,&start,0); if (count & 1) { WMF_ERROR (API,"Delimiter not even!"); API->err = wmf_E_BadFormat; break; } num_pair = count >> 1; max_index += count + 3; if (SCAN (API) && DIAG (API)) { fprintf (stderr,",%lu",max_index); } end = OffsetRecord (API,&start,(unsigned long) (count + 3)); if (ParU16 (API,&end,0) != count) { WMF_ERROR (API,"Mismatched delimiters!"); API->err = wmf_E_BadFormat; break; } y1 = ParU16 (API,&start,1); y2 = ParU16 (API,&start,2); for (i = 0; i < num_pair; i++) { x1 = ParU16 (API,&start,(unsigned long) (3 + 2 * i)); x2 = ParU16 (API,&start,(unsigned long) (4 + 2 * i)); D_Rect (API,&d_r,x1,y1,x2,y2); WmfSetRectRgn (API,&temp_region,&d_r); WmfCombineRgn (API,region,region,&temp_region,RGN_OR); } } wmf_free (API,temp_region.rects); return (changed); } static int meta_clip_select (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfObject* objects; wmfObject* obj_region; wmfRegion* region; wmfRegion* clip; U16 oid_region; objects = P->objects; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } oid_region = ParU16 (API,Record,0); if (oid_region >= NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } obj_region = objects + oid_region; if (SCAN (API) && DIAG (API)) { diagnose_object (API,(unsigned int) oid_region,obj_region); } if (obj_region->type != OBJ_REGION) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { /* Some metafiles use this even though no region-objects have been defined, * so I have some doubt about the correctness of this handler; perhaps * this should reset the clip region to the entire space? * * Anyway, I am making this particular error non-fatal. */ WMF_DEBUG (API,"libwmf: have lost track of the objects in this metafile"); WMF_DEBUG (API," please send it to us at http://www.wvware.com/"); } else { WMF_ERROR (API,"libwmf: have lost track of the objects in this metafile"); WMF_ERROR (API," please send it to us at http://www.wvware.com/"); API->err = wmf_E_Glitch; } return (changed); } region = &(obj_region->obj.rgn); clip = (wmfRegion*) P->dc->clip; WmfCombineRgn (API,clip,region,0,RGN_COPY); return (changed); } static int meta_clip_offset (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfRegion* clip; wmfPolyRectangle_t polyrect; wmfL_Coord l_pt; U16 par_U16_x; U16 par_U16_y; unsigned int i; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 1",Record->size); } clip = (wmfRegion*) P->dc->clip; par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); l_pt = L_Coord (API,par_U16_x,par_U16_y); for (i = 0; i < clip->numRects; i++) { clip->rects[i].TL.x += l_pt.x; clip->rects[i].TL.y += l_pt.y; clip->rects[i].BR.x += l_pt.x; clip->rects[i].BR.y += l_pt.y; } clip->extents.TL.x += l_pt.x; clip->extents.TL.y += l_pt.y; clip->extents.BR.x += l_pt.x; clip->extents.BR.y += l_pt.y; if (SCAN (API)) return (changed); polyrect.TL = (wmfD_Coord*) wmf_malloc (API,clip->numRects * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.BR = (wmfD_Coord*) wmf_malloc (API,clip->numRects * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.count = clip->numRects; for (i = 0; i < polyrect.count; i++) { polyrect.TL[i] = clip->rects[i].TL; polyrect.BR[i] = clip->rects[i].BR; } polyrect.dc = P->dc; polyrect.width = 0; polyrect.height = 0; if (FR->region_clip) FR->region_clip (API,&polyrect); wmf_free (API,polyrect.TL); wmf_free (API,polyrect.BR); return (changed); } static int meta_clip_combine (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfRegion* visible; wmfRegion* clip; wmfPolyRectangle_t polyrect; wmfD_Rect d_r; U16 x1; U16 x2; U16 y1; U16 y2; unsigned int i; visible = &(P->visible); if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 3",Record->size); } x1 = ParU16 (API,Record,3); y1 = ParU16 (API,Record,2); x2 = ParU16 (API,Record,1); y2 = ParU16 (API,Record,0); D_Rect (API,&d_r,x1,y1,x2,y2); clip = (wmfRegion*) P->dc->clip; switch (Record->function) { case META_EXCLUDECLIPRECT: Clipping (API,clip,visible,&d_r,CLIP_EXCLUDE); break; case META_INTERSECTCLIPRECT: Clipping (API,clip,visible,&d_r,CLIP_INTERSECT); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } if (SCAN (API)) return (changed); polyrect.TL = (wmfD_Coord*) wmf_malloc (API,clip->numRects * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.BR = (wmfD_Coord*) wmf_malloc (API,clip->numRects * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.count = clip->numRects; for (i = 0; i < polyrect.count; i++) { polyrect.TL[i] = clip->rects[i].TL; polyrect.BR[i] = clip->rects[i].BR; } polyrect.dc = P->dc; polyrect.width = 0; polyrect.height = 0; if (FR->region_clip) FR->region_clip (API,&polyrect); wmf_free (API,polyrect.TL); wmf_free (API,polyrect.BR); return (changed); } static int meta_dib_draw (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfRecord bmp_record; wmfBMP_Read_t bmp_read; wmfBMP_Draw_t bmp_draw; wmfL_Coord l_pt_TL; wmfL_Coord l_pt; wmfD_Coord d_pt; U16 par_U16_x = 0; U16 par_U16_y = 0; U16 par_U16_w = 0; U16 par_U16_h = 0; S32 width; S32 height; long pos_current; double stretch_x; double stretch_y; if ((Record->function == META_DIBBITBLT) && ((Record->size) == 9)) /* Special case... */ { changed = meta_rop_draw (API,Record,attrlist); return (changed); } if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); } switch (Record->function) { case META_SETDIBTODEV: if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; index 0 skipped; max. index = 8",Record->size); } par_U16_x = ParU16 (API,Record,8); par_U16_y = ParU16 (API,Record,7); par_U16_w = ParU16 (API,Record,6); par_U16_h = ParU16 (API,Record,5); bmp_draw.crop.w = par_U16_w; bmp_draw.crop.h = par_U16_h; bmp_draw.crop.x = ParU16 (API,Record,4); bmp_draw.crop.y = ParU16 (API,Record,3); bmp_read.width = ParU16 (API,Record,2); /* uncertain about this ?? */ bmp_read.height = ParU16 (API,Record,1); bmp_draw.type = SRCCOPY; bmp_record = OffsetRecord (API,Record,9); break; case META_STRETCHDIB: if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; index 2 skipped; max. index = 10",Record->size); } par_U16_x = ParU16 (API,Record,10); par_U16_y = ParU16 (API,Record,9); par_U16_w = ParU16 (API,Record,8); par_U16_h = ParU16 (API,Record,7); bmp_draw.crop.x = ParU16 (API,Record,6); bmp_draw.crop.y = ParU16 (API,Record,5); bmp_draw.crop.w = ParU16 (API,Record,4); bmp_draw.crop.h = ParU16 (API,Record,3); bmp_read.width = 0; bmp_read.height = 0; bmp_draw.type = (U32) ParU16 (API,Record,0) + (((U32) ParU16 (API,Record,1)) << 16); bmp_record = OffsetRecord (API,Record,11); break; case META_DIBSTRETCHBLT: if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; max. index = 9",Record->size); } par_U16_x = ParU16 (API,Record,9); par_U16_y = ParU16 (API,Record,8); par_U16_w = ParU16 (API,Record,7); par_U16_h = ParU16 (API,Record,6); bmp_draw.crop.x = ParU16 (API,Record,5); bmp_draw.crop.y = ParU16 (API,Record,4); bmp_draw.crop.w = ParU16 (API,Record,3); bmp_draw.crop.h = ParU16 (API,Record,2); bmp_read.width = 0; bmp_read.height = 0; bmp_draw.type = (U32) ParU16 (API,Record,0) + (((U32) ParU16 (API,Record,1)) << 16); bmp_record = OffsetRecord (API,Record,10); break; case META_DIBBITBLT: WMF_DEBUG (API,"(play) META_DIBBITBLT"); if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; max. index = 7",Record->size); } par_U16_x = ParU16 (API,Record,7); par_U16_y = ParU16 (API,Record,6); par_U16_w = ParU16 (API,Record,5); par_U16_h = ParU16 (API,Record,4); bmp_draw.crop.x = ParU16 (API,Record,3); bmp_draw.crop.y = ParU16 (API,Record,2); bmp_draw.crop.w = par_U16_w; bmp_draw.crop.h = par_U16_h; bmp_read.width = 0; bmp_read.height = 0; bmp_draw.type = (U32) ParU16 (API,Record,0) + (((U32) ParU16 (API,Record,1)) << 16); bmp_record = OffsetRecord (API,Record,8); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } if ((par_U16_w == 0) || (par_U16_h == 0) || (bmp_draw.crop.w == 0) || (bmp_draw.crop.h == 0)) { return (changed); } l_pt_TL = L_Coord (API,par_U16_x,par_U16_y); bmp_draw.pt = wmf_D_Coord_translate (API,l_pt_TL); l_pt = L_Coord (API,par_U16_w,par_U16_h); width = ABS (l_pt.x); height = ABS (l_pt.y); if (SCAN (API)) { D_Coord_Register (API,bmp_draw.pt,0); l_pt.x = l_pt_TL.x + width; l_pt.y = l_pt_TL.y + height; d_pt = wmf_D_Coord_translate (API,l_pt); D_Coord_Register (API,d_pt,0); return (changed); } pos_current = WMF_TELL (API); if (pos_current < 0) { WMF_ERROR (API,"API's tell() failed on input stream!"); API->err = wmf_E_BadFile; return (changed); } bmp_read.offset = bmp_record.position; bmp_read.buffer = bmp_record.parameter; bmp_read.length = (long) (bmp_record.size) * 2; bmp_read.bmp.data = 0; if (FR->bmp_read) FR->bmp_read (API,&bmp_read); if (ERR (API) || (bmp_read.bmp.data == 0)) { WMF_DEBUG (API,"bailing..."); return (changed); } if (WMF_SEEK (API,pos_current) == (-1)) { WMF_ERROR (API,"API's seek() failed on input stream!"); API->err = wmf_E_BadFile; return (changed); } bmp_draw.dc = P->dc; bmp_draw.bmp = bmp_read.bmp; if (bmp_draw.crop.x >= bmp_read.bmp.width ) bmp_draw.crop.x = 0; if (bmp_draw.crop.y >= bmp_read.bmp.height) bmp_draw.crop.y = 0; if (bmp_draw.crop.x + bmp_draw.crop.w >= bmp_read.bmp.width) { bmp_draw.crop.w = bmp_read.bmp.width - bmp_draw.crop.x; } if (bmp_draw.crop.y + bmp_draw.crop.h >= bmp_read.bmp.height) { bmp_draw.crop.h = bmp_read.bmp.height - bmp_draw.crop.y; } stretch_x = (double) par_U16_w / (double) bmp_draw.crop.w; stretch_y = (double) par_U16_h / (double) bmp_draw.crop.h; bmp_draw.pixel_width = ABS (P->dc->pixel_width ) * stretch_x; bmp_draw.pixel_height = ABS (P->dc->pixel_height) * stretch_y; if (FR->bmp_draw) FR->bmp_draw (API,&bmp_draw); if (FR->bmp_free) FR->bmp_free (API,&(bmp_draw.bmp)); return (changed); } static int meta_dib_brush (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfRecord bmp_record; wmfObject* objects; wmfObject* obj_brush; wmfBrush* brush; wmfBMP_Read_t bmp_read; U16 oid_brush; unsigned int i; long pos_current; objects = P->objects; i = 0; while (objects[i].type && (i < NUM_OBJECTS (API))) i++; if (i == NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } oid_brush = i; obj_brush = objects + oid_brush; obj_brush->type = OBJ_BRUSH; brush = &(obj_brush->obj.brush); if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = ?",Record->size); diagnose_object (API,(unsigned int) oid_brush,obj_brush); } bmp_record = OffsetRecord (API,Record,2); pos_current = WMF_TELL (API); if (pos_current < 0) { WMF_ERROR (API,"API's tell() failed on input stream!"); API->err = wmf_E_BadFile; return (changed); } bmp_read.offset = bmp_record.position; bmp_read.buffer = bmp_record.parameter; bmp_read.length = (long) (bmp_record.size) * 2; bmp_read.width = 0; bmp_read.height = 0; bmp_read.bmp.width = 0; bmp_read.bmp.height = 0; bmp_read.bmp.data = 0; if (PLAY (API) && FR->bmp_read) FR->bmp_read (API,&bmp_read); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } if (WMF_SEEK (API,pos_current) == (-1)) { WMF_ERROR (API,"API's seek() failed on input stream!"); API->err = wmf_E_BadFile; return (changed); } WMF_BRUSH_SET_STYLE (brush,BS_DIBPATTERN); WMF_BRUSH_SET_COLOR (brush,&wmf_black); WMF_BRUSH_SET_BITMAP (brush,&(bmp_read.bmp)); if (SCAN (API)) wmf_ipa_color_add (API,WMF_BRUSH_COLOR (brush)); WMF_DC_SET_BRUSH (P->dc,brush); return (changed); } static int meta_rop_draw (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfROP_Draw_t rop_draw; wmfL_Coord l_pt_TL; wmfL_Coord l_pt; U16 par_U16_x = 0; U16 par_U16_y = 0; U16 par_U16_w = 0; U16 par_U16_h = 0; S32 width; S32 height; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); } switch (Record->function) { case META_DIBBITBLT: /* META_DIBBITBLT: Special case: Size = 12 */ if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; index 2-4 skipped; max. index = 8",Record->size); } par_U16_x = ParU16 (API,Record,8); par_U16_y = ParU16 (API,Record,7); par_U16_w = ParU16 (API,Record,6); par_U16_h = ParU16 (API,Record,5); rop_draw.ROP = (U32) ParU16 (API,Record,0) + (((U32) ParU16 (API,Record,1)) << 16); break; case META_PATBLT: if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; max. index = 5",Record->size); } par_U16_x = ParU16 (API,Record,5); par_U16_y = ParU16 (API,Record,4); par_U16_w = ParU16 (API,Record,3); par_U16_h = ParU16 (API,Record,2); rop_draw.ROP = (U32) ParU16 (API,Record,0) + (((U32) ParU16 (API,Record,1)) << 16); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } l_pt_TL = L_Coord (API,par_U16_x,par_U16_y); rop_draw.TL = wmf_D_Coord_translate (API,l_pt_TL); l_pt = L_Coord (API,par_U16_w,par_U16_h); width = ABS (l_pt.x); height = ABS (l_pt.y); l_pt.x = l_pt_TL.x + width; l_pt.y = l_pt_TL.y + height; rop_draw.BR = wmf_D_Coord_translate (API,l_pt); if (SCAN (API)) { D_Coord_Register (API,rop_draw.TL,0); D_Coord_Register (API,rop_draw.BR,0); return (changed); } rop_draw.dc = P->dc; rop_draw.pixel_width = ABS (P->dc->pixel_width ); rop_draw.pixel_height = ABS (P->dc->pixel_height); if (FR->rop_draw) FR->rop_draw (API,&rop_draw); return (changed); } static int meta_dc_set (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; U16 par_U16; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } par_U16 = ParU16 (API,Record,0); switch (Record->function) { case META_SETROP2: WMF_DC_SET_ROP (P->dc,par_U16); break; case META_SETTEXTJUSTIFICATION: WMF_DC_SET_BREAKEXTRA (P->dc,par_U16); break; case META_SETTEXTCHAREXTRA: WMF_DC_SET_CHAREXTRA (P->dc,par_U16); break; case META_SETPOLYFILLMODE: WMF_DC_SET_POLYFILL (P->dc,par_U16); break; case META_SETTEXTALIGN: WMF_DC_SET_TEXTALIGN (P->dc,par_U16); break; case META_SETBKMODE: if (par_U16 == TRANSPARENT) { WMF_DC_SET_TRANSPARENT (P->dc); } else { WMF_DC_SET_OPAQUE (P->dc); if (par_U16 != OPAQUE) WMF_DEBUG (API,"unexpected background mode; assuming opaque..."); } break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } return (changed); } static int meta_dc_color (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfRGB color; U16 par_U16_rg; U16 par_U16_b; const char * value = 0; char hash[8]; unsigned long rgbhex; static char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 1",Record->size); } if (API->flags & API_ENABLE_EDITING) { if ((value = wmf_attr_query (API, attrlist, "color"))) { if ((*value) == '#') { if (sscanf (value+1, "%lx", &rgbhex) == 1) { par_U16_rg = (U16) ((rgbhex >> 8) & 0xffff); par_U16_b = (U16) ( rgbhex & 0x00ff); if (PutParU16 (API,Record,1,par_U16_b )) changed = 1; if (PutParU16 (API,Record,0,par_U16_rg)) changed = 1; } else { value = 0; /* force a re-write below */ } } else { value = 0; /* force a re-write below */ } } } par_U16_b = ParU16 (API,Record,1); par_U16_rg = ParU16 (API,Record,0); color = rgb (API,par_U16_rg,par_U16_b); if ((API->flags & API_ENABLE_EDITING) && ((value == 0) || changed)) { hash[0] = '#'; hash[1] = hex[(color.r >> 4) & 0x0f]; hash[2] = hex[ color.r & 0x0f]; hash[3] = hex[(color.g >> 4) & 0x0f]; hash[4] = hex[ color.g & 0x0f]; hash[5] = hex[(color.b >> 4) & 0x0f]; hash[6] = hex[ color.b & 0x0f]; hash[7] = 0; value = wmf_attr_add (API, attrlist, "color", hash); } if (SCAN (API)) wmf_ipa_color_add (API,&color); switch (Record->function) { case META_SETTEXTCOLOR: WMF_DC_SET_TEXTCOLOR (P->dc,&color); break; case META_SETBKCOLOR: WMF_DC_SET_BACKGROUND (P->dc,&color); break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } return (changed); } static int meta_dc_select (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfObject* objects; wmfObject* obj; U16 oid; objects = P->objects; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } oid = ParU16 (API,Record,0); if (oid >= NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } obj = objects + oid; if (SCAN (API) && DIAG (API)) { diagnose_object (API,(unsigned int) oid,obj); } switch (obj->type) { case OBJ_BRUSH: WMF_DC_SET_BRUSH (P->dc,&(obj->obj.brush)); break; case OBJ_PEN: WMF_DC_SET_PEN (P->dc,&(obj->obj.pen)); break; case OBJ_FONT: WMF_DC_SET_FONT (P->dc,&(obj->obj.font)); break; default: WMF_DEBUG (API,"unexpected object type!"); break; } return (changed); } static int meta_dc_save (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) /* complete ?? */ { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = ?",Record->size); } dc_stack_push (API,P->dc); P->dc = dc_copy (API,P->dc); return (changed); } static int meta_dc_restore (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfRegion* clip; wmfPolyRectangle_t polyrect; wmfUserData_t userdata; unsigned int i; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = ?",Record->size); } /* for (i = PAR(0); i < 0; i++) *//* Implies PAR(0) is signed ?? */ userdata.dc = P->dc; userdata.data = P->dc->userdata; if (PLAY (API) && FR->udata_free) FR->udata_free (API,&userdata); clip = (wmfRegion*) P->dc->clip; wmf_free (API,clip->rects); wmf_free (API,P->dc->clip); wmf_free (API,P->dc); P->dc = dc_stack_pop (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } if (SCAN (API)) return (changed); userdata.dc = P->dc; userdata.data = P->dc->userdata; if (FR->udata_set) FR->udata_set (API,&userdata); clip = (wmfRegion*) P->dc->clip; polyrect.dc = P->dc; polyrect.width = 0; polyrect.height = 0; if (clip->numRects) { polyrect.TL = (wmfD_Coord*) wmf_malloc (API,clip->numRects * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.BR = (wmfD_Coord*) wmf_malloc (API,clip->numRects * sizeof (wmfD_Coord)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } polyrect.count = clip->numRects; for (i = 0; i < polyrect.count; i++) { polyrect.TL[i] = clip->rects[i].TL; polyrect.BR[i] = clip->rects[i].BR; } wmf_free (API,polyrect.TL); wmf_free (API,polyrect.BR); } else { polyrect.TL = 0; polyrect.BR = 0; polyrect.count = 0; } if (FR->region_clip) FR->region_clip (API,&polyrect); return (changed); } static int meta_text (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfFontData* FD = (wmfFontData*) API->font_data; wmfRecord str_record; wmfRecord lpDx_record; wmfL_Coord l_pt; wmfD_Coord d_pt; wmfD_Coord t_pt; wmfD_Coord o_pt; wmfDrawText_t drawtext; wmfFont* font = 0; U16 par_U16; U16 par_U16_x; U16 par_U16_y; U16 i; U16 length = 0; U16 bbox_info = 0; U16 l_width; U16* lpDx = 0; char buffer[2]; char* str_save; double theta; double ratio; float cos_theta; float sin_theta; float width; switch (Record->function) { case META_TEXTOUT: if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } if (WMF_DC_TEXTALIGN (P->dc) & TA_UPDATECP) { if ((Record->size) < (1 + (length + 1) / 2)) { WMF_ERROR (API,"Record is too short!"); API->err = wmf_E_BadFormat; break; } l_pt = P->current; } else { if ((Record->size) < (3 + (length + 1) / 2)) { WMF_ERROR (API,"Record is too short!"); API->err = wmf_E_BadFormat; break; } if (SCAN (API) && DIAG (API)) { fprintf (stderr,",-2,-1"); } par_U16_x = ParU16 (API,Record,(Record->size)-1); par_U16_y = ParU16 (API,Record,(Record->size)-2); l_pt = L_Coord (API,par_U16_x,par_U16_y); } drawtext.pt = wmf_D_Coord_translate (API,l_pt); length = ParU16 (API,Record,0); if (length == 0) break; drawtext.TL.x = 0; drawtext.TL.y = 0; drawtext.BR.x = 0; drawtext.BR.y = 0; str_record = OffsetRecord (API,Record,1); break; case META_EXTTEXTOUT: if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); } if (WMF_DC_TEXTALIGN (P->dc) & TA_UPDATECP) { if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; index 0-1 ignored; max. index = 3",Record->size); } l_pt = P->current; } else { if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t#par=%lu; max. index = 3",Record->size); } par_U16_x = ParU16 (API,Record,1); par_U16_y = ParU16 (API,Record,0); l_pt = L_Coord (API,par_U16_x,par_U16_y); } drawtext.pt = wmf_D_Coord_translate (API,l_pt); length = ParU16 (API,Record,2); if (length == 0) break; bbox_info = ParU16 (API,Record,3); if (bbox_info) { if (SCAN (API) && DIAG (API)) { fprintf (stderr,",7"); } par_U16_x = ParU16 (API,Record,4); /* Is this right ?? */ par_U16_y = ParU16 (API,Record,5); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawtext.TL = wmf_D_Coord_translate (API,l_pt); par_U16_x = ParU16 (API,Record,6); /* Is this right ?? */ par_U16_y = ParU16 (API,Record,7); l_pt = L_Coord (API,par_U16_x,par_U16_y); drawtext.BR = wmf_D_Coord_translate (API,l_pt); if (SCAN (API)) { D_Coord_Register (API,drawtext.TL,0); D_Coord_Register (API,drawtext.BR,0); } str_record = OffsetRecord (API,Record,8); } else { drawtext.TL.x = 0; drawtext.TL.y = 0; drawtext.BR.x = 0; drawtext.BR.y = 0; str_record = OffsetRecord (API,Record,4); } break; default: WMF_ERROR (API,"libwmf: erk! programmer's error..."); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; break; } if (ERR (API)) return (changed); if (length == 0) return (changed); drawtext.str = (char*) wmf_malloc (API,length + 1); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } font = WMF_DC_FONT (P->dc); /* FIXME: bug here? Negative font height is supposed to represent absolute font pointsize */ drawtext.font_height = (double) WMF_FONT_HEIGHT (font) * ABS (P->dc->pixel_height); /* FIXME: bug here, WMF_FONT_WIDTH and WMF_FONT_HEIGHT do not necessarily have same scale! */ drawtext.font_ratio = (double) WMF_FONT_WIDTH (font) / (double) WMF_FONT_HEIGHT (font); par_U16 = 0; for (i = 0; i < length; i++) { if (i & 1) { drawtext.str[i] = (par_U16 >> 8) & 0xff; } else { par_U16 = ParU16 (API,&str_record,i/2); drawtext.str[i] = par_U16 & 0xff; } } drawtext.str[length] = '\0'; width = FD->stringwidth (API,font,drawtext.str); width = (float) ((double) width * drawtext.font_height * drawtext.font_ratio); lpDx_record = OffsetRecord (API,&str_record,(length+1)/2); if ((Record->function == META_EXTTEXTOUT) && ((lpDx_record.size) >= length)) { lpDx = (U16*) wmf_malloc (API,length * sizeof (U16)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } l_width = 0; for (i = 0; i < length; i++) { lpDx[i] = ParU16 (API,&lpDx_record,i); l_width += lpDx[i]; } l_pt = L_Coord (API,0,0); t_pt = wmf_D_Coord_translate (API,l_pt); l_pt = L_Coord (API,l_width,0); d_pt = wmf_D_Coord_translate (API,l_pt); width = d_pt.x - t_pt.x; } theta = - WMF_TEXT_ANGLE (font); cos_theta = (float) cos (theta); sin_theta = (float) sin (theta); /* Okay, have text reference point, string width & font height, & angle (in radians) * Compute bounding box and adjust for alignment: */ if (WMF_DC_TEXTALIGN (P->dc) & TA_BASELINE) { /* */ } else if (WMF_DC_TEXTALIGN (P->dc) & TA_BOTTOM) { d_pt.y = - drawtext.font_height / 3; /* This is only approximate... */ t_pt.x = - d_pt.y * sin_theta; t_pt.y = d_pt.y * cos_theta; drawtext.pt.x += t_pt.x; drawtext.pt.y += t_pt.y; } else /* if (WMF_DC_TEXTALIGN (P->dc) & TA_TOP) */ { d_pt.y = drawtext.font_height; /* This is only approximate... */ t_pt.x = - d_pt.y * sin_theta; t_pt.y = d_pt.y * cos_theta; drawtext.pt.x += t_pt.x; drawtext.pt.y += t_pt.y; } if (WMF_DC_TEXTALIGN (P->dc) & TA_CENTER) { d_pt.x = width / 2; d_pt.y = - drawtext.font_height * 0.77; t_pt.x = d_pt.x * cos_theta - d_pt.y * sin_theta; t_pt.y = d_pt.x * sin_theta + d_pt.y * cos_theta; drawtext.bbox.TR.x = drawtext.pt.x + t_pt.x; drawtext.bbox.TR.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.TR,0); drawtext.bbox.BL.x = drawtext.pt.x - t_pt.x; drawtext.bbox.BL.y = drawtext.pt.y - t_pt.y; D_Coord_Register (API,drawtext.bbox.BL,0); d_pt.x = width / 2; d_pt.y = drawtext.font_height * 0.23; t_pt.x = d_pt.x * cos_theta - d_pt.y * sin_theta; t_pt.y = d_pt.x * sin_theta + d_pt.y * cos_theta; drawtext.bbox.BR.x = drawtext.pt.x + t_pt.x; drawtext.bbox.BR.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.BR,0); drawtext.bbox.TL.x = drawtext.pt.x - t_pt.x; drawtext.bbox.TL.y = drawtext.pt.y - t_pt.y; D_Coord_Register (API,drawtext.bbox.TL,0); d_pt.x = - width / 2; t_pt.x = d_pt.x * cos_theta; t_pt.y = d_pt.x * sin_theta; drawtext.pt.x += t_pt.x; drawtext.pt.y += t_pt.y; } else if (WMF_DC_TEXTALIGN (P->dc) & TA_RIGHT) { d_pt.y = - drawtext.font_height * 0.77; t_pt.x = - d_pt.y * sin_theta; t_pt.y = d_pt.y * cos_theta; drawtext.bbox.TR.x = drawtext.pt.x + t_pt.x; drawtext.bbox.TR.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.TR,0); d_pt.y = drawtext.font_height * 0.23; t_pt.x = - d_pt.y * sin_theta; t_pt.y = d_pt.y * cos_theta; drawtext.bbox.BR.x = drawtext.pt.x + t_pt.x; drawtext.bbox.BR.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.BR,0); d_pt.x = - width; d_pt.y = - drawtext.font_height * 0.77; t_pt.x = d_pt.x * cos_theta - d_pt.y * sin_theta; t_pt.y = d_pt.x * sin_theta + d_pt.y * cos_theta; drawtext.bbox.TL.x = drawtext.pt.x + t_pt.x; drawtext.bbox.TL.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.TL,0); d_pt.x = - width; d_pt.y = drawtext.font_height * 0.23; t_pt.x = d_pt.x * cos_theta - d_pt.y * sin_theta; t_pt.y = d_pt.x * sin_theta + d_pt.y * cos_theta; drawtext.bbox.BL.x = drawtext.pt.x + t_pt.x; drawtext.bbox.BL.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.BL,0); d_pt.x = - width; t_pt.x = d_pt.x * cos_theta; t_pt.y = d_pt.x * sin_theta; d_pt.x = drawtext.pt.x + t_pt.x; d_pt.y = drawtext.pt.y + t_pt.y; drawtext.pt = d_pt; if (WMF_DC_TEXTALIGN (P->dc) & TA_UPDATECP) { P->current = wmf_L_Coord_translate (API,drawtext.pt); } } else /* if (WMF_DC_TEXTALIGN (P->dc) & TA_LEFT) */ { d_pt.y = - drawtext.font_height * 0.77; t_pt.x = - d_pt.y * sin_theta; t_pt.y = d_pt.y * cos_theta; drawtext.bbox.TL.x = drawtext.pt.x + t_pt.x; drawtext.bbox.TL.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.TL,0); d_pt.y = drawtext.font_height * 0.23; t_pt.x = - d_pt.y * sin_theta; t_pt.y = d_pt.y * cos_theta; drawtext.bbox.BL.x = drawtext.pt.x + t_pt.x; drawtext.bbox.BL.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.BL,0); d_pt.x = width; d_pt.y = - drawtext.font_height * 0.77; t_pt.x = d_pt.x * cos_theta - d_pt.y * sin_theta; t_pt.y = d_pt.x * sin_theta + d_pt.y * cos_theta; drawtext.bbox.TR.x = drawtext.pt.x + t_pt.x; drawtext.bbox.TR.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.TR,0); d_pt.x = width; d_pt.y = drawtext.font_height * 0.23; t_pt.x = d_pt.x * cos_theta - d_pt.y * sin_theta; t_pt.y = d_pt.x * sin_theta + d_pt.y * cos_theta; drawtext.bbox.BR.x = drawtext.pt.x + t_pt.x; drawtext.bbox.BR.y = drawtext.pt.y + t_pt.y; D_Coord_Register (API,drawtext.bbox.BR,0); if (WMF_DC_TEXTALIGN (P->dc) & TA_UPDATECP) { d_pt.x = width; t_pt.x = d_pt.x * cos_theta; t_pt.y = d_pt.x * sin_theta; d_pt.x = drawtext.pt.x + t_pt.x; d_pt.y = drawtext.pt.y + t_pt.y; P->current = wmf_L_Coord_translate (API,drawtext.pt); } } if (SCAN (API)) { wmf_free (API,drawtext.str); if (lpDx) wmf_free (API,lpDx); return (changed); } drawtext.dc = P->dc; drawtext.flags = bbox_info; if (lpDx) { str_save = drawtext.str; drawtext.str = buffer; t_pt = drawtext.pt; ratio = drawtext.font_ratio; l_width = 0; for (i = 0; i < length; i++) { buffer[0] = str_save[i]; buffer[1] = 0; l_pt = L_Coord (API,0,0); o_pt = wmf_D_Coord_translate (API,l_pt); l_pt = L_Coord (API,l_width,0); d_pt = wmf_D_Coord_translate (API,l_pt); d_pt.x -= o_pt.x; d_pt.y -= o_pt.y; drawtext.pt.x = t_pt.x + d_pt.x * cos_theta; drawtext.pt.y = t_pt.y + d_pt.x * sin_theta; l_pt = L_Coord (API,0,0); o_pt = wmf_D_Coord_translate (API,l_pt); l_pt = L_Coord (API,lpDx[i],0); d_pt = wmf_D_Coord_translate (API,l_pt); d_pt.x -= o_pt.x; d_pt.y -= o_pt.y; width = FD->stringwidth (API,font,drawtext.str); width = (float) ((double) width * drawtext.font_height * ratio); if (d_pt.x < width) { drawtext.font_ratio = ratio * (d_pt.x / width); } else { drawtext.font_ratio = ratio; } if (FR->draw_text) FR->draw_text (API,&drawtext); l_width += lpDx[i]; drawtext.bbox.TL.x = 0; drawtext.bbox.TL.y = 0; drawtext.bbox.TR.x = 0; drawtext.bbox.TR.y = 0; drawtext.bbox.BL.x = 0; drawtext.bbox.BL.y = 0; drawtext.bbox.BR.x = 0; drawtext.bbox.BR.y = 0; } wmf_free (API,lpDx); } else { if (FR->draw_text) FR->draw_text (API,&drawtext); } wmf_free (API,drawtext.str); return (changed); } static int meta_pen_create (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) /* complete, I think */ { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfObject* objects = 0; wmfObject* obj_pen = 0; wmfRGB color; wmfPen* pen = 0; U16 par_U16_rg; U16 par_U16_b; U16 par_U16_w; U16 par_U16_s; U16 oid_pen; U16 i; const char * value = 0; char hash[8]; unsigned long rgbhex; static char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; objects = P->objects; i = 0; while (objects[i].type && (i < NUM_OBJECTS (API))) i++; if (i == NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } oid_pen = i; obj_pen = objects + oid_pen; obj_pen->type = OBJ_PEN; pen = &(obj_pen->obj.pen); if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; index 2 skipped; max. index = 4",Record->size); diagnose_object (API,(unsigned int) oid_pen,obj_pen); } par_U16_s = ParU16 (API,Record,0); WMF_PEN_SET_STYLE (pen,par_U16_s); /* Need to do all of these separately... */ WMF_PEN_SET_ENDCAP (pen,par_U16_s); WMF_PEN_SET_JOIN (pen,par_U16_s); WMF_PEN_SET_TYPE (pen,par_U16_s); par_U16_w = ParU16 (API,Record,1); par_U16_w = MAX (1,par_U16_w); WMF_PEN_SET_WIDTH (pen,(double) par_U16_w * ABS (P->dc->pixel_width )); WMF_PEN_SET_HEIGHT (pen,(double) par_U16_w * ABS (P->dc->pixel_height)); if (API->flags & API_ENABLE_EDITING) { if ((value = wmf_attr_query (API, attrlist, "color"))) { if ((*value) == '#') { if (sscanf (value+1, "%lx", &rgbhex) == 1) { par_U16_rg = (U16) ((rgbhex >> 8) & 0xffff); par_U16_b = (U16) ( rgbhex & 0x00ff); if (PutParU16 (API,Record,4,par_U16_b )) changed = 1; if (PutParU16 (API,Record,3,par_U16_rg)) changed = 1; } else { value = 0; /* force a re-write below */ } } else { value = 0; /* force a re-write below */ } } } par_U16_b = ParU16 (API,Record,4); par_U16_rg = ParU16 (API,Record,3); color = rgb (API,par_U16_rg,par_U16_b); if ((API->flags & API_ENABLE_EDITING) && ((value == 0) || changed)) { hash[0] = '#'; hash[1] = hex[(color.r >> 4) & 0x0f]; hash[2] = hex[ color.r & 0x0f]; hash[3] = hex[(color.g >> 4) & 0x0f]; hash[4] = hex[ color.g & 0x0f]; hash[5] = hex[(color.b >> 4) & 0x0f]; hash[6] = hex[ color.b & 0x0f]; hash[7] = 0; value = wmf_attr_add (API, attrlist, "color", hash); } WMF_PEN_SET_COLOR (pen,&color); if (SCAN (API)) wmf_ipa_color_add (API,&color); if (WMF_PEN_STYLE (pen) != PS_NULL) WMF_DEBUG (API,"Non-null pen style..."); WMF_DC_SET_PEN (P->dc,pen); return (changed); } static int meta_brush_create (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) /* unfinished */ { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfObject* objects = 0; wmfObject* obj_brush = 0; wmfRGB color; wmfBrush* brush = 0; wmfBMP bmp; U16 par_U16_rg; U16 par_U16_b; U16 oid_brush; U16 i; const char * value = 0; char hash[8]; unsigned long rgbhex; static char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; objects = P->objects; i = 0; while (objects[i].type && (i < NUM_OBJECTS (API))) i++; if (i == NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } oid_brush = i; obj_brush = objects + oid_brush; obj_brush->type = OBJ_BRUSH; brush = &(obj_brush->obj.brush); if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 3",Record->size); diagnose_object (API,(unsigned int) oid_brush,obj_brush); } WMF_BRUSH_SET_STYLE (brush,ParU16 (API,Record,0)); if (API->flags & API_ENABLE_EDITING) { if ((value = wmf_attr_query (API, attrlist, "color"))) { if ((*value) == '#') { if (sscanf (value+1, "%lx", &rgbhex) == 1) { par_U16_rg = (U16) ((rgbhex >> 8) & 0xffff); par_U16_b = (U16) ( rgbhex & 0x00ff); if (PutParU16 (API,Record,2,par_U16_b )) changed = 1; if (PutParU16 (API,Record,1,par_U16_rg)) changed = 1; } else { value = 0; /* force a re-write below */ } } else { value = 0; /* force a re-write below */ } } } par_U16_b = ParU16 (API,Record,2); par_U16_rg = ParU16 (API,Record,1); color = rgb (API,par_U16_rg,par_U16_b); if ((API->flags & API_ENABLE_EDITING) && ((value == 0) || changed)) { hash[0] = '#'; hash[1] = hex[(color.r >> 4) & 0x0f]; hash[2] = hex[ color.r & 0x0f]; hash[3] = hex[(color.g >> 4) & 0x0f]; hash[4] = hex[ color.g & 0x0f]; hash[5] = hex[(color.b >> 4) & 0x0f]; hash[6] = hex[ color.b & 0x0f]; hash[7] = 0; value = wmf_attr_add (API, attrlist, "color", hash); } WMF_BRUSH_SET_COLOR (brush,&color); WMF_BRUSH_SET_HATCH (brush,ParU16 (API,Record,3)); bmp.width = 0; bmp.height = 0; bmp.data = 0; WMF_BRUSH_SET_BITMAP (brush,&bmp); if (SCAN (API)) wmf_ipa_color_add (API,&color); WMF_DC_SET_BRUSH (P->dc,brush); return (changed); } static int meta_font_create (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFontData* FD = (wmfFontData*) API->font_data; wmfRecord name_record; wmfObject* objects = 0; wmfObject* obj_font = 0; wmfFont* font = 0; U16 oid_font; U16 par_U16; S16 par_S16_w; S16 par_S16_h; unsigned long i; unsigned long length; char* fontname = 0; objects = P->objects; i = 0; while (objects[i].type && (i < NUM_OBJECTS (API))) i++; if (i == NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } oid_font = i; obj_font = objects + oid_font; obj_font->type = OBJ_FONT; font = &(obj_font->obj.font); if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 8",Record->size); diagnose_object (API,(unsigned int) oid_font,obj_font); } par_S16_w = ParS16 (API,Record,1); par_S16_h = ParS16 (API,Record,0); WMF_FONT_SET_HEIGHT (font,ABS (par_S16_h)); WMF_FONT_SET_WIDTH (font,ABS (par_S16_w)); WMF_FONT_SET_ESCAPEMENT (font,ParS16 (API,Record,2)); /* text angle */ WMF_FONT_SET_ORIENTATION (font,ParS16 (API,Record,3)); WMF_FONT_SET_WEIGHT (font,ParU16 (API,Record,4)); par_U16 = ParU16 (API,Record,5); WMF_FONT_SET_ITALIC (font,par_U16 & 0xff); WMF_TEXT_SET_UNDERLINE (font,(par_U16 >> 8) & 0xff); par_U16 = ParU16 (API,Record,6); WMF_TEXT_SET_STRIKEOUT (font,par_U16 & 0xff); WMF_FONT_SET_CHARSET (font,(par_U16 >> 8) & 0xff); par_U16 = ParU16 (API,Record,7); WMF_FONT_SET_OUT (font,par_U16 & 0xff); WMF_FONT_SET_CLIP (font,(par_U16 >> 8) & 0xff); par_U16 = ParU16 (API,Record,8); WMF_FONT_SET_QUALITY (font,par_U16 & 0xff); WMF_FONT_SET_PITCH (font,(par_U16 >> 8) & 0xff); if (WMF_FONT_WIDTH (font) == 0) { WMF_FONT_SET_WIDTH (font,WMF_FONT_HEIGHT (font)); } name_record = OffsetRecord (API,Record,9); length = (name_record.size) * 2; fontname = (char*) wmf_malloc (API,length + 1); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } par_U16 = 0; for (i = 0; i < length; i++) { if (i & 1) { fontname[i] = (par_U16 >> 8) & 0xff; } else { par_U16 = ParU16 (API,&name_record,i/2); fontname[i] = par_U16 & 0xff; } } fontname[length] = '\0'; WMF_FONT_SET_NAME (font,fontname); /* must not free fontname */ font->user_data = 0; FD->map (API,font); /* Determine/Load freetype face */ if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (changed); } WMF_DC_SET_FONT (P->dc,font); return (changed); } static int meta_palette_create (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfObject* objects = 0; unsigned long i; objects = P->objects; i = 0; while (objects[i].type && (i < NUM_OBJECTS (API))) i++; if (i == NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } objects[i].type = OBJ_PAL; return (changed); } static int meta_delete (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfObject* objects; wmfObject* obj; U16 oid; objects = P->objects; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = 0",Record->size); } oid = ParU16 (API,Record,0); if (oid >= NUM_OBJECTS (API)) { WMF_ERROR (API,"Object out of range!"); API->err = wmf_E_BadFormat; return (changed); } obj = objects + oid; if (SCAN (API) && DIAG (API)) { diagnose_object (API,(unsigned int) oid,obj); } if (obj->type == OBJ_BRUSH) { if (obj->obj.brush.lbStyle == BS_DIBPATTERN) { if (PLAY (API) && FR->bmp_free) FR->bmp_free (API,&(obj->obj.brush.bmp)); } } else if (obj->type == OBJ_REGION) { wmf_free (API,obj->obj.rgn.rects); } obj->type = 0; return (changed); } static int meta_unused (wmfAPI* API,wmfRecord* Record,wmfAttributes* attrlist) { int changed = 0; if (SCAN (API) && DIAG (API)) { fprintf (stderr,"\t[0x%04x]",Record->function); fprintf (stderr,"\t#par=%lu; max. index = ?",Record->size); } /* META_SETSTRETCHBLTMODE: not all that important really */ /* META_SETMAPPERFLAGS: extract from http://www.melander.dk/lib/windows/gdi/fontmap.htm { Windows Font Mapping Ron Gery Microsoft Developer Network Technology Group Created: June 8, 1992 Filters An application can, to some extent, filter which physical fonts are examined by the font mapper. Aspect-ratio filtering, which is available in both Windows versions 3.0 and 3.1, allows an application to specify that only fonts designed for the device's aspect ratio should be considered by the font mapper. An application enables and disables this filter by using the SetMapperFlags function. Because nonscaling raster fonts are designed with a certain aspect ratio in mind, it is sometimes desirable to ensure that only fonts actually designed for the device are used. When this filter is enabled, the font mapper does not consider any physical fonts whose design aspect ratio does not match that of the device. Aspect-ratio filtering does not affect TrueType fonts because they can scale to match any aspect ratio. This filter affects all font selections to the DC until the filter is turned off. Aspect-ratio filtering is a holdover from earlier times and is not a recommended approach in today's font world. } So we're going to ignore this call entirely */ /* META_REALIZEPALETTE: META_SELECTPALETTE: META_SETPALENTRIES: as these set and fiddle with the palette i don't think they have much relevence to our converter, we will do our own color management elsewhere (if we do it at all), so i think we can safely ignore these things. */ /* META_ESCAPE: ?? */ return (changed); } static void diagnose_object (wmfAPI* API,unsigned int oid,wmfObject* obj) { fprintf (stderr,"\toid=%u / %u ",(unsigned) oid,(unsigned) NUM_OBJECTS (API)); switch (obj->type) { case OBJ_BRUSH: fprintf (stderr,"(brush)"); break; case OBJ_PEN: fprintf (stderr,"(pen)"); break; case OBJ_FONT: fprintf (stderr,"(font)"); break; case OBJ_REGION: fprintf (stderr,"(region)"); break; case OBJ_PAL: fprintf (stderr,"(palette)"); break; default: fprintf (stderr,"(other [%u])",(unsigned) obj->type); break; } } #endif /* ! WMFPLAYER_META_H */ libwmf-0.2.8.4/src/player/record.h0000644000077100007710000000545207503051513016222 0ustar fjffjf00000000000000/* libwmf ("player/record.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_RECORD_H #define WMFPLAYER_RECORD_H static U16 ParU16 (wmfAPI* API,wmfRecord* record,unsigned long index) { U16 sp1; U16 sp2; if (index >= record->size) { WMF_ERROR (API,"Bad record - unexpectedly short!"); API->err = wmf_E_BadFormat; return (0); } index <<= 1; sp1 = record->parameter[index]; index++; sp2 = record->parameter[index]; return ((sp2 << 8) | sp1); } static int PutParU16 (wmfAPI* API,wmfRecord* record,unsigned long index,U16 sp) { int changed = 0; unsigned char c1 = (unsigned char) ( sp & 0xff); unsigned char c2 = (unsigned char) ((sp >> 8) & 0xff); if (index >= record->size) { WMF_ERROR (API,"Bad record - unexpectedly short!"); API->err = wmf_E_BadFormat; return (0); } index <<= 1; if (record->parameter[index] != c1) { record->parameter[index] = c1; changed = 1; } index++; if (record->parameter[index] != c2) { record->parameter[index] = c2; changed = 1; } return (changed); } static S16 ParS16 (wmfAPI* API,wmfRecord* record,unsigned long index) { U16 up; up = ParU16 (API,record,index); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (up); } return (U16_2_S16 (up)); } static S32 ParS32 (wmfAPI* API,wmfRecord* record,unsigned long index) { U16 up; up = ParU16 (API,record,index); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (up); } return (U16_2_S32 (up)); } static wmfRecord OffsetRecord (wmfAPI* API,wmfRecord* record,unsigned long index) { wmfRecord new_record; new_record.function = record->function; new_record.size = 0; new_record.parameter = 0; if (index > record->size) { WMF_ERROR (API,"Bad record - unexpectedly short!"); API->err = wmf_E_BadFormat; return (new_record); } new_record.size = record->size - index; index <<= 1; new_record.parameter = record->parameter + index; new_record.position = record->position + index; return (new_record); } #endif /* ! WMFPLAYER_RECORD_H */ libwmf-0.2.8.4/src/player/region.h0000644000077100007710000006662507470252460016247 0ustar fjffjf00000000000000/* libwmf ("player/region.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_REGION_H #define WMFPLAYER_REGION_H static wmfD_Rect* rgn_memchk (wmfAPI* API,wmfRegion* rgn) { wmfD_Rect* more = 0; if (rgn->numRects < (rgn->size - 1)) return (rgn->rects + rgn->numRects); more = wmf_realloc (API,rgn->rects,(rgn->size + 8) * sizeof (wmfD_Rect)); if ((more == 0) || (ERR (API))) return (0); /* The two conditions are equivalent, I think */ rgn->rects = more; rgn->size += 8; /* The exponential increase in memory allocation in MEMCHECK scares me */ return (rgn->rects + rgn->numRects); } /* 1 if two RECTs overlap. * 0 if two RECTs do not overlap. */ #define EXTENTCHECK(r1,r2) \ ( ((r1)->BR.x > (r2)->TL.x) \ && ((r1)->TL.x < (r2)->BR.x) \ && ((r1)->BR.y > (r2)->TL.y) \ && ((r1)->TL.y < (r2)->BR.y) ) static void WmfSetRectRgn (wmfAPI* API,wmfRegion* rgn,wmfD_Rect* rect) { if ((rect == 0) || (rect->TL.x == rect->BR.x) || (rect->TL.y == rect->BR.y)) /* EMPTY_REGION (rgn); */ { rgn->extents.TL.x = 0; rgn->extents.TL.y = 0; rgn->extents.BR.x = 0; rgn->extents.BR.y = 0; rgn->numRects = 0; rgn->type = NULLREGION; } else { rgn->extents = (*rect); (*(rgn->rects)) = (*rect); rgn->numRects = 1; rgn->type = SIMPLEREGION; } } static void WmfCombineRgn (wmfAPI* API,wmfRegion* destObj,wmfRegion* src1Obj,wmfRegion* src2Obj,U16 mode) { if ((destObj == 0) || (src1Obj == 0)) return; if (mode == RGN_COPY) { REGION_CopyRegion (API,destObj,src1Obj); return; } if (src2Obj) { switch (mode) { case RGN_OR: REGION_UnionRegion (API,destObj,src1Obj,src2Obj); break; case RGN_AND: REGION_IntersectRegion (API,destObj,src1Obj,src2Obj); break; #if 0 case RGN_XOR: REGION_XorRegion (API,destObj,src1Obj,src2Obj); break; #endif case RGN_DIFF: REGION_SubtractRegion (API,destObj,src1Obj,src2Obj); break; } } } static void REGION_UnionRegion (wmfAPI* API,wmfRegion* newReg,wmfRegion* reg1,wmfRegion* reg2) { /* checks all the simple cases */ /* Region 1 and 2 are the same or region 1 is empty */ if ((reg1 == reg2) || (!(reg1->numRects))) { if (newReg != reg2) REGION_CopyRegion (API,newReg,reg2); return; } /* If nothing to union (region 2 empty) */ if (reg2->numRects == 0) { if (newReg != reg1) REGION_CopyRegion (API,newReg,reg1); return; } /* Region 1 completely subsumes region 2 */ if ( (reg1->numRects == 1) && (reg1->extents.TL.x <= reg2->extents.TL.x) && (reg1->extents.TL.y <= reg2->extents.TL.y) && (reg1->extents.BR.x >= reg2->extents.BR.x) && (reg1->extents.BR.y >= reg2->extents.BR.y)) { if (newReg != reg1) REGION_CopyRegion (API,newReg,reg1); return; } /* Region 2 completely subsumes region 1 */ if ( (reg2->numRects == 1) && (reg2->extents.TL.x <= reg1->extents.TL.x) && (reg2->extents.TL.y <= reg1->extents.TL.y) && (reg2->extents.BR.x >= reg1->extents.BR.x) && (reg2->extents.BR.y >= reg1->extents.BR.y)) { if (newReg != reg2) REGION_CopyRegion (API,newReg,reg2); return; } REGION_RegionOp (API,newReg,reg1,reg2,REGION_UnionO,REGION_UnionNonO,REGION_UnionNonO); newReg->extents.TL.x = MIN (reg1->extents.TL.x,reg2->extents.TL.x); newReg->extents.TL.y = MIN (reg1->extents.TL.y,reg2->extents.TL.y); newReg->extents.BR.x = MAX (reg1->extents.BR.x,reg2->extents.BR.x); newReg->extents.BR.y = MAX (reg1->extents.BR.y,reg2->extents.BR.y); newReg->type = ((newReg->numRects)?(COMPLEXREGION):(NULLREGION)); } static void REGION_CopyRegion (wmfAPI* API,wmfRegion* dst,wmfRegion* src) { if (dst != src) /* don't want to copy to itself */ { if (dst->size < src->numRects) { dst->rects = wmf_realloc (API,dst->rects,src->numRects * sizeof (wmfD_Rect)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } dst->size = src->numRects; } dst->numRects = src->numRects; dst->extents.TL.x = src->extents.TL.x; dst->extents.TL.y = src->extents.TL.y; dst->extents.BR.x = src->extents.BR.x; dst->extents.BR.y = src->extents.BR.y; dst->type = src->type; memcpy ((char*) dst->rects,(char*) src->rects,(int) (src->numRects * sizeof (wmfD_Rect))); } } /***************************************************************************** * REGION_RegionOp * * Apply an operation to two regions. Called by REGION_Union, * REGION_Inverse, REGION_Subtract, REGION_Intersect... * * Results: * None. * * Side Effects: * The new region is overwritten. * * Notes: * The idea behind this function is to view the two regions as sets. * Together they cover a rectangle of area that this function divides * into horizontal bands where points are covered only by one region * or by both. For the first case, the nonOverlapFunc is called with * each the band and the band's upper and lower extents. For the * second, the overlapFunc is called to process the entire band. It * is responsible for clipping the rectangles in the band, though * this function provides the boundaries. * At the end of each band, the new region is coalesced, if possible, * to reduce the number of rectangles in the region. * */ static void REGION_RegionOp ( wmfAPI* API, wmfRegion* newReg, /* Place to store result */ wmfRegion* reg1, /* First region in operation */ wmfRegion* reg2, /* 2nd region in operation */ pProcO overlapFunc, /* Function to call for over-lapping bands */ pProcNonO nonOverlap1Func, /* Function to call for non-overlapping bands in region 1 */ pProcNonO nonOverlap2Func /* Function to call for non-overlapping bands in region 2 */ ) { wmfD_Rect* r1; /* Pointer into first region */ wmfD_Rect* r2; /* Pointer into 2d region */ wmfD_Rect* r1End; /* End of 1st region */ wmfD_Rect* r2End; /* End of 2d region */ wmfD_Rect* oldRects; /* Old rects for newReg */ wmfD_Rect* r1BandEnd; /* End of current band in r1 */ wmfD_Rect* r2BandEnd; /* End of current band in r2 */ wmfD_Rect* prev_rects; float ytop; /* Top of intersection */ float ybot; /* Bottom of intersection */ float top; /* Top of non-overlapping band */ float bot; /* Bottom of non-overlapping band */ unsigned int prevBand; /* Index of start of previous band in newReg */ unsigned int curBand; /* Index of start of current band in newReg */ /*Initialization: * * set r1, r2, r1End and r2End appropriately, preserve the important * parts of the destination region until the end in case it's one of * the two source regions, then mark the "new" region empty, allocating * another array of rectangles for it to use. */ r1 = reg1->rects; r2 = reg2->rects; r1End = r1 + reg1->numRects; r2End = r2 + reg2->numRects; /* newReg may be one of the src regions so we can't empty it. We keep a * note of its rects pointer (so that we can free them later), preserve its * extents and simply set numRects to zero. */ oldRects = newReg->rects; newReg->numRects = 0; /* Allocate a reasonable number of rectangles for the new region. The idea * is to allocate enough so the individual functions don't need to * reallocate and copy the array, which is time consuming, yet we don't * have to worry about using too much memory. I hope to be able to * nuke the Xrealloc() at the end of this function eventually. */ newReg->size = MAX (reg1->numRects,reg2->numRects) * 2; if ((newReg->rects = wmf_malloc (API,sizeof (wmfD_Rect) * newReg->size)) == 0) { newReg->size = 0; return; } /* Initialize ybot and ytop. * * In the upcoming loop, ybot and ytop serve different functions depending * on whether the band being handled is an overlapping or non-overlapping * band. * * In the case of a non-overlapping band (only one of the regions * has points in the band), ybot is the bottom of the most recent * intersection and thus clips the top of the rectangles in that band. * ytop is the top of the next intersection between the two regions and * serves to clip the bottom of the rectangles in the current band. * * For an overlapping band (where the two regions intersect), ytop clips * the top of the rectangles of both regions and ybot clips the bottoms. */ if (reg1->extents.TL.y < reg2->extents.TL.y) { ybot = reg1->extents.TL.y; } else { ybot = reg2->extents.TL.y; } /* prevBand serves to mark the start of the previous band so rectangles * can be coalesced into larger rectangles. qv. miCoalesce, above. * In the beginning, there is no previous band, so prevBand == curBand * (curBand is set later on, of course, but the first band will always * start at index 0). prevBand and curBand must be indices because of * the possible expansion, and resultant moving, of the new region's * array of rectangles. */ prevBand = 0; do { curBand = newReg->numRects; /* This algorithm proceeds one source-band (as opposed to a * destination band, which is determined by where the two regions * intersect) at a time. r1BandEnd and r2BandEnd serve to mark the * rectangle after the last one in the current band for their * respective regions. */ r1BandEnd = r1; while ((r1BandEnd != r1End) && (r1BandEnd->TL.y == r1->TL.y)) r1BandEnd++; r2BandEnd = r2; while ((r2BandEnd != r2End) && (r2BandEnd->TL.y == r2->TL.y)) r2BandEnd++; /* First handle the band that doesn't intersect, if any. * * Note that attention is restricted to one band in the * non-intersecting region at once, so if a region has n * bands between the current position and the next place it overlaps * the other, this entire loop will be passed through n times. */ if (r1->TL.y < r2->TL.y) { top = MAX (r1->TL.y,ybot); bot = MIN (r1->BR.y,r2->TL.y); if ((top != bot) && (nonOverlap1Func)) { (*nonOverlap1Func) (API,newReg,r1,r1BandEnd,top,bot); } ytop = r2->TL.y; } else if (r2->TL.y < r1->TL.y) { top = MAX (r2->TL.y,ybot); bot = MIN (r2->BR.y,r1->TL.y); if ((top != bot) && (nonOverlap2Func)) { (*nonOverlap2Func) (API,newReg,r2,r2BandEnd,top,bot); } ytop = r1->TL.y; } else { ytop = r1->TL.y; } /* If any rectangles got added to the region, try and coalesce them * with rectangles from the previous band. Note we could just do * this test in miCoalesce, but some machines incur a not * inconsiderable cost for function calls, so... */ if (newReg->numRects != curBand) { prevBand = REGION_Coalesce (API,newReg,prevBand,curBand); } /* Now see if we've hit an intersecting band. The two bands only * intersect if ybot > ytop */ ybot = MIN (r1->BR.y,r2->BR.y); curBand = newReg->numRects; if ((ybot > ytop) && (overlapFunc)) { (*overlapFunc) (API,newReg,r1,r1BandEnd,r2,r2BandEnd,ytop,ybot); } if (newReg->numRects != curBand) { prevBand = REGION_Coalesce (API,newReg,prevBand,curBand); } /* If we've finished with a band (bottom == ybot) we skip forward * in the region to the next band. */ if (r1->BR.y == ybot) r1 = r1BandEnd; if (r2->BR.y == ybot) r2 = r2BandEnd; } while ((r1 != r1End) && (r2 != r2End)); /* Deal with whichever region still has rectangles left. */ curBand = newReg->numRects; if (r1 != r1End) { if (nonOverlap1Func) { do { r1BandEnd = r1; while ((r1BandEnd < r1End) && (r1BandEnd->TL.y == r1->TL.y)) r1BandEnd++; (*nonOverlap1Func) (API,newReg,r1,r1BandEnd,MAX (r1->TL.y,ybot),r1->BR.y); r1 = r1BandEnd; } while (r1 != r1End); } } else if ((r2 != r2End) && (nonOverlap2Func)) { do { r2BandEnd = r2; while ((r2BandEnd < r2End) && (r2BandEnd->TL.y == r2->TL.y)) r2BandEnd++; (*nonOverlap2Func) (API,newReg,r2,r2BandEnd,MAX (r2->TL.y,ybot),r2->BR.y); r2 = r2BandEnd; } while (r2 != r2End); } if (newReg->numRects != curBand) { REGION_Coalesce (API,newReg,prevBand,curBand); } /* A bit of cleanup. To keep regions from growing without bound, * we shrink the array of rectangles to match the new number of * rectangles in the region. This never goes to 0, however... * * Only do this stuff if the number of rectangles allocated is more than * twice the number of rectangles in the region (a simple optimization...). */ if (newReg->numRects < (newReg->size >> 1)) { if (newReg->numRects) /* REGION_NOT_EMPTY */ { prev_rects = newReg->rects; newReg->size = newReg->numRects; newReg->rects = wmf_realloc (API,newReg->rects,sizeof(wmfD_Rect) * newReg->size); if (newReg->rects == 0) newReg->rects = prev_rects; } else { /* No point in doing the extra work involved in an Xrealloc if * the region is empty */ newReg->size = 1; wmf_free (API,newReg->rects); newReg->rects = wmf_malloc (API,sizeof (wmfD_Rect)); } } wmf_free (API,oldRects); } /***************************************************************************** * REGION_Coalesce * * Attempt to merge the rects in the current band with those in the * previous one. Used only by REGION_RegionOp. * * Results: * The new index for the previous band. * * Side Effects: * If coalescing takes place: * - rectangles in the previous band will have their bottom fields * altered. * - pReg->numRects will be decreased. * */ static unsigned int REGION_Coalesce ( wmfAPI* API, wmfRegion* pReg, /* Region to coalesce */ unsigned int prevStart, /* Index of start of previous band */ unsigned int curStart /* Index of start of current band */ ) { wmfD_Rect* pPrevRect; /* Current rect in previous band */ wmfD_Rect* pCurRect; /* Current rect in current band */ wmfD_Rect* pRegEnd; /* End of region */ unsigned int curNumRects; /* Number of rectangles in current band */ unsigned int prevNumRects; /* Number of rectangles in previous band */ float bandtop; /* top coordinate for current band */ pRegEnd = pReg->rects + pReg->numRects; pPrevRect = pReg->rects + prevStart; prevNumRects = curStart - prevStart; /* Figure out how many rectangles are in the current band. Have to do * this because multiple bands could have been added in REGION_RegionOp * at the end when one region has been exhausted. */ pCurRect = pReg->rects + curStart; bandtop = pCurRect->TL.y; for (curNumRects = 0; (pCurRect != pRegEnd) && (pCurRect->TL.y == bandtop); curNumRects++) { pCurRect++; } if (pCurRect != pRegEnd) { /* If more than one band was added, we have to find the start * of the last band added so the next coalescing job can start * at the right place... (given when multiple bands are added, * this may be pointless -- see above). */ pRegEnd--; while (pRegEnd[-1].TL.y == pRegEnd->TL.y) pRegEnd--; curStart = pRegEnd - pReg->rects; pRegEnd = pReg->rects + pReg->numRects; } if ((curNumRects == prevNumRects) && (curNumRects != 0)) { pCurRect -= curNumRects; /* The bands may only be coalesced if the bottom of the previous * matches the top scanline of the current. */ if (pPrevRect->BR.y == pCurRect->TL.y) { /* Make sure the bands have rects in the same places. This * assumes that rects have been added in such a way that they * cover the most area possible. I.e. two rects in a band must * have some horizontal space between them. */ do { if ( (pPrevRect->TL.x != pCurRect->TL.x ) || (pPrevRect->BR.x != pCurRect->BR.x)) { /* The bands don't line up so they can't be coalesced. */ return (curStart); } pPrevRect++; pCurRect++; prevNumRects -= 1; } while (prevNumRects != 0); pReg->numRects -= curNumRects; pCurRect -= curNumRects; pPrevRect -= curNumRects; /* The bands may be merged, so set the bottom of each rect * in the previous band to that of the corresponding rect in * the current band. */ do { pPrevRect->BR.y = pCurRect->BR.y; pPrevRect++; pCurRect++; curNumRects -= 1; } while (curNumRects != 0); /* If only one band was added to the region, we have to backup * curStart to the start of the previous band. * * If more than one band was added to the region, copy the * other bands down. The assumption here is that the other bands * came from the same region as the current one and no further * coalescing can be done on them since it's all been done * already... curStart is already in the right place. */ if (pCurRect == pRegEnd) { curStart = prevStart; } else { do { *pPrevRect++ = *pCurRect++; } while (pCurRect != pRegEnd); } } } return (curStart); } /***************************************************************************** * REGION_UnionO * * Handle an overlapping band for the union operation. Picks the * left-most rectangle each time and merges it into the region. * * Results: * None. * * Side Effects: * Rectangles are overwritten in pReg->rects and pReg->numRects will * be changed. * */ static void REGION_UnionO ( wmfAPI* API, wmfRegion* pReg, wmfD_Rect* r1, wmfD_Rect* r1End, wmfD_Rect* r2, wmfD_Rect* r2End, float top, float bottom ) { while ((r1 != r1End) && (r2 != r2End)) { if (r1->TL.x < r2->TL.x) { rect_merge (API,pReg,r1,top,bottom); if (ERR (API)) return; r1++; } else { rect_merge (API,pReg,r2,top,bottom); if (ERR (API)) return; r2++; } } if (r1 != r1End) { do { rect_merge (API,pReg,r1,top,bottom); if (ERR (API)) return; r1++; } while (r1 != r1End); } else { while (r2 != r2End) { rect_merge (API,pReg,r2,top,bottom); if (ERR (API)) return; r2++; } } } static void rect_merge ( wmfAPI* API, wmfRegion* rgn, wmfD_Rect* r, float top, float bottom ) { wmfD_Rect* pNextRect = 0; wmfD_Rect* pPrior = 0; if ((pNextRect = rgn_memchk (API,rgn)) == 0) return; if (rgn->numRects == 0) { rgn->numRects++; pNextRect->TL.x = r->TL.x; pNextRect->TL.y = top; pNextRect->BR.x = r->BR.x; pNextRect->BR.y = bottom; pNextRect++; } else { pPrior = pNextRect - 1; if ((pPrior->TL.y == top) && (pPrior->BR.y == bottom) && (pPrior->BR.x >= r->TL.x)) { if (pPrior->BR.x < r->BR.x) pPrior->BR.x = r->BR.x; } else { rgn->numRects++; pNextRect->TL.x = r->TL.x; pNextRect->TL.y = top; pNextRect->BR.x = r->BR.x; pNextRect->BR.y = bottom; pNextRect++; } } } /***************************************************************************** * REGION_UnionNonO * * Handle a non-overlapping band for the union operation. Just * Adds the rectangles into the region. Doesn't have to check for * subsumption or anything. * * Results: * None. * * Side Effects: * pReg->numRects is incremented and the final rectangles overwritten * with the rectangles we're passed. * */ static void REGION_UnionNonO ( wmfAPI* API, wmfRegion* pReg, wmfD_Rect* r, wmfD_Rect* rEnd, float top, float bottom ) { wmfD_Rect* pNextRect = 0; while (r != rEnd) { if ((pNextRect = rgn_memchk (API,pReg)) == 0) return; pReg->numRects++; pNextRect->TL.x = r->TL.x; pNextRect->TL.y = top; pNextRect->BR.x = r->BR.x; pNextRect->BR.y = bottom; pNextRect++; r++; } } /***************************************************************************** * REGION_SubtractNonO1 * * Deal with non-overlapping band for subtraction. Any parts from * region 2 we discard. Anything from region 1 we add to the region. * * Results: * None. * * Side Effects: * pReg may be affected. * */ static void REGION_SubtractNonO1 ( wmfAPI* API, wmfRegion* pReg, wmfD_Rect* r, wmfD_Rect* rEnd, float top, float bottom ) { wmfD_Rect* pNextRect = 0; while (r != rEnd) { if ((pNextRect = rgn_memchk (API,pReg)) == 0) return; pReg->numRects++; pNextRect->TL.x = r->TL.x; pNextRect->TL.y = top; pNextRect->BR.x = r->BR.x; pNextRect->BR.y = bottom; pNextRect++; r++; } } /***************************************************************************** * REGION_SubtractRegion * * Subtract regS from regM and leave the result in regD. * S stands for subtrahend, M for minuend and D for difference. * * Results: * TRUE. * * Side Effects: * regD is overwritten. * */ static void REGION_SubtractRegion ( wmfAPI* API, wmfRegion* regD, wmfRegion* regM, wmfRegion* regS ) { /* check for trivial reject */ if ( (regM->numRects == 0) || (regS->numRects == 0) || (!EXTENTCHECK (®M->extents,®S->extents)) ) { REGION_CopyRegion (API,regD,regM); return; } REGION_RegionOp (API,regD,regM,regS,REGION_SubtractO,REGION_SubtractNonO1,0); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } /* Can't alter newReg's extents before we call miRegionOp because * it might be one of the source regions and miRegionOp depends * on the extents of those regions being the unaltered. Besides, this * way there's no checking against rectangles that will be nuked * due to coalescing, so we have to examine fewer rectangles. */ REGION_SetExtents (API,regD); regD->type = ((regD->numRects) ? COMPLEXREGION : NULLREGION); } /***************************************************************************** * REGION_SubtractO * * Overlapping band subtraction. x1 is the left-most point not yet * checked. * * Results: * None. * * Side Effects: * pReg may have rectangles added to it. * */ static void REGION_SubtractO ( wmfAPI* API, wmfRegion* pReg, wmfD_Rect* r1, wmfD_Rect* r1End, wmfD_Rect* r2, wmfD_Rect* r2End, float top, float bottom ) { wmfD_Rect* pNextRect = 0; float left = r1->TL.x; if ((pNextRect = rgn_memchk (API,pReg)) == 0) return; while ((r1 != r1End) && (r2 != r2End)) { if (r2->BR.x <= left) { /* Subtrahend missed the boat: go to next subtrahend. */ r2++; } else if (r2->TL.x <= left) { /* Subtrahend preceeds minuend: nuke left edge of minuend. */ left = r2->BR.x; if (left >= r1->BR.x) { /* Minuend completely covered: advance to next minuend and * reset left fence to edge of new minuend. */ r1++; if (r1 != r1End) left = r1->TL.x; } else { /* Subtrahend now used up since it doesn't extend beyond * minuend */ r2++; } } else if (r2->TL.x < r1->BR.x) { /* Left part of subtrahend covers part of minuend: add uncovered * part of minuend to region and skip to next subtrahend. */ if ((pNextRect = rgn_memchk (API,pReg)) == 0) return; pReg->numRects++; pNextRect->TL.x = left; pNextRect->TL.y = top; pNextRect->BR.x = r2->TL.x; pNextRect->BR.y = bottom; pNextRect++; left = r2->BR.x; if (left >= r1->BR.x) { /* Minuend used up: advance to new... */ r1++; if (r1 != r1End) left = r1->TL.x; } else { /* Subtrahend used up */ r2++; } } else { /* Minuend used up: add any remaining piece before advancing. */ if (r1->BR.x > left) { if ((pNextRect = rgn_memchk (API,pReg)) == 0) return; pReg->numRects++; pNextRect->TL.x = left; pNextRect->TL.y = top; pNextRect->BR.x = r1->BR.x; pNextRect->BR.y = bottom; pNextRect++; } r1++; left = r1->TL.x; } } /* Add remaining minuend rectangles to region. */ while (r1 != r1End) { if ((pNextRect = rgn_memchk (API,pReg)) == 0) return; pReg->numRects++; pNextRect->TL.x = left; pNextRect->TL.y = top; pNextRect->BR.x = r1->BR.x; pNextRect->BR.y = bottom; pNextRect++; r1++; if (r1 != r1End) left = r1->TL.x; } } /***************************************************************************** * REGION_SetExtents * Re-calculate the extents of a region */ static void REGION_SetExtents ( wmfAPI* API, wmfRegion* pReg ) { wmfD_Rect* pRect; wmfD_Rect* pRectEnd; wmfD_Rect* pExtents; if (pReg->numRects == 0) { pReg->extents.TL.x = 0; pReg->extents.TL.y = 0; pReg->extents.BR.x = 0; pReg->extents.BR.y = 0; return; } pExtents = &pReg->extents; pRect = pReg->rects; pRectEnd = pRect + pReg->numRects - 1; /* Since pRect is the first rectangle in the region, it must have the * smallest top and since pRectEnd is the last rectangle in the region, * it must have the largest bottom, because of banding. Initialize left and * right from pRect and pRectEnd, resp., as good things to initialize them * to... */ pExtents->TL.x = pRect->TL.x; pExtents->TL.y = pRect->TL.y; pExtents->BR.x = pRectEnd->BR.x; pExtents->BR.y = pRectEnd->BR.y; while (pRect <= pRectEnd) { if (pRect->TL.x < pExtents->TL.x) pExtents->TL.x = pRect->TL.x; if (pRect->BR.x > pExtents->BR.x) pExtents->BR.x = pRect->BR.x; pRect++; } } /***************************************************************************** * REGION_IntersectRegion */ static void REGION_IntersectRegion ( wmfAPI* API, wmfRegion* newReg, wmfRegion* reg1, wmfRegion* reg2 ) { /* check for trivial reject */ if ( (!(reg1->numRects)) || (!(reg2->numRects)) || (!EXTENTCHECK (®1->extents,®2->extents))) { newReg->numRects = 0; } else { REGION_RegionOp (API,newReg,reg1,reg2,REGION_IntersectO,0,0); } /* Can't alter newReg's extents before we call miRegionOp because * it might be one of the source regions and miRegionOp depends * on the extents of those regions being the same. Besides, this * way there's no checking against rectangles that will be nuked * due to coalescing, so we have to examine fewer rectangles. */ REGION_SetExtents (API,newReg); newReg->type = ((newReg->numRects) ? COMPLEXREGION : NULLREGION); } /***************************************************************************** * REGION_IntersectO * * Handle an overlapping band for REGION_Intersect. * * Results: * None. * * Side Effects: * Rectangles may be added to the region. * */ static void REGION_IntersectO ( wmfAPI* API, wmfRegion* pReg, wmfD_Rect* r1, wmfD_Rect* r1End, wmfD_Rect* r2, wmfD_Rect* r2End, float top, float bottom ) { float left; float right; wmfD_Rect* pNextRect; while ((r1 != r1End) && (r2 != r2End)) { left = MAX (r1->TL.x,r2->TL.x); right = MIN (r1->BR.x,r2->BR.x); /* If there's any overlap between the two rectangles, add that * overlap to the new region. * There's no need to check for subsumption because the only way * such a need could arise is if some region has two rectangles * right next to each other. Since that should never happen... */ if (left < right) { if ((pNextRect = rgn_memchk (API,pReg)) == 0) return; pReg->numRects++; pNextRect->TL.x = left; pNextRect->TL.y = top; pNextRect->BR.x = right; pNextRect->BR.y = bottom; pNextRect++; } /* Need to advance the pointers. Shift the one that extends * to the right the least, since the other still has a chance to * overlap with that region's next rectangle, if you see what I mean. */ if (r1->BR.x < r2->BR.x) { r1++; } else if (r2->BR.x < r1->BR.x) { r2++; } else { r1++; r2++; } } } #endif /* ! WMFPLAYER_REGION_H */ libwmf-0.2.8.4/src/Makefile.am0000644000077100007710000000372110012150566015325 0ustar fjffjf00000000000000if LIBWMF_BUILD_ALL LIBHEAVY = libwmf.la DIRHEAVY = extra ipa . convert DEFHEAVY = -DLIBWMF_INCLUDE_TRIO_H=1 else LIBHEAVY = DIRHEAVY = . DEFHEAVY = endif if LIBWMF_GDK_PIXBUF GDK_PIXBUF_PLUGIN = io-wmf.la GDK_PIXBUF_DEFS = -DGDK_PIXBUF_ENABLE_BACKEND=1 else GDK_PIXBUF_PLUGIN = GDK_PIXBUF_DEFS = endif DIST_SUBDIRS = extra ipa . convert SUBDIRS = $(DIRHEAVY) CFLAGS = @CFLAGS@ @WMF_CFLAGS@ @GDK_PIXBUF_CFLAGS@ DEFS = @DEFS@ @WMF_DEFS@ $(DEFHEAVY) $(GDK_PIXBUF_DEFS) \ -DPACKAGE=\"@PACKAGE@\" \ -DVERSION=\"@VERSION@\" \ -DWMF_FONTDIR=\"@WMF_FONTDIR@\" \ -DWMF_GS_FONTDIR=\"@WMF_GS_FONTDIR@\" \ -DWMF_SYS_FONTMAP=\"@WMF_SYS_FONTMAP@\" \ -DWMF_XTRA_FONTMAP=\"@WMF_XTRA_FONTMAP@\" \ -DWMF_GS_FONTMAP=\"@WMF_GS_FONTMAP@\" INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_builddir) lib_LTLIBRARIES = libwmflite.la $(LIBHEAVY) libwmflite_la_SOURCES = api.c bbuf.c meta.c player.c recorder.c libwmflite_la_LDFLAGS = $(SYS_LIBM) \ -no-undefined \ -version-info $(LT_LITE_CURRENT):$(LT_LITE_REVISION):$(LT_LITE_AGE) \ -release $(LT_RELEASE) -export-dynamic libwmf_la_SOURCES = font.c stream.c wmf.c xml.c if LIBWMF_OPT_TRIO LIBTRIO = extra/trio/libtrio.la else LIBTRIO = endif if LIBWMF_OPT_SYS_GD LIBGD = else LIBGD = extra/gd/libgd.la endif libwmf_la_LIBADD = ipa/libipa.la libwmflite.la $(LIBGD) $(LIBTRIO) @WMF_LIBFLAGS@ libwmf_la_LDFLAGS = \ -no-undefined \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ -release $(LT_RELEASE) -export-dynamic loaderdir = $(libdir)/$(GDK_PIXBUF_DIR) loader_LTLIBRARIES = $(GDK_PIXBUF_PLUGIN) io_wmf_la_SOURCES = io-wmf.c io_wmf_la_LIBADD = libwmf.la libwmflite.la @GDK_PIXBUF_LIBS@ io_wmf_la_LDFLAGS = -no-undefined -module -avoid-version PLAYERHEADERS = \ player/clip.h \ player/color.h \ player/coord.h \ player/dc.h \ player/defaults.h \ player/meta.h \ player/record.h \ player/region.h EXTRA_DIST = wmfdefs.h metadefs.h player.h $(PLAYERHEADERS) recorder.h \ api.h bbuf.h font.h stream.h xml.h libwmf-0.2.8.4/src/Makefile.in0000664000077100007710000006077710272000331015346 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ SOURCES = $(io_wmf_la_SOURCES) $(libwmf_la_SOURCES) $(libwmflite_la_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(loaderdir)" libLTLIBRARIES_INSTALL = $(INSTALL) loaderLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) $(loader_LTLIBRARIES) io_wmf_la_DEPENDENCIES = libwmf.la libwmflite.la am_io_wmf_la_OBJECTS = io-wmf.lo io_wmf_la_OBJECTS = $(am_io_wmf_la_OBJECTS) @LIBWMF_GDK_PIXBUF_TRUE@am_io_wmf_la_rpath = -rpath $(loaderdir) @LIBWMF_OPT_SYS_GD_FALSE@am__DEPENDENCIES_1 = extra/gd/libgd.la @LIBWMF_OPT_TRIO_TRUE@am__DEPENDENCIES_2 = extra/trio/libtrio.la libwmf_la_DEPENDENCIES = ipa/libipa.la libwmflite.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) am_libwmf_la_OBJECTS = font.lo stream.lo wmf.lo xml.lo libwmf_la_OBJECTS = $(am_libwmf_la_OBJECTS) @LIBWMF_BUILD_ALL_TRUE@am_libwmf_la_rpath = -rpath $(libdir) libwmflite_la_LIBADD = am_libwmflite_la_OBJECTS = api.lo bbuf.lo meta.lo player.lo \ recorder.lo libwmflite_la_OBJECTS = $(am_libwmflite_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(io_wmf_la_SOURCES) $(libwmf_la_SOURCES) \ $(libwmflite_la_SOURCES) DIST_SOURCES = $(io_wmf_la_SOURCES) $(libwmf_la_SOURCES) \ $(libwmflite_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @WMF_CFLAGS@ @GDK_PIXBUF_CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ @WMF_DEFS@ $(DEFHEAVY) $(GDK_PIXBUF_DEFS) \ -DPACKAGE=\"@PACKAGE@\" \ -DVERSION=\"@VERSION@\" \ -DWMF_FONTDIR=\"@WMF_FONTDIR@\" \ -DWMF_GS_FONTDIR=\"@WMF_GS_FONTDIR@\" \ -DWMF_SYS_FONTMAP=\"@WMF_SYS_FONTMAP@\" \ -DWMF_XTRA_FONTMAP=\"@WMF_XTRA_FONTMAP@\" \ -DWMF_GS_FONTMAP=\"@WMF_GS_FONTMAP@\" DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ @LIBWMF_BUILD_ALL_FALSE@LIBHEAVY = @LIBWMF_BUILD_ALL_TRUE@LIBHEAVY = libwmf.la @LIBWMF_BUILD_ALL_FALSE@DIRHEAVY = . @LIBWMF_BUILD_ALL_TRUE@DIRHEAVY = extra ipa . convert @LIBWMF_BUILD_ALL_FALSE@DEFHEAVY = @LIBWMF_BUILD_ALL_TRUE@DEFHEAVY = -DLIBWMF_INCLUDE_TRIO_H=1 @LIBWMF_GDK_PIXBUF_FALSE@GDK_PIXBUF_PLUGIN = @LIBWMF_GDK_PIXBUF_TRUE@GDK_PIXBUF_PLUGIN = io-wmf.la @LIBWMF_GDK_PIXBUF_FALSE@GDK_PIXBUF_DEFS = @LIBWMF_GDK_PIXBUF_TRUE@GDK_PIXBUF_DEFS = -DGDK_PIXBUF_ENABLE_BACKEND=1 DIST_SUBDIRS = extra ipa . convert SUBDIRS = $(DIRHEAVY) INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_builddir) lib_LTLIBRARIES = libwmflite.la $(LIBHEAVY) libwmflite_la_SOURCES = api.c bbuf.c meta.c player.c recorder.c libwmflite_la_LDFLAGS = $(SYS_LIBM) \ -no-undefined \ -version-info $(LT_LITE_CURRENT):$(LT_LITE_REVISION):$(LT_LITE_AGE) \ -release $(LT_RELEASE) -export-dynamic libwmf_la_SOURCES = font.c stream.c wmf.c xml.c @LIBWMF_OPT_TRIO_FALSE@LIBTRIO = @LIBWMF_OPT_TRIO_TRUE@LIBTRIO = extra/trio/libtrio.la @LIBWMF_OPT_SYS_GD_FALSE@LIBGD = extra/gd/libgd.la @LIBWMF_OPT_SYS_GD_TRUE@LIBGD = libwmf_la_LIBADD = ipa/libipa.la libwmflite.la $(LIBGD) $(LIBTRIO) @WMF_LIBFLAGS@ libwmf_la_LDFLAGS = \ -no-undefined \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ -release $(LT_RELEASE) -export-dynamic loaderdir = $(libdir)/$(GDK_PIXBUF_DIR) loader_LTLIBRARIES = $(GDK_PIXBUF_PLUGIN) io_wmf_la_SOURCES = io-wmf.c io_wmf_la_LIBADD = libwmf.la libwmflite.la @GDK_PIXBUF_LIBS@ io_wmf_la_LDFLAGS = -no-undefined -module -avoid-version PLAYERHEADERS = \ player/clip.h \ player/color.h \ player/coord.h \ player/dc.h \ player/defaults.h \ player/meta.h \ player/record.h \ player/region.h EXTRA_DIST = wmfdefs.h metadefs.h player.h $(PLAYERHEADERS) recorder.h \ api.h bbuf.h font.h stream.h xml.h all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done install-loaderLTLIBRARIES: $(loader_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(loaderdir)" || $(mkdir_p) "$(DESTDIR)$(loaderdir)" @list='$(loader_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) --mode=install $(loaderLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(loaderdir)/$$f'"; \ $(LIBTOOL) --mode=install $(loaderLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(loaderdir)/$$f"; \ else :; fi; \ done uninstall-loaderLTLIBRARIES: @$(NORMAL_UNINSTALL) @set -x; list='$(loader_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(loaderdir)/$$p'"; \ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(loaderdir)/$$p"; \ done clean-loaderLTLIBRARIES: -test -z "$(loader_LTLIBRARIES)" || rm -f $(loader_LTLIBRARIES) @list='$(loader_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done io-wmf.la: $(io_wmf_la_OBJECTS) $(io_wmf_la_DEPENDENCIES) $(LINK) $(am_io_wmf_la_rpath) $(io_wmf_la_LDFLAGS) $(io_wmf_la_OBJECTS) $(io_wmf_la_LIBADD) $(LIBS) libwmf.la: $(libwmf_la_OBJECTS) $(libwmf_la_DEPENDENCIES) $(LINK) $(am_libwmf_la_rpath) $(libwmf_la_LDFLAGS) $(libwmf_la_OBJECTS) $(libwmf_la_LIBADD) $(LIBS) libwmflite.la: $(libwmflite_la_OBJECTS) $(libwmflite_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libwmflite_la_LDFLAGS) $(libwmflite_la_OBJECTS) $(libwmflite_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/api.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bbuf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io-wmf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/meta.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recorder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(mkdir_p) $(distdir)/player @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(loaderdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-loaderLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-loaderLTLIBRARIES install-exec-am: install-libLTLIBRARIES install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ uninstall-loaderLTLIBRARIES uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libLTLIBRARIES clean-libtool \ clean-loaderLTLIBRARIES clean-recursive ctags ctags-recursive \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-recursive distclean-tags distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-libLTLIBRARIES \ install-loaderLTLIBRARIES install-man install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-info-am uninstall-libLTLIBRARIES \ uninstall-loaderLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/src/io-wmf.c0000644000077100007710000002004410271774270014643 0ustar fjffjf00000000000000/* -*- Mode: C; tab-width: 8; c-basic-offset: 8 -*- */ /* GdkPixbuf library - WMF image loader * * Copyright (C) 2002 Dom Lachowicz * Copyright (C) 2002 Francis James Franklin * * Authors: Dom Lachowicz * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ /* This module is based on AbiWord and wvWare code and ideas done by * Francis James Franklin and io-svg.c in the * librsvg module by Matthias Clasen */ #include #include #include #include #include "libwmf/api.h" #include "libwmf/gd.h" G_MODULE_EXPORT void fill_vtable (GdkPixbufModule *module); G_MODULE_EXPORT void fill_info (GdkPixbufFormat *info); typedef struct { GdkPixbufModuleUpdatedFunc updated_func; GdkPixbufModulePreparedFunc prepared_func; GdkPixbufModuleSizeFunc size_func; gpointer user_data; GByteArray *data; } WmfContext; static void pixbuf_destroy_function (guchar * pixels, gpointer data) { g_free (pixels); } static guchar * pixbuf_gd_convert (int * gd_pixels, gint width, gint height) { guchar * pixels = NULL; guchar * px_ptr = NULL; int * gd_ptr = gd_pixels; gint i = 0; gint j = 0; gsize alloc_size = width * height * sizeof (guchar) * 4; unsigned int pixel; guchar r,g,b,a; pixels = (guchar *) g_try_malloc (alloc_size); if (pixels == NULL) return NULL; px_ptr = pixels; for (i = 0; i < height; i++) for (j = 0; j < width; j++) { pixel = (unsigned int) (*gd_ptr++); b = (guchar) (pixel & 0xff); pixel >>= 8; g = (guchar) (pixel & 0xff); pixel >>= 8; r = (guchar) (pixel & 0xff); pixel >>= 7; a = (guchar) (pixel & 0xfe); a ^= 0xff; *px_ptr++ = r; *px_ptr++ = g; *px_ptr++ = b; *px_ptr++ = a; } return pixels; } static gboolean gdk_pixbuf__wmf_image_stop_load (gpointer data, GError **error) { /* will be used to represent the WMF in-memory * during the decoding process */ WmfContext *context = (WmfContext *)data; gboolean result = FALSE; guchar *pixels = NULL; GdkPixbuf *pixbuf = NULL; /* the bits we need to decode the WMF via libwmf2's GD layer */ wmf_error_t err; unsigned long flags; wmf_gd_t *ddata = NULL; wmfAPI *API = NULL; wmfAPI_Options api_options; wmfD_Rect bbox; int *gd_pixels = NULL; /* the natural width and height of the WMF or the user-specified with+height */ gint width, height; double resolution_x, resolution_y; if (error != NULL) *error = NULL; /* TODO: be smarter about getting the resolution from screen */ resolution_x = resolution_y = 72.0; width = height = -1; flags = WMF_OPT_IGNORE_NONFATAL | WMF_OPT_FUNCTION; api_options.function = wmf_gd_function; err = wmf_api_create (&API, flags, &api_options); if (err != wmf_E_None) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, "Couldn't create WMF reader"); goto _wmf_error; } ddata = WMF_GD_GetData (API); ddata->type = wmf_gd_image; err = wmf_mem_open (API, context->data->data, context->data->len); if (err != wmf_E_None) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_FAILED, "Couldn't create reader API"); goto _wmf_error; } err = wmf_scan (API, 0, &bbox); if (err != wmf_E_None) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE, "Error scanning WMF file"); goto _wmf_error; } /* find out how large the app wants the pixbuf to be */ if (context->size_func != NULL) (*context->size_func) (&width, &height, context->user_data); /* if these are <= 0, assume user wants the natural size of the wmf */ if (width <= 0 || height <= 0) { err = wmf_display_size (API, &width, &height, resolution_x, resolution_y); if (err != wmf_E_None || width <= 0 || height <= 0) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE, "Couldn't determine image size"); goto _wmf_error; } } ddata->bbox = bbox; ddata->width = width; ddata->height = height; err = wmf_play (API, 0, &bbox); if (err != wmf_E_None) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE, "Couldn't decode WMF file into pixbuf"); goto _wmf_error; } wmf_mem_close (API); if (ddata->gd_image != NULL) gd_pixels = wmf_gd_image_pixels (ddata->gd_image); if (gd_pixels == NULL) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE, "Couldn't decode WMF file - no output (huh?)"); goto _wmf_error; } pixels = pixbuf_gd_convert (gd_pixels, width, height); if (pixels == NULL) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, "Couldn't create RGBA buffer"); goto _wmf_error; } wmf_api_destroy (API); API = NULL; pixbuf = gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB, TRUE, 8, width, height, width * 4, pixbuf_destroy_function, NULL); if (pixbuf == NULL) { g_set_error (error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE, "Couldn't decode WMF file"); goto _wmf_error; } if (context->prepared_func != NULL) (* context->prepared_func) (pixbuf, NULL, context->user_data); if (context->updated_func != NULL) (* context->updated_func) (pixbuf, 0, 0, gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf), context->user_data); result = TRUE; _wmf_error: if (API != NULL) wmf_api_destroy (API); g_byte_array_free (context->data, TRUE); g_free (context); return result; } static gboolean gdk_pixbuf__wmf_image_load_increment (gpointer data, const guchar *buf, guint size, GError **error) { WmfContext *context = (WmfContext *)data; if (error != NULL) *error = NULL; g_byte_array_append (context->data, buf, size); return TRUE; } static gpointer gdk_pixbuf__wmf_image_begin_load (GdkPixbufModuleSizeFunc size_func, GdkPixbufModulePreparedFunc prepared_func, GdkPixbufModuleUpdatedFunc updated_func, gpointer user_data, GError **error) { WmfContext *context = g_new0 (WmfContext, 1); if (error != NULL) *error = NULL; context->prepared_func = prepared_func; context->updated_func = updated_func; context->size_func = size_func; context->user_data = user_data; context->data = g_byte_array_new (); return (gpointer)context; } void fill_vtable (GdkPixbufModule *module) { module->begin_load = gdk_pixbuf__wmf_image_begin_load; module->stop_load = gdk_pixbuf__wmf_image_stop_load; module->load_increment = gdk_pixbuf__wmf_image_load_increment; } void fill_info (GdkPixbufFormat *info) { /* Magic header is sometimes: "\327\315\306\232" or "\001\000\011\000" * Impossible to recognize all WMFs this way, as not all WMFs have headers */ static GdkPixbufModulePattern signature[] = { { "\xd7\xcd\xc6\x9a", NULL, 100 }, { "\x01\x00\x09\x00", NULL, 100 }, { NULL, NULL, 0 } }; static gchar *mime_types[] = { "image/x-wmf", NULL }; static gchar *extensions[] = { "wmf", "apm", NULL }; info->name = "wmf"; info->signature = signature; info->description = "Windows Metafile"; info->mime_types = mime_types; info->extensions = extensions; info->flags = 0; } libwmf-0.2.8.4/src/font.c0000644000077100007710000011741710271767772014437 0ustar fjffjf00000000000000/* libwmf (font.c): library for wmf conversion Copyright (C) 2000,2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include "wmfdefs.h" #include "font.h" #ifdef _WIN32 extern char* _libwmf_get_fontdir(); static char* _libwmf_get_xtra_fontmap (void) { static char retval[1000] = ""; if (retval[0] == '\0') { strcpy (retval, _libwmf_get_fontdir ()); strcat (retval, "\\share\\libwmf\\fonts\\fontmap"); } return retval; } #undef WMF_XTRA_FONTMAP #define WMF_XTRA_FONTMAP _libwmf_get_xtra_fontmap () static char* remap_font_file_name(wmfAPI* API,char* filename) { /* If filename is prefixed with the compile-time WMF_FONTDIR, * substitute the run-time font directory. */ char* retval; if (strncmp (filename, WMF_FONTDIR "/", strlen (WMF_FONTDIR "/")) == 0) { retval = wmf_malloc (API,strlen (filename) - strlen (WMF_FONTDIR) + strlen (_libwmf_get_fontdir ()) + 1); strcpy (retval,_libwmf_get_fontdir ()); strcat (retval,filename + strlen (WMF_FONTDIR)); } else { retval = wmf_strdup (API,filename); } return retval; } #endif static void ipa_font_add_wmf (wmfAPI* API,wmfFontMap* mapping) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfFontMap* more; unsigned int i = 0; while (font_data->wmf[i].name) { if (strcmp (font_data->wmf[i].name,mapping->name) == 0) break; i++; } if (font_data->wmf[i].name) return; /* Entry exists already */ if ((i & 0x0f) == (unsigned int) 0x0f) { more = (wmfFontMap*) wmf_realloc (API,font_data->wmf,(i + 0x11) * sizeof (wmfFontMap)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } font_data->wmf = more; } font_data->wmf[i].name = wmf_strdup (API,mapping->name ); font_data->wmf[i].normal = wmf_strdup (API,mapping->normal ); font_data->wmf[i].italic = wmf_strdup (API,mapping->italic ); font_data->wmf[i].bold = wmf_strdup (API,mapping->bold ); font_data->wmf[i].bolditalic = wmf_strdup (API,mapping->bolditalic); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } i++; font_data->wmf[i].name = 0; } static void ipa_font_add_sub (wmfAPI* API,wmfMapping* mapping) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfMapping* more; unsigned int i = 0; while (font_data->sub[i].name) { if (strcmp (font_data->sub[i].name,mapping->name) == 0) break; i++; } if (font_data->sub[i].name) return; /* Entry exists already */ if ((i & 0x0f) == (unsigned int) 0x0f) { more = (wmfMapping*) wmf_realloc (API,font_data->sub,(i + 0x11) * sizeof (wmfMapping)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } font_data->sub = more; } font_data->sub[i].name = wmf_strdup (API,mapping->name ); font_data->sub[i].mapping = wmf_strdup (API,mapping->mapping); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } i++; font_data->sub[i].name = 0; } static void ipa_font_add_ps (wmfAPI* API,wmfMapping* mapping) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfFT_Mapping* more; unsigned int i = 0; while (font_data->ps[i].name) { if (strcmp (font_data->ps[i].name,mapping->name) == 0) break; i++; } if (font_data->ps[i].name) return; /* Entry exists already */ if ((i & 0x0f) == (unsigned int) 0x0f) { more = (wmfFT_Mapping*) wmf_realloc (API,font_data->ps,(i + 0x11) * sizeof (wmfFT_Mapping)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } font_data->ps = more; } font_data->ps[i].name = wmf_strdup (API,mapping->name ); font_data->ps[i].mapping = wmf_strdup (API,mapping->mapping); font_data->ps[i].encoding = mapping->encoding; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } font_data->ps[i].face = 0; i++; font_data->ps[i].name = 0; } static void ipa_font_add_cache (wmfAPI* API,wmfFT_CacheEntry* entry) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfFT_CacheEntry* more; unsigned int i = 0; while (font_data->cache[i].name) { if (strcmp (font_data->cache[i].path,entry->path) == 0) break; i++; } if (font_data->cache[i].name) return; /* Entry exists already */ if ((i & 0x0f) == (unsigned int) 0x0f) { more = (wmfFT_CacheEntry*) wmf_realloc (API,font_data->cache,(i + 0x11) * sizeof (wmfFT_CacheEntry)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } font_data->cache = more; } font_data->cache[i].name = wmf_strdup (API,entry->name); font_data->cache[i].path = wmf_strdup (API,entry->path); font_data->cache[i].face = entry->face; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } i++; font_data->cache[i].name = 0; } char* wmf_ipa_font_lookup (wmfAPI* API,char* ps_name) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; unsigned int i = 0; while (font_data->cache[i].name) { if (strcmp (font_data->cache[i].name,ps_name) == 0) break; i++; } if (font_data->cache[i].name == 0) return (0); return (font_data->cache[i].path); } void wmf_ipa_font_init (wmfAPI* API,wmfAPI_Options* options) { wmfFontData* font_data = 0; wmfFontmapData* fontmap_data = 0; unsigned int i; unsigned int count; API->font_data = wmf_malloc (API,sizeof (wmfFontData)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } font_data = (wmfFontData*) API->font_data; font_data->map = wmf_ipa_font_map; font_data->stringwidth = wmf_ipa_font_stringwidth; font_data->user_data = wmf_malloc (API,sizeof (wmfFontmapData)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data = (wmfFontmapData*) font_data->user_data; API->fonts = (char**) wmf_malloc (API,16 * sizeof (char*)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->fonts[0] = 0; fontmap_data->fontdirs = (char**) wmf_malloc (API,16 * sizeof (char*)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data->fontdirs[0] = 0; fontmap_data->wmf = (wmfFontMap*) wmf_malloc (API,16 * sizeof (wmfFontMap)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data->wmf[0].name = 0; if ((API->flags & WMF_OPT_FONTMAP) && options->font.wmf) { i = 0; while (options->font.wmf[i].name) { ipa_font_add_wmf (API,&(options->font.wmf[i])); if (ERR (API)) break; i++; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } count = sizeof WMFFontMap / sizeof (wmfFontMap); for (i = 0; i < count; i++) { ipa_font_add_wmf (API,&(WMFFontMap[i])); if (ERR (API)) break; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data->sub = (wmfMapping*) wmf_malloc (API,16 * sizeof (wmfMapping)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data->sub[0].name = 0; if ((API->flags & WMF_OPT_FONTMAP) && options->font.sub) { i = 0; while (options->font.sub[i].name) { ipa_font_add_sub (API,&(options->font.sub[i])); if (ERR (API)) break; i++; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } count = sizeof SubFontMap / sizeof (wmfMapping); for (i = 0; i < count; i++) { ipa_font_add_sub (API,&(SubFontMap[i])); if (ERR (API)) break; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data->ps = (wmfFT_Mapping*) wmf_malloc (API,16 * sizeof (wmfFT_Mapping)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data->ps[0].name = 0; fontmap_data->cache = (wmfFT_CacheEntry*) wmf_malloc (API,16 * sizeof (wmfFT_CacheEntry)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fontmap_data->cache[0].name = 0; if ((API->flags & WMF_OPT_FONTMAP) && options->font.ps) { i = 0; while (options->font.ps[i].name) { ipa_font_add_ps (API,&(options->font.ps[i])); if (ERR (API)) break; i++; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } count = 13; for (i = 0; i < count; i++) { ipa_font_add_ps (API,&(PSFontMap[i])); if (ERR (API)) break; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } if (FT_Init_FreeType (&(fontmap_data->Library)) != 0) { WMF_ERROR (API,"Failed to initialize freetype..."); API->err = wmf_E_DeviceError; fontmap_data->Library = 0; } API->flags |= API_FTLIBRARY_OPEN; fontmap_data->FD.max = 0; fontmap_data->FD.len = 0; fontmap_data->FD.FI = 0; if (API->flags & WMF_OPT_SYS_FONTS) { if (API->flags & WMF_OPT_SYS_FONTMAP) { wmf_ipa_font_map_xml (API,&(fontmap_data->FD),options->sys_fontmap_file); } else { wmf_ipa_font_map_xml (API,&(fontmap_data->FD),WMF_SYS_FONTMAP); } } if (API->flags & WMF_OPT_XTRA_FONTS) { if (API->flags & WMF_OPT_XTRA_FONTMAP) { wmf_ipa_font_map_xml (API,&(fontmap_data->FD),options->xtra_fontmap_file); } else { wmf_ipa_font_map_xml (API,&(fontmap_data->FD),WMF_XTRA_FONTMAP); } } fontmap_data->GS.max = 0; fontmap_data->GS.len = 0; fontmap_data->GS.FI = 0; if (API->flags & WMF_OPT_GS_FONTMAP) { wmf_ipa_font_map_gs (API,&(fontmap_data->GS),options->gs_fontmap_file); } else { wmf_ipa_font_map_gs (API,&(fontmap_data->GS),WMF_GS_FONTMAP); } } void wmf_ipa_font_map_set (wmfAPI* API,wmfMap map) { wmfFontData* font_data = (wmfFontData*) API->font_data; font_data->map = map; } void wmf_ipa_font_dir (wmfAPI* API,char* fontdir) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; char** more; unsigned int i = 0; while (font_data->fontdirs[i]) { if (strcmp (font_data->fontdirs[i],fontdir) == 0) break; i++; } if (font_data->fontdirs[i]) return; /* Entry exists already */ if ((i & 0x0f) == (unsigned int) 0x0f) { more = (char**) wmf_realloc (API,font_data->fontdirs,(i + 0x11) * sizeof (char*)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } font_data->fontdirs = more; } font_data->fontdirs[i] = wmf_strdup (API,fontdir); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } i++; font_data->fontdirs[i] = 0; } static void ipa_font_add_api (wmfAPI* API,char* name) { char** more; unsigned int i = 0; while (API->fonts[i]) { if (strcmp (API->fonts[i],name) == 0) break; i++; } if (API->fonts[i]) return; /* Entry exists already */ if ((i & 0x0f) == (unsigned int) 0x0f) { more = (char**) wmf_realloc (API,API->fonts,(i + 0x11) * sizeof (char*)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->fonts = more; } API->fonts[i] = wmf_strdup (API,name); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } i++; API->fonts[i] = 0; } /* Returns width of string in points, assuming (unstretched) font size of 1pt * WARNING: This is not very accurate. If anyone has a better idea, then... */ float wmf_ipa_font_stringwidth (wmfAPI* API,wmfFont* font,char* str) { FT_Face face = WMF_FONT_FTFACE (font); FT_Vector delta; FT_Bool use_kerning; FT_UInt glyph_index; FT_UInt previous; float width; int i; int length; if ((face == 0) || (str == 0)) { WMF_DEBUG (API,"wmf_ipa_font_stringwidth: NULL face or str - ??"); return 0; } FT_Set_Char_Size (face,0,12 * 64,300,100); FT_Set_Transform (face,0,0); use_kerning = FT_HAS_KERNING (face); previous = 0; width = 0; length = strlen (str); for (i = 0; i < length; i++) { /* convert character code to glyph index */ /* ==== Should this be unsigned ?? ==== */ glyph_index = FT_Get_Char_Index (face,str[i]); if (use_kerning && previous && glyph_index) { FT_Get_Kerning (face,previous,glyph_index,0,&delta); width += (float) (delta.x >> 6); } if (glyph_index) { /* load glyph image into the slot. DO NOT RENDER IT! */ FT_Load_Glyph (face,glyph_index,FT_LOAD_DEFAULT); if (face->glyph) width += (float) (face->glyph->advance.x >> 6); } previous = glyph_index; } return (width*72/(300*12)); } static float ipa_char_position (wmfAPI* API,wmfFont* font,char* str,char* last) { FT_Face face = WMF_FONT_FTFACE (font); FT_Vector delta; FT_Bool use_kerning; FT_UInt glyph_index; FT_UInt previous; float width; char* ptr; FT_Set_Char_Size (face,0,12 * 64,300,100); FT_Set_Transform (face,0,0); use_kerning = FT_HAS_KERNING (face); previous = 0; width = 0; for (ptr = str; ptr <= last; ptr++) { /* convert character code to glyph index */ /* === Should this be unsigned ?? ==== */ glyph_index = FT_Get_Char_Index (face,(*ptr)); if (use_kerning && previous && glyph_index) { FT_Get_Kerning (face,previous,glyph_index,0,&delta); width += (float) (delta.x >> 6); } if (ptr == last) break; /* load glyph image into the slot. DO NOT RENDER IT! */ FT_Load_Glyph (face,glyph_index,FT_LOAD_DEFAULT); width += (float) (face->glyph->advance.x >> 6); previous = glyph_index; } return (width*72/(300*12)); } void wmf_ipa_draw_text (wmfAPI* API,wmfDrawText_t* draw_text,wmfCharDrawer ipa_draw_text) { wmfDrawText_t draw_char; size_t i; size_t length; char buffer[2]; float text_width; float cos_theta; float sin_theta; double theta; length = strlen (draw_text->str); theta = - WMF_TEXT_ANGLE (draw_text->dc->font); cos_theta = (float) cos (theta); sin_theta = (float) sin (theta); for (i = 0; i < length; i++) { draw_char.dc = draw_text->dc; buffer[0] = draw_text->str[i]; buffer[1] = 0; text_width = ipa_char_position (API,draw_text->dc->font,draw_text->str,draw_text->str+i); text_width = (float) ((double) text_width * draw_text->font_height * draw_text->font_ratio); draw_char.pt.x = draw_text->pt.x + text_width * cos_theta; draw_char.pt.y = draw_text->pt.y + text_width * sin_theta; draw_char.TL.x = 0; draw_char.TL.y = 0; draw_char.BR.x = 0; draw_char.BR.y = 0; draw_char.bbox.TL.x = 0; draw_char.bbox.TL.y = 0; draw_char.bbox.TR.x = 0; draw_char.bbox.TR.y = 0; draw_char.bbox.BR.x = 0; draw_char.bbox.BR.y = 0; draw_char.bbox.BL.x = 0; draw_char.bbox.BL.y = 0; draw_char.str = buffer; draw_char.flags = draw_text->flags; draw_char.font_height = draw_text->font_height; draw_char.font_ratio = draw_text->font_ratio; ipa_draw_text (API,&draw_char); } } void wmf_ipa_font_map_xml (wmfAPI* API,wmfXML_FontData* FD,char* xmlfontmap) { FD->max = 0; FD->len = 0; FD->FI = 0; #ifdef HAVE_EXPAT exmlfontmap_read (API,FD,xmlfontmap); return; #endif /* HAVE_EXPAT */ #ifdef HAVE_LIBXML2 xml2fontmap_read (API,FD,xmlfontmap); return; #endif /* HAVE_LIBXML2 */ WMF_DEBUG (API,"warning: no XML support!"); } #ifdef HAVE_EXPAT #include #define EXML_BUFSIZE 1024 static void exml_start (void* user_data,const char* tag,const char** attributes) { const char** attr; EXML_FontData* exml_data = (EXML_FontData*) user_data; wmfAPI* API = exml_data->API; wmfXML_FontData* FD = exml_data->FD; wmfXML_FontInfo* more = 0; wmfXML_FontInfo FI; if ((tag == 0) || (attributes == 0)) return; if (strcmp (tag,"font")) return; FI.format = 0; FI.metrics = 0; FI.glyphs = 0; FI.name = 0; FI.fullname = 0; FI.familyname = 0; FI.weight = 0; FI.version = 0; FI.alias = 0; attr = attributes; while (*attr) { if (strcmp ((*attr),"format") == 0) { attr++; FI.format = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"metrics") == 0) { attr++; FI.metrics = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"glyphs") == 0) { attr++; FI.glyphs = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"name") == 0) { attr++; FI.name = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"fullname") == 0) { attr++; FI.fullname = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"familyname") == 0) { attr++; FI.familyname = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"weight") == 0) { attr++; FI.weight = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"version") == 0) { attr++; FI.version = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"alias") == 0) { attr++; FI.alias = wmf_strdup (API,(char*) (*attr)); } else attr++; attr++; } if (FD->len == FD->max) { more = wmf_realloc (API,FD->FI,(FD->max + 32) * sizeof (wmfXML_FontInfo)); if (more) { FD->FI = more; FD->max += 32; } } if (FD->len < FD->max) { FD->FI[FD->len] = FI; FD->len++; } } static void exmlfontmap_read (wmfAPI* API,wmfXML_FontData* FD,char* xmlfontmap) { int status = 0; int length; char buffer[EXML_BUFSIZE]; void* user_data; FILE* in; EXML_FontData exml_data; XML_Parser exml; FD->max = 32; FD->len = 0; FD->FI = wmf_malloc (API,FD->max * sizeof (wmfXML_FontInfo)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); FD->max = 0; return; } in = fopen (xmlfontmap,"r"); if (in == 0) { WMF_DEBUG (API,"unable to open xml-fontmap"); FD->max = 0; wmf_free (API,FD->FI); FD->FI = 0; return; } exml = XML_ParserCreate (0); if (exml == 0) { WMF_DEBUG (API,"error creating expat-xml parser"); FD->max = 0; wmf_free (API,FD->FI); FD->FI = 0; fclose (in); return; } exml_data.API = API; exml_data.FD = FD; user_data = (void*) (&exml_data); XML_SetUserData (exml,user_data); XML_SetStartElementHandler (exml,exml_start); while (fgets (buffer,EXML_BUFSIZE,in)) { length = (int) strlen (buffer); if (XML_Parse (exml,buffer,length,0) == 0) { WMF_DEBUG (API,"expat-xml: error parsing xml fontmap"); status = 1; break; } } if (status == 0) XML_Parse (exml,buffer,0,1); XML_ParserFree (exml); fclose (in); if (FD->len == 0) { FD->max = 0; wmf_free (API,FD->FI); FD->FI = 0; } } #endif /* HAVE_EXPAT */ #ifdef HAVE_LIBXML2 #include #include static void xml2_start (void* user_data,const char* tag,const char** attributes) { const char** attr; XML2_FontData* xml2_data = (XML2_FontData*) user_data; wmfAPI* API = xml2_data->API; wmfXML_FontData* FD = xml2_data->FD; wmfXML_FontInfo* more = 0; wmfXML_FontInfo FI; if ((tag == 0) || (attributes == 0)) return; if (strcmp (tag,"font")) return; FI.format = 0; FI.metrics = 0; FI.glyphs = 0; FI.name = 0; FI.fullname = 0; FI.familyname = 0; FI.weight = 0; FI.version = 0; FI.alias = 0; if (attributes == 0) { WMF_DEBUG (API,"xml2_start: found NULL instead of ptr-to-NULL!\n"); return; } attr = attributes; while (*attr) { if (strcmp ((*attr),"format") == 0) { attr++; FI.format = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"metrics") == 0) { attr++; FI.metrics = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"glyphs") == 0) { attr++; FI.glyphs = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"name") == 0) { attr++; FI.name = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"fullname") == 0) { attr++; FI.fullname = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"familyname") == 0) { attr++; FI.familyname = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"weight") == 0) { attr++; FI.weight = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"version") == 0) { attr++; FI.version = wmf_strdup (API,(char*) (*attr)); } else if (strcmp ((*attr),"alias") == 0) { attr++; FI.alias = wmf_strdup (API,(char*) (*attr)); } else attr++; attr++; } if (FD->len == FD->max) { more = wmf_realloc (API,FD->FI,(FD->max + 32) * sizeof (wmfXML_FontInfo)); if (more) { FD->FI = more; FD->max += 32; } } if (FD->len < FD->max) { FD->FI[FD->len] = FI; FD->len++; } } static void xml2fontmap_read (wmfAPI* API,wmfXML_FontData* FD,char* xmlfontmap) { XML2_FontData xml2_data; xmlParserCtxtPtr ctxt; xmlSAXHandler sax; memset ((void*) (&sax), 0, sizeof (xmlSAXHandler)); sax.startElement = (startElementSAXFunc) xml2_start; xml2_data.API = API; xml2_data.FD = FD; ctxt = xmlCreateFileParserCtxt (xmlfontmap); if (ctxt == 0) return; ctxt->sax = &sax; ctxt->userData = (void*) (&xml2_data); xmlParseDocument (ctxt); ctxt->sax = 0; xmlFreeParserCtxt (ctxt); } #endif /* HAVE_LIBXML2 */ void wmf_ipa_font_map_gs (wmfAPI* API,wmfGS_FontData* FD,char* gsfontmap) { ipa_font_gs_file (API,FD,gsfontmap); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } /* TODO ?? */ } static void ipa_font_gs_file (wmfAPI* API,wmfGS_FontData* FD,char* file) { char* line = 0; char* name = 0; char* alias = 0; FILE* in = 0; in = fopen (file,"r"); if (in == 0) { WMF_DEBUG (API,"ipa_font_gs_file: unable to read ghostscript fontmap!\n"); return; } while (wmf_true) { line = ipa_font_gs_readline (API,in); if (line == 0) break; if (*line) { name = line; alias = line; while (!isspace ((int) (*alias))) { if ((*alias) == 0) break; alias++; } if (*alias) { (*alias) = 0; alias++; } ipa_font_gs_add (API,FD,name,alias); } wmf_free (API,line); } fclose (in); } static void ipa_font_gs_add (wmfAPI* API,wmfGS_FontData* FD,char* name,char* alias) { wmfGS_FontInfo* more = 0; wmf_bool_t fMatched; unsigned int i; if ((name == 0) || (alias == 0)) return; if (name[0] != '/') return; if ((alias[0] != '/') && (alias[0] != '(')) return; if ((alias[0] == '(') && (alias[strlen (alias) - 1] != ')')) return; if (FD->FI == 0) { FD->FI = (wmfGS_FontInfo*) wmf_calloc (API,0x20,sizeof (wmfGS_FontInfo)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } FD->max = 0x20; FD->len = 0; } fMatched = wmf_false; for (i = 0; i < FD->len; i++) { if (strcmp (FD->FI[i].name,name+1) == 0) { wmf_free (API,FD->FI[i].alias); FD->FI[i].alias = wmf_strdup (API,alias); fMatched = wmf_true; break; } } if (fMatched) return; if (FD->len == FD->max) { more = (wmfGS_FontInfo*) wmf_realloc (API,FD->FI,(FD->max+0x20) * sizeof (wmfGS_FontInfo)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } FD->FI = more; FD->max += 0x20; } FD->FI[FD->len].name = wmf_strdup (API,name+1); FD->FI[FD->len].alias = wmf_strdup (API,alias); FD->len++; } static char* ipa_font_gs_alias (wmfAPI* API,wmfGS_FontData* FD,char* name) { char* alias = 0; unsigned int i; for (i = 0; i < FD->len; i++) { if (strcmp (FD->FI[i].name,name) == 0) { alias = FD->FI[i].alias; break; } } return (alias); } static char* ipa_font_gs_readline (wmfAPI* API,FILE* in) { char buf[128]; char* line = 0; char* more = 0; char* ptr = 0; char* ptr1 = 0; char* ptr2 = 0; wmf_bool_t fBackSlash; wmf_bool_t fContinue; wmf_bool_t fReadExtra = wmf_false; if (fgets (buf,128,in) == 0) return (0); fBackSlash = wmf_false; fContinue = wmf_true; ptr = buf; while (*ptr) { if (((*ptr) == '%') && (!fBackSlash)) { fContinue = wmf_false; if (buf[strlen(buf)-1] != '\n') { fReadExtra = wmf_true; } else { fReadExtra = wmf_false; } (*ptr) = 0; break; } if ((*ptr) == '\n') { if (fBackSlash) { fContinue = wmf_true; ptr--; } else { fContinue = wmf_false; } (*ptr) = 0; break; } if ((*ptr) == '\\') { fBackSlash = wmf_true; } else { fBackSlash = wmf_false; } ptr++; } line = wmf_strdup (API,buf); if (line == 0) return (line); while (fContinue) { if (fgets (buf,10,in) == 0) { wmf_free (API,line); return (0); } fBackSlash = wmf_false; fContinue = wmf_true; ptr = buf; while (*ptr) { if (((*ptr) == '%') && (!fBackSlash)) { fContinue = wmf_false; fReadExtra = wmf_true; (*ptr) = 0; break; } if ((*ptr) == '\n') { if (fBackSlash) { fContinue = wmf_true; ptr--; } else { fContinue = wmf_false; } (*ptr) = 0; break; } if ((*ptr) == '\\') { fBackSlash = wmf_true; } else { fBackSlash = wmf_false; } ptr++; } more = wmf_str_append (API,line,buf); wmf_free (API,line); line = more; if (line == 0) { fContinue = wmf_false; break; } } if (line == 0) return (0); if (fReadExtra) while (buf[strlen(buf)-1] != '\n') fgets (buf,128,in); /* Strip the string */ ptr1 = line; ptr2 = line; while (*ptr2) { if (!isspace ((int) (*ptr2))) break; ptr2++; } while (*ptr2) { if (isspace ((int) (*ptr2))) break; (*ptr1) = (*ptr2); ptr1++; ptr2++; } if (*ptr2) { (*ptr1) = (*ptr2); ptr1++; ptr2++; } while (*ptr2) { if (!isspace ((int) (*ptr2))) break; ptr2++; } while (*ptr2) { if (isspace ((int) (*ptr2))) break; (*ptr1) = (*ptr2); ptr1++; ptr2++; } (*ptr1) = 0; while ((--ptr1) >= line) { if (!isspace ((int) (*ptr1))) break; (*ptr1) = 0; } ptr1 = line; ptr2 = line; while (*ptr2) { if ((*ptr2) == '%') ptr1--; (*ptr1) = (*ptr2); ptr1++; ptr2++; } (*ptr1) = 0; return (line); } /** * This is the fun bit. * * @param API the API handle * @param font WMF font object: font's \b family \b name, \b italics flag, and the \b weight * * Other inputs include: a ghostscript-style Fontmap, and up to two XML RedHat-style fontmaps. (These are * all parsed earlier.) There are also the fallback 13 standard postscript fonts. And then there is a list * of font directories to search for fonts. * * \b libwmf requires fonts to have a postscript name, and maintains an internal cache of glyphs path and * \b freetype font face, keyed to postscript font name. Unfortunately, although the XML fontmaps do have * font \b family \b name, the GS fontmap does not. In the latter, therefore, matching WMF font info to * postscript font name is hit-and-miss. */ void wmf_ipa_font_map (wmfAPI* API,wmfFont* font) { wmfIPAFont* ipa_font = 0; char* mapping = 0; if (font == 0) return; if (font->user_data == 0) { font->user_data = wmf_malloc (API,sizeof (wmfIPAFont)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } ipa_font = (wmfIPAFont*) font->user_data; ipa_font->ps_name = 0; ipa_font->ft_face = 0; /* Check system fonts for match and load font face if found... */ if (ipa_font_sys_face (API,font,ipa_font_sys_map (API,font))) return; /* Check GS fontmap for match and load font face if found... */ if (ipa_font_gs_face (API,font,ipa_font_gs_map (API,font))) return; /* otherwise, load one of standard 13... */ mapping = ipa_font_std (API,font); if (mapping) { if (ipa_font_face (API,font,mapping)) return; } WMF_ERROR (API,"wmf_ipa_font_map: failed to load *any* font!"); API->err = wmf_E_BadFile; } /** * Searches XML Fontmap for font-name matching WMF's font name. * * Basically, this is matching a font's family name + italic + weight parameters to a postscript name. * Font weight is problematic. */ static wmfXML_FontInfo* ipa_font_sys_map (wmfAPI* API,wmfFont* font) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfXML_FontInfo* FI = 0; unsigned int i; for (i = 0; i < font_data->FD.len; i++) { if (strcmp (font->lfFaceName,font_data->FD.FI[i].familyname) == 0) { if ( wmf_strstr (font_data->FD.FI[i].fullname,"Italic") || wmf_strstr (font_data->FD.FI[i].fullname,"Oblique")) { if (font->lfItalic != 1) continue; } else { if (font->lfItalic == 1) continue; } if ( wmf_strstr (font_data->FD.FI[i].weight,"Bold") || wmf_strstr (font_data->FD.FI[i].weight,"Demi")) /* or "Medium" ?? */ { if (font->lfWeight <= 550) continue; } else { if (font->lfWeight > 550) continue; } FI = &(font_data->FD.FI[i]); break; } } return (FI); } /** * Checks XML Fontmap entry is valid before loading face. */ static FT_Face ipa_font_sys_face (wmfAPI* API,wmfFont* font,wmfXML_FontInfo* FI) { #if 0 wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; struct stat stat_buf; #endif FT_Face face = 0; if (FI == 0) return (0); if (FI->name == 0) { WMF_DEBUG (API,"no postscript name in system-font record?"); return (0); } if (FI->glyphs == 0) { WMF_DEBUG (API,"no glyphs in system-font record?"); return (0); } face = ipa_font_face (API,font,FI->name); return (face); } /** * Searches GS Fontmap for font-name matching WMF's font name. * * Basically, this is matching a font's family name + italic + weight parameters to a postscript name. * I have decided to test only the first word of the family name, so incorrect matches are probably. * Font weight is problematic as well. */ static wmfGS_FontInfo* ipa_font_gs_map (wmfAPI* API,wmfFont* font) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfGS_FontData* GS = &(font_data->GS); wmfGS_FontInfo* FI = 0; wmf_bool_t require_italic; wmf_bool_t require_bold; wmf_bool_t found_italic; wmf_bool_t found_bold; unsigned int name_length = 0; unsigned int i; char* name = 0; char* ptr = 0; if (GS->len == 0) return (0); name = font->lfFaceName; if (name == 0) { WMF_DEBUG (API,"No font name?"); API->err = wmf_E_Glitch; return (0); } /* Find first white-space character or eol */ ptr = name; while (!isspace (*ptr)) { if ((*ptr) == 0) break; ptr++; name_length++; } if (name_length == 0) { WMF_DEBUG (API,"Unexpectedly short font name?"); API->err = wmf_E_Glitch; return (0); } require_italic = ((font->lfItalic == 1) ? wmf_true : wmf_false); require_bold = ((font->lfWeight > 550) ? wmf_true : wmf_false); /* Search for match in GS Fontmap list */ for (i = 0; i < GS->len; i++) { if (strncmp (name,GS->FI[i].name,name_length) == 0) { found_italic = wmf_false; found_bold = wmf_false; if ( wmf_strstr (GS->FI[i].name,"Ital") || wmf_strstr (GS->FI[i].name,"Obli")) { found_italic = wmf_true; } if ( wmf_strstr (GS->FI[i].name,"Bold") || wmf_strstr (GS->FI[i].name,"Demi")) /* or "Medi" ?? */ { found_bold = wmf_true; } if ((require_italic == found_italic) && (require_bold == found_bold)) { FI = &(GS->FI[i]); break; } } } if (FI == 0) return (0); return (FI); } /** * Takes a [name]/[alias] pair from the GS Fontmap and tries to load [name] as a font, * and then, provided [alias] is aliased to a font-file & not a 3rd font-name, [alias]. */ static FT_Face ipa_font_gs_face (wmfAPI* API,wmfFont* font,wmfGS_FontInfo* FI) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; FT_Face face = 0; char* aalias = 0; if (FI == 0) return (0); face = ipa_font_face (API,font,FI->name); if (face) return (face); if (FI->alias[0] != '/') return (0); aalias = ipa_font_gs_alias (API,&(font_data->GS),FI->alias+1); if (aalias[0] != '(') { WMF_DEBUG (API,"font lookup is too complicated! Giving up..."); return (0); } face = ipa_font_face (API,font,FI->alias+1); return (face); } /** * Takes a postscript font name and: * * (1) Check to see whether font has been cached; if so: return (ipa_font_face_cached ()) * (2) Check for font in XML table; if found: * (a) ipa_font_face_open () * (b) return (ipa_font_face_cached ()) * (3) Check for font with file in GS table; if so: * (a) search for font file in font search path; if found: * ( i) ipa_font_face_open () * (ii) return (ipa_font_face_cached ()) * (4) Check for font in internal table; if found: * (a) ipa_font_face_open () * (b) return (ipa_font_face_cached ()) * (5) return (0) */ static FT_Face ipa_font_face (wmfAPI* API,wmfFont* font,char* ps_name) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; FT_Face face = 0; unsigned int i; char* name = 0; char* suffix = 0; char* glyphs = 0; char* metrics = 0; /* (1) Check to see whether font has been cached; if so: return (ipa_font_face_cached ()) */ face = ipa_font_face_cached (API,font,ps_name); if (face) return (face); /* (2) Check for font in XML table */ glyphs = 0; metrics = 0; for (i = 0; i < font_data->FD.len; i++) { if (font_data->FD.FI[i].name == 0) continue; if (strcmp (ps_name,font_data->FD.FI[i].name) == 0) { glyphs = font_data->FD.FI[i].glyphs; metrics = font_data->FD.FI[i].metrics; break; } } if (glyphs) { face = ipa_font_face_open (API,ps_name,glyphs,metrics); if (face) return (ipa_font_face_cached (API,font,ps_name)); } /* (3) Check for font with file in GS table */ name = 0; for (i = 0; i < font_data->GS.len; i++) { if (strcmp (ps_name,font_data->GS.FI[i].name) == 0) { if (font_data->GS.FI[i].alias[0] == '(') { name = wmf_strdup (API,font_data->GS.FI[i].alias + 1); } break; } } glyphs = 0; if (name) { name[strlen (name) - 1] = 0; glyphs = ipa_font_path_find (API,name); } metrics = 0; if (glyphs) { if (strlen (name) > 3) { suffix = name + strlen (name) - 4; if ((strcmp (suffix,".pfa") == 0) || (strcmp (suffix,".pfb") == 0)) { strcpy (suffix,".afm"); metrics = ipa_font_path_find (API,name); } } face = ipa_font_face_open (API,ps_name,glyphs,metrics); } if (name) wmf_free (API,name); if (glyphs) wmf_free (API,glyphs); if (metrics) wmf_free (API,metrics); if (face) return (ipa_font_face_cached (API,font,ps_name)); /* (4) Check for font in internal table */ name = 0; i = 0; while (font_data->ps[i].name) { if (strcmp (ps_name,font_data->ps[i].name) == 0) { name = wmf_strdup (API,font_data->ps[i].mapping); break; } i++; } glyphs = 0; if (name) { glyphs = ipa_font_path_find (API,name); } metrics = 0; if (glyphs) { if (strlen (name) > 3) { suffix = name + strlen (name) - 4; if ((strcmp (suffix,".pfa") == 0) || (strcmp (suffix,".pfb") == 0)) { strcpy (suffix,".afm"); metrics = ipa_font_path_find (API,name); } } face = ipa_font_face_open (API,ps_name,glyphs,metrics); } if (name) wmf_free (API,name); if (glyphs) wmf_free (API,glyphs); if (metrics) wmf_free (API,metrics); if (face) return (ipa_font_face_cached (API,font,ps_name)); /* (5) return (0) */ return (0); } /** * Opens the font with freetype and caches postscript name, glyphs path & FT font face */ static FT_Face ipa_font_face_open (wmfAPI* API,char* ps_name,char* glyphs,char* metrics) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfFT_CacheEntry entry; FT_Face face = 0; struct stat stat_buf; #ifdef _WIN32 glyphs = remap_font_file_name (API,glyphs); #endif if (stat (glyphs,&stat_buf)) { WMF_ERROR (API,"unable to stat font file:"); WMF_ERROR (API,glyphs); API->err = wmf_E_BadFile; #ifdef _WIN32 wmf_free (API,glyphs); #endif return (0); } if (FT_New_Face (font_data->Library,glyphs,0,&face) != 0) { WMF_ERROR (API,"Failed to open font:"); WMF_ERROR (API,glyphs); API->err = wmf_E_DeviceError; #ifdef _WIN32 wmf_free (API,glyphs); #endif return (0); } #ifdef _WIN32 metrics = remap_font_file_name (API,metrics); #endif if (metrics) { if (stat (metrics,&stat_buf)) { WMF_DEBUG (API,"unable to stat font metrics file:"); WMF_DEBUG (API,metrics); } else { if (FT_Attach_File (face,metrics) != 0) { WMF_DEBUG (API,"unable to load font metrics file:"); WMF_DEBUG (API,metrics); } } } /* Select encoding (I'm very uncertain about this!): - [TODO] ?? */ if (FT_Select_Charmap (face,ft_encoding_adobe_standard) == 0) { WMF_DEBUG (API,glyphs); WMF_DEBUG (API,"Adobe Standard Encoding"); } else if (FT_Select_Charmap (face,ft_encoding_adobe_custom) == 0) { WMF_DEBUG (API,glyphs); WMF_DEBUG (API,"Adobe Custom Encoding"); } else if (FT_Select_Charmap (face,ft_encoding_symbol) == 0) { WMF_DEBUG (API,glyphs); WMF_DEBUG (API,"Symbol Encoding"); } else if (FT_Select_Charmap (face,ft_encoding_unicode) == 0) { WMF_DEBUG (API,glyphs); WMF_DEBUG (API,"Unicode Encoding"); } else { WMF_ERROR (API,"Bad encoding! (Please help me!)"); API->err = wmf_E_DeviceError; } entry.name = ps_name; entry.path = glyphs; entry.face = face; ipa_font_add_cache (API,&entry); /* cache font name, path & face */ ipa_font_add_api (API,ps_name); /* add font name to list of fonts used */ return (face); } /** * Finds font info in cache and sets WMF's font entry appropriately. */ static FT_Face ipa_font_face_cached (wmfAPI* API,wmfFont* font,char* ps_name) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; wmfIPAFont* ipa_font = (wmfIPAFont*) font->user_data; FT_Face face = 0; unsigned int i; /* Check cache for font */ i = 0; while (font_data->cache[i].name) { if (strcmp (font_data->cache[i].name,ps_name) == 0) { face = font_data->cache[i].face; break; } i++; } if (face) { ipa_font->ps_name = ps_name; ipa_font->ft_face = face; } return (face); } /** * Search for file_name in font path and return full path to file as wmf_malloc() string */ static char* ipa_font_path_find (wmfAPI* API,char* file_name) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; struct stat stat_buf; unsigned int length; unsigned int count; unsigned int i; char* path = 0; /* Determine length of string required to hold path name of font */ count = 0; i = 0; while (font_data->fontdirs[i]) { length = strlen (font_data->fontdirs[i]); if (count < length) count = length; i++; } count += 1 + strlen (file_name) + 1; path = (char*) wmf_malloc (API,count); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (0); } /* Compose full font file path: */ i = 0; while (font_data->fontdirs[i]) { strcpy (path,font_data->fontdirs[i]); strcat (path,"/"); strcat (path,file_name); WMF_DEBUG (API,path); if (stat (path,&stat_buf) == 0) break; /* file exists */ i++; } if (font_data->fontdirs[i] == 0) { WMF_DEBUG (API,"file not found in font path."); wmf_free (API,path); path = 0; } return (path); } /** * If after XML & GS fontmap searches the font still hasn't been matched, then use one of the 13 standard * postscript fonts (or any others that have been added via library options). */ static char* ipa_font_std (wmfAPI* API,wmfFont* font) { wmfFontmapData* font_data = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; char* mapping = 0; unsigned int i; unsigned int index = 0; /* First: check for an exact match: */ i = 0; while (font_data->wmf[i].name) { if (strcmp (font->lfFaceName,font_data->wmf[i].name) == 0) { mapping = font_data->wmf[i].name; break; } i++; } /* If no exact match, check for a close (i.e., sub-string) match: */ if (mapping == 0) { i = 0; while (font_data->sub[i].name) { if (wmf_strstr (font->lfFaceName,font_data->sub[i].name)) { mapping = font_data->sub[i].mapping; break; } i++; } } /* If still no match, use the default: */ if (mapping == 0) mapping = DefaultFontMapping; /* Check chosen mapping in list of exact names: */ i = 0; while (font_data->wmf[i].name) { if (strcmp (mapping,font_data->wmf[i].name) == 0) { index = i; break; } i++; } /* If not found then something odd has happened - probably a typo somewhere... */ if (font_data->wmf[i].name == 0) { WMF_ERROR (API,"Glitch! Unmapped font..."); API->err = wmf_E_Glitch; return (0); } /* Select a new mapping (the PS font name) on basis of weight & italic parameters */ if (font->lfWeight > 550) /* => Bold (?? Don't ask me...) */ { if (font->lfItalic == 1) /* Italic */ { mapping = font_data->wmf[index].bolditalic; } else { mapping = font_data->wmf[index].bold; } } else { if (font->lfItalic == 1) /* Italic */ { mapping = font_data->wmf[index].italic; } else { mapping = font_data->wmf[index].normal; } } return (mapping); } libwmf-0.2.8.4/src/stream.c0000644000077100007710000001650010271767772014753 0ustar fjffjf00000000000000/* libwmf (stream.c): library for wmf conversion Copyright (C) 2001 The Free Software Foundation The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include "wmfdefs.h" #include "stream.h" /** * Open a compressed character output stream. * * @param API the API handle * @param out descriptor for a zlib compressed file stream * * wmf_ztream_create() creates a \b wmfStream (a character-based output stream) for output to a file opened * via \b zlib. (Writing compressed data to memory is not currently supported.) * * @return Returns a \b wmfStream pointer, or zero on failure. * Possible library error state of \b wmf_E_InsMem. */ wmfStream* wmf_ztream_create (wmfAPI* API,gzFile out) { wmfStream* stream = 0; wmfDefaultZtream* defstr = 0; if (out == 0) { WMF_DEBUG (API,"memory ztream (compressed stream) not supported"); return (0); } defstr = wmf_malloc (API,sizeof (wmfDefaultZtream)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (0); } defstr->API = API; defstr->out = out; defstr->offset = 0; /* Can't reset them anyway. */ defstr->max = 0; defstr->len = 0; defstr->buf = 0; defstr->ptr = 0; stream = wmf_malloc (API,sizeof (wmfStream)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); if (defstr->buf) wmf_free (API,defstr->buf); wmf_free (API,defstr); return (0); } stream->context = (void*) defstr; stream->sputs = wmf_stream_zputs; stream->reset = wmf_stream_rezet; return (stream); } /** * Open an uncompressed character output stream. * * @param API the API handle * @param out descriptor for a file stream; or zero to write to memory * * wmf_stream_create() creates a \b wmfStream (a character-based output stream) for output to a file or, if * \p out is zero, to memory. * * @return Returns a \b wmfStream pointer, or zero on failure. * Possible library error states of \b wmf_E_InsMem or \b wmf_E_BadFile. */ wmfStream* wmf_stream_create (wmfAPI* API,FILE* out) { wmfStream* stream = 0; wmfDefaultStream* defstr = 0; defstr = wmf_malloc (API,sizeof (wmfDefaultStream)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (0); } defstr->API = API; if (out) { defstr->out = out; defstr->offset = ftell (out); if ((defstr->offset < 0) && ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0)) { WMF_ERROR (API,"wmf_stream_create: ftell failed on output stream"); API->err = wmf_E_BadFile; wmf_free (API,defstr); return (0); } defstr->max = 0; defstr->len = 0; defstr->buf = 0; defstr->ptr = 0; } else { defstr->out = 0; defstr->offset = 0; defstr->max = 256; defstr->len = 0; defstr->buf = wmf_malloc (API,defstr->max * sizeof (char)); defstr->ptr = defstr->buf; if (ERR (API)) { WMF_DEBUG (API,"bailing..."); wmf_free (API,defstr); return (0); } } stream = wmf_malloc (API,sizeof (wmfStream)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); if (defstr->buf) wmf_free (API,defstr->buf); wmf_free (API,defstr); return (0); } stream->context = (void*) defstr; stream->sputs = wmf_stream_sputs; stream->reset = wmf_stream_reset; return (stream); } /** * Close a compressed character output stream. * * @param API the API handle * @param stream stream handle * @param buffer (unused) * @param length (unused) */ void wmf_ztream_destroy (wmfAPI* API,wmfStream* stream,char** buffer,unsigned long* length) { wmfDefaultZtream* defstr = 0; if (stream == 0) return; defstr = (wmfDefaultZtream*) stream->context; (*(defstr->ptr)) = 0; if (buffer) (*buffer) = defstr->buf; if (length) (*length) = defstr->len; wmf_free (API,stream->context); wmf_free (API,(void*) stream); } /** * Close an uncompressed character output stream. * * @param API the API handle * @param stream stream handle * @param buffer for memory return * @param length for length return * * In the case of write-to-memory, on return \p *buffer is an array of length \p length. */ void wmf_stream_destroy (wmfAPI* API,wmfStream* stream,char** buffer,unsigned long* length) { wmfDefaultStream* defstr = 0; if (stream == 0) return; defstr = (wmfDefaultStream*) stream->context; (*(defstr->ptr)) = 0; if (buffer) (*buffer) = defstr->buf; if (length) (*length) = defstr->len; wmf_free (API,stream->context); wmf_free (API,(void*) stream); } /** * Formatted print to character output stream. * * @param API the API handle * @param stream stream handle * @param format print format * * With syntax similar to printf(), wmf_stream_printf() prints a formatted message to a \b wmfStream * character stream. * * @return Returns the number of characters written, or zero on failure. * Possible library error state of \b wmf_E_InsMem. */ int wmf_stream_printf (wmfAPI* API,wmfStream* stream,char* format,...) { int length; va_list argp; va_start (argp,format); for (;;) { length = vsnprintf (API->string_buffer.buffer,API->string_buffer.length,format,argp); if ((length >= 0) && (length < (API->string_buffer.length - 1))) break; /* i.e., success */ if (wmf_strbuf_grow (API) == 0) break; /* i.e., probably a memory failure */ } va_end (argp); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (0); } stream->sputs (API->string_buffer.buffer,stream->context); return (length); } /** * @internal */ int wmf_stream_zputs (char* str,void* context) { wmfDefaultZtream* defstr = (wmfDefaultZtream*) context; return (gzputs (defstr->out,str)); } /** * @internal */ int wmf_stream_sputs (char* str,void* context) { char* more = 0; char* sptr = 0; unsigned long max=0; wmfDefaultStream* defstr = (wmfDefaultStream*) context; wmfAPI* API = defstr->API; if (defstr->out) { return (fputs (str,defstr->out)); } sptr = str; while (*sptr) { if ((defstr->len + 1) == defstr->max) { more = (char*) wmf_realloc (API,defstr->buf,(defstr->max + 256) * sizeof (char)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); defstr->max = max; return (EOF); } defstr->max += 256; defstr->buf = more; defstr->ptr = defstr->buf + defstr->len; } (*(defstr->ptr)) = (*sptr); defstr->ptr++; defstr->len++; sptr++; } return (0); } /** * @internal */ int wmf_stream_rezet (void* context) { WMF_DEBUG (((wmfDefaultZtream*) context)->API, "cannot reset ztream (compressed stream)"); return (0); } /** * @internal */ int wmf_stream_reset (void* context) { wmfDefaultStream* defstr = (wmfDefaultStream*) context; if (defstr->out) { return (fseek (defstr->out,defstr->offset,SEEK_SET)); } else { defstr->len = 0; defstr->ptr = defstr->buf; return (0); } } libwmf-0.2.8.4/src/wmf.c0000644000077100007710000002223610012150566014230 0ustar fjffjf00000000000000/* libwmf (wmf.c): library for wmf conversion Copyright (C) 2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include "wmfdefs.h" #ifdef _WIN32 #include static char installation_prefix[1000] = ""; BOOL WINAPI DllMain (HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) { char* p; switch (fdwReason) { case DLL_PROCESS_ATTACH: if (!GetModuleFileName ((HMODULE) hinstDLL, installation_prefix, sizeof (installation_prefix))) break; /* If the libwmf DLL is in a "bin" or "lib" subfolder, assume * it's a Unix-style installation tree. */ p = strrchr (installation_prefix, '\\'); if (p) { *p = '\0'; p = strrchr (installation_prefix, '\\'); if (p && (stricmp (p + 1, "bin") == 0 || stricmp (p + 1, "lib") == 0)) *p = '\0'; } else installation_prefix[0] = '\0'; break; } return TRUE; } char* _libwmf_get_fontdir (void) { static char retval[1000] = ""; if (retval[0] == '\0') { strcpy (retval, installation_prefix); strcat (retval, "\\share\\libwmf\\fonts"); } return retval; } #undef WMF_FONTDIR #define WMF_FONTDIR _libwmf_get_fontdir () #endif static void wmf_arg (unsigned long*,wmfAPI_Options*); static void wmf_arg_fontdirs (wmfAPI*,wmfAPI_Options*); /** * Creates and initializes an instance of the \b libwmf library for a specified device layer. * * @param API_return pointer to a wmfAPI* (the API handle use henceforth) * @param flags bitwise OR of WMF_OPT_ options * @param options pointer to wmfAPI_Options structure * * This is the first and necessary step when using \b libwmf. Options are passed via the wmfAPI_Options * structure and \p flags. wmf_api_create allocates the wmfAPI structure and initializes the color and * font tables, the metafile player, and the device layer. If successful then the pointer to the wmfAPI * structure is returned via \p API_return, otherwise all allocated memory is released and the library * exits with an appropriate error. * * @return The error state of the library: \b wmf_E_None indicates successful creation and initialization * of the library, and \p *API_return will be non-zero. For any other error value \p *API_return * will be zero. */ wmf_error_t wmf_api_create (wmfAPI** API_return,unsigned long flags,wmfAPI_Options* options) { wmfAPI* API = 0; wmf_error_t err = wmf_E_None; (*API_return) = 0; if (flags & WMF_OPT_ARGS) wmf_arg (&flags,options); flags |= API_STANDARD_INTERFACE; err = wmf_lite_create (&API,flags,options); if (err != wmf_E_None) return err; /* Create font data */ API->font_data = 0; API->fonts = 0; wmf_ipa_font_init (API,options); wmf_arg_fontdirs (API,options); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); err = wmf_api_destroy (API); return (err); } if ((flags & WMF_OPT_WRITE) && (options->write_file)) { wmf_write_begin (API, options->write_file); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); err = wmf_api_destroy (API); return (err); } } /* Have successfully created the API... */ (*API_return) = API; return (wmf_E_None); } /** * Close the device layer, if open, and release all allocated memory attached to the memory manager. * * @param API the API handle * * @return The final error state of the library. */ wmf_error_t wmf_api_destroy (wmfAPI* API) /* Basically free all alloced memory */ { wmf_error_t err; /* associated with the API */ wmfFontmapData* FD = 0; FT_Library ft_lib = 0; if ((API->flags & API_FTLIBRARY_OPEN) && API->font_data) { FD = (wmfFontmapData*) ((wmfFontData*) API->font_data)->user_data; if (FD) ft_lib = FD->Library; } if (API->write_data) wmf_write_end (API); err = wmf_lite_destroy (API); if (ft_lib) FT_Done_FreeType (ft_lib); return (err); } /* Check command line for arg. * =========================== */ static void wmf_arg (unsigned long* flags,wmfAPI_Options* options) { char** argv = options->argv; int argc = options->argc; int arg = 0; while ((++arg) < argc) { if (strncmp (argv[arg],"--wmf-",6)) continue; if (strcmp (argv[arg],"--wmf-help") == 0) { /* This is ignored; the controlling program can check for it... */ continue; } if ((strcmp (argv[arg],"--wmf-error" ) == 0) || (strcmp (argv[arg],"--wmf-error=yes") == 0)) { (*flags) &= ~WMF_OPT_NO_ERROR; continue; } if (strcmp (argv[arg],"--wmf-error=no") == 0) { (*flags) |= WMF_OPT_NO_ERROR; continue; } if ((strcmp (argv[arg],"--wmf-debug" ) == 0) || (strcmp (argv[arg],"--wmf-debug=yes") == 0)) { (*flags) &= ~WMF_OPT_NO_DEBUG; continue; } if (strcmp (argv[arg],"--wmf-debug=no") == 0) { (*flags) |= WMF_OPT_NO_DEBUG; continue; } if (strcmp (argv[arg],"--wmf-sys-fonts") == 0) { (*flags) |= WMF_OPT_SYS_FONTS; continue; } if (strncmp (argv[arg],"--wmf-sys-fontmap=",18) == 0) { (*flags) |= WMF_OPT_SYS_FONTS; (*flags) |= WMF_OPT_SYS_FONTMAP; options->sys_fontmap_file = argv[arg] + 18; continue; } if (strcmp (argv[arg],"--wmf-xtra-fonts") == 0) { (*flags) |= WMF_OPT_XTRA_FONTS; continue; } if (strncmp (argv[arg],"--wmf-xtra-fontmap=",19) == 0) { (*flags) |= WMF_OPT_XTRA_FONTS; (*flags) |= WMF_OPT_XTRA_FONTMAP; options->xtra_fontmap_file = argv[arg] + 19; continue; } if (strncmp (argv[arg],"--wmf-gs-fontmap=",17) == 0) { (*flags) |= WMF_OPT_GS_FONTMAP; options->gs_fontmap_file = argv[arg] + 17; continue; } if (strncmp (argv[arg],"--wmf-write=",12) == 0) { (*flags) |= WMF_OPT_WRITE; options->write_file = argv[arg] + 12; continue; } if ((strcmp (argv[arg],"--wmf-ignore-nonfatal" ) == 0) || (strcmp (argv[arg],"--wmf-ignore-nonfatal=yes") == 0)) { (*flags) |= WMF_OPT_IGNORE_NONFATAL; continue; } if (strcmp (argv[arg],"--wmf-ignore-nonfatal=no") == 0) { (*flags) &= ~WMF_OPT_IGNORE_NONFATAL; continue; } if (strcmp (argv[arg],"--wmf-diagnostics") == 0) { (*flags) |= WMF_OPT_DIAGNOSTICS; continue; } if (strncmp (argv[arg],"--wmf-fontdir=",14) == 0) continue; /* ignore for now */ } (*flags) &= 0x000fffff; } static void wmf_arg_fontdirs (wmfAPI* API,wmfAPI_Options* options) { char** argv = options->argv; int argc = options->argc; int arg = 0; if (API->flags & WMF_OPT_ARGS) { while ((++arg) < argc) { if (strncmp (argv[arg],"--wmf-fontdir=",14) == 0) { wmf_ipa_font_dir (API,argv[arg] + 14); } } } if (API->flags & WMF_OPT_FONTDIRS) { argv = options->fontdirs; while (*argv) { wmf_ipa_font_dir (API,(*argv)); argv++; } } #ifndef _WIN32 wmf_ipa_font_dir (API,WMF_GS_FONTDIR); #endif wmf_ipa_font_dir (API,WMF_FONTDIR); } /** * @verbatim Additional wmf-related options: --wmf-error[=yes|no] switch for error reports. --wmf-debug[=yes|no] switch for debug reports, if any. --wmf-ignore-nonfatal[=yes|no] switch to ignore (some) non-fatal errors. --wmf-diagnostics emit diagnostic information. --wmf-fontdir= add to list of font directories. --wmf-sys-fonts use system fonts, if any found. --wmf-sys-fontmap= use system xml-fontmap file . --wmf-xtra-fonts use non-system fonts, if any found. --wmf-xtra-fontmap= use non-system xml-fontmap file . --wmf-gs-fontmap= use ghostscript file . --wmf-write= write metafile to . Report bugs to . @endverbatim * * @return Returns the above as a string. */ char* wmf_help () { static char* help = "\ Additional wmf-related options:\n\ \n\ --wmf-error[=yes|no] switch for error reports.\n\ --wmf-debug[=yes|no] switch for debug reports, if any.\n\ --wmf-ignore-nonfatal[=yes|no] switch to ignore (some) non-fatal errors.\n\ --wmf-diagnostics emit diagnostic information.\n\ --wmf-fontdir= add to list of font directories.\n\ --wmf-sys-fonts use system fonts, if any found.\n\ --wmf-sys-fontmap= use system xml-fontmap file .\n\ --wmf-xtra-fonts use non-system fonts, if any found.\n\ --wmf-xtra-fontmap= use non-system xml-fontmap file .\n\ --wmf-gs-fontmap= use ghostscript file .\n\ --wmf-write= write metafile to .\n\ \n\ Report bugs to .\n"; return (help); } libwmf-0.2.8.4/src/xml.c0000644000077100007710000002621410271767772014263 0ustar fjffjf00000000000000/* libwmf (xml.c): library for wmf conversion Copyright (C) 2000,2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include #include "wmfdefs.h" #include "xml.h" static int s_value (char c) { int v = -1; if ((c >= 'A') && (c <= 'Z')) v = c - 'A'; else if ((c >= 'a') && (c <= 'z')) v = 26 + c - 'a'; else if ((c >= '0') && (c <= '9')) v = 52 + c - '0'; else if (c == '+') v = 62; else if (c == '/') v = 63; return v; } static void cd_append (wmfXML_InputData * data, const char * buffer, unsigned long length) { unsigned long i; unsigned long size; int v; char c; char * more = 0; const char * ptr = buffer; if ((length == 0) || (buffer == 0)) return; if (data->cd_buffer == 0) { more = (char *) wmf_malloc (data->API, length); if (ERR (data->API)) { WMF_DEBUG (data->API,"bailing..."); return; } data->cd_buffer = more; data->cd_bufptr = data->cd_buffer; data->cd_max = length; } if (data->cd_length + length > data->cd_max) { size = data->cd_length + length; more = (char *) wmf_realloc (data->API, data->cd_buffer, size); if (ERR (data->API)) { WMF_DEBUG (data->API,"bailing..."); return; } data->cd_buffer = more; data->cd_bufptr = data->cd_buffer + data->cd_length; data->cd_max = size; } for (i = 0; i < length; i++) { c = *ptr++; v = s_value (c); if (v >= 0) { *(data->cd_bufptr++) = c; data->cd_length++; } } } static void mem_append (wmfXML_InputData * data, unsigned char * buffer, unsigned long length) { unsigned char * more = 0; unsigned long size; if ((length == 0) || (buffer == 0)) return; if (data->mem_buffer == 0) { more = (unsigned char *) wmf_malloc (data->API, length); if (ERR (data->API)) { WMF_DEBUG (data->API,"bailing..."); return; } data->mem_buffer = more; data->mem_bufptr = data->mem_buffer; data->mem_max = length; } if (data->mem_length + length > data->mem_max) { size = data->mem_length + length; more = (unsigned char *) wmf_realloc (data->API, data->mem_buffer, size); if (ERR (data->API)) { WMF_DEBUG (data->API,"bailing..."); return; } data->mem_buffer = more; data->mem_bufptr = data->mem_buffer + data->mem_length; data->mem_max = size; } memcpy (data->mem_bufptr, buffer, length); data->mem_bufptr += length; data->mem_length += length; } static void store_clear (wmfAPI * API) { unsigned long i; for (i = 0; i < API->store.count; i++) wmf_attr_free (API, API->store.attrlist + i); API->store.count = 0; } static void store_atts (wmfAPI * API, const char * element_name, const char ** atts) { unsigned long size; const char ** attr = 0; const char * name = 0; const char * value = 0; wmfAttributes * more = 0; if (API->store.attrlist == 0) { more = (wmfAttributes *) wmf_malloc (API, 16 * sizeof (wmfAttributes)); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return; } API->store.attrlist = more; API->store.max = 16; API->store.count = 0; } if (API->store.count == API->store.max) { size = (API->store.max + 16) * sizeof (wmfAttributes); more = (wmfAttributes *) wmf_realloc (API, API->store.attrlist, size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return; } API->store.attrlist = more; API->store.max += 16; } more = API->store.attrlist + API->store.count++; wmf_attr_new (API, more); more->name = wmf_strdup (API, element_name); if (atts == 0) return; attr = atts; while (*attr) { name = *attr++; value = *attr++; wmf_attr_add (API, more, name, value); } } static void xml_start (void * user_data, const char * name, const char ** atts) { wmfXML_InputData * input_data = (wmfXML_InputData *) user_data; wmfAPI* API = input_data->API; if (ERR (API)) return; if (input_data->wmfxml == 0) { if (strcmp (name, "wmfxml") == 0) { input_data->wmfxml = 1; } else { input_data->wmfxml = -1; } return; } if (input_data->wmfxml != 1) return; store_atts (API, name, atts); input_data->cd_bufptr = input_data->cd_buffer; input_data->cd_length = 0; } static void xml_data (void * user_data, const char * buffer, int length) { wmfXML_InputData * input_data = (wmfXML_InputData *) user_data; if (ERR (input_data->API)) return; if (input_data->wmfxml != 1) return; cd_append (input_data, buffer, (unsigned long) ((unsigned) length)); } static void xml_end (void * user_data, const char * name) { unsigned char buffer[54]; unsigned char * bufptr = 0; char * cd_ptr = 0; unsigned long i; unsigned long b32; unsigned long length; unsigned long remaining; wmfXML_InputData * input_data = (wmfXML_InputData *) user_data; wmfAttributes * attr = 0; wmfAPI * API = input_data->API; if (ERR (API)) return; if (input_data->wmfxml != 1) return; if (strcmp (name, "wmfxml") == 0) { for (i = 0; i < API->store.count; i++) { attr = API->store.attrlist + i; attr->buffer = input_data->mem_buffer + attr->offset; } return; } attr = API->store.attrlist + (API->store.count - 1); attr->length = 0; attr->offset = (unsigned long) (input_data->mem_bufptr - input_data->mem_buffer); cd_ptr = input_data->cd_buffer; remaining = input_data->cd_length; while (remaining >= 72) { bufptr = buffer; for (i = 0; i < 18; i++) { b32 = (unsigned long) ( s_value (*(cd_ptr++))); b32 = (unsigned long) ((b32 << 6) | s_value (*(cd_ptr++))); b32 = (unsigned long) ((b32 << 6) | s_value (*(cd_ptr++))); b32 = (unsigned long) ((b32 << 6) | s_value (*(cd_ptr++))); *bufptr++ = (unsigned char) ((b32 >> 16) ); *bufptr++ = (unsigned char) ((b32 >> 8) & 0xff); *bufptr++ = (unsigned char) ((b32 ) & 0xff); } mem_append (input_data, buffer, 54); remaining -= 72; attr->length += 54; } bufptr = buffer; length = 0; while (remaining >= 4) { b32 = (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 6) | (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 6) | (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 6) | (unsigned long) ((unsigned) s_value (*(cd_ptr++))); *bufptr++ = (unsigned char) ((b32 >> 16) ); *bufptr++ = (unsigned char) ((b32 >> 8) & 0xff); *bufptr++ = (unsigned char) ((b32 ) & 0xff); remaining -= 4; length += 3; } if (remaining == 3) { b32 = (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 6) | (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 6) | (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 6); *bufptr++ = (unsigned char) ((b32 >> 16) ); *bufptr++ = (unsigned char) ((b32 >> 8) & 0xff); remaining -= 3; length += 2; } if (remaining == 2) { b32 = (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 6) | (unsigned long) ((unsigned) s_value (*(cd_ptr++))); b32 = (b32 << 12); *bufptr++ = (unsigned char) ((b32 >> 16) ); remaining -= 2; length++; } if (remaining == 1) WMF_DEBUG (API, "xml_end: WMF Record has unexpected length!"); if (length) { mem_append (input_data, buffer, length); attr->length += length; } input_data->cd_bufptr = input_data->cd_buffer; input_data->cd_length = 0; } #ifdef HAVE_EXPAT #include #define EXML_BUFSIZE 1024 wmf_error_t wmf_wmfxml_import (wmfAPI * API, const char * wmfxml_filename) { char buffer[EXML_BUFSIZE]; int status; int length; FILE * in = 0; XML_Parser parser = 0; wmfXML_InputData input_data; input_data.API = API; input_data.cd_buffer = 0; input_data.cd_bufptr = 0; input_data.cd_length = 0; input_data.cd_max = 0; input_data.mem_buffer = 0; input_data.mem_bufptr = 0; input_data.mem_length = 0; input_data.mem_max = 0; input_data.wmfxml = 0; if (ERR (API)) return API->err; store_clear (API); if ( wmfxml_filename == 0) return wmf_E_BadFile; if (*wmfxml_filename == 0) return wmf_E_BadFile; in = fopen (wmfxml_filename, "r"); if (in == 0) { WMF_DEBUG (API, "wmf_wmfxml_import: unable to open file"); return wmf_E_BadFile; } parser = XML_ParserCreate (0); if (parser == 0) { WMF_DEBUG (API, "wmf_wmfxml_import: error creating expat-xml parser"); fclose (in); return wmf_E_InsMem; } XML_SetUserData (parser, (void *) (&input_data)); XML_SetStartElementHandler (parser, xml_start); XML_SetEndElementHandler (parser, xml_end); XML_SetCharacterDataHandler (parser, xml_data); status = 0; while (fgets (buffer, EXML_BUFSIZE, in) && (API->err == wmf_E_None)) { length = (int) strlen (buffer); if (XML_Parse (parser, buffer, length, 0) == 0) { WMF_DEBUG (API,"wmf_wmfxml_import: error parsing file"); status = 1; break; } } if ((status == 0) && (API->err == wmf_E_None)) XML_Parse (parser, buffer, 0, 1); XML_ParserFree (parser); fclose (in); if (input_data.cd_buffer) wmf_free (API, input_data.cd_buffer); if (ERR (API)) { if (input_data.mem_buffer) wmf_free (API, input_data.mem_buffer); return API->err; } API->flags |= API_ENABLE_EDITING; return wmf_mem_open (API, input_data.mem_buffer, (long) input_data.mem_length); } #endif /* HAVE_EXPAT */ #ifdef HAVE_LIBXML2 #include #include wmf_error_t wmf_wmfxml_import (wmfAPI * API, const char * wmfxml_filename) { xmlParserCtxtPtr ctxt = 0; xmlSAXHandler sax; wmfXML_InputData input_data; input_data.API = API; input_data.cd_buffer = 0; input_data.cd_bufptr = 0; input_data.cd_length = 0; input_data.cd_max = 0; input_data.mem_buffer = 0; input_data.mem_bufptr = 0; input_data.mem_length = 0; input_data.mem_max = 0; input_data.wmfxml = 0; if (ERR (API)) return API->err; store_clear (API); if ( wmfxml_filename == 0) return wmf_E_BadFile; if (*wmfxml_filename == 0) return wmf_E_BadFile; memset ((void*) (&sax), 0, sizeof (xmlSAXHandler)); sax.startElement = (startElementSAXFunc)xml_start; sax.endElement = (endElementSAXFunc)xml_end; sax.characters = (charactersSAXFunc)xml_data; ctxt = xmlCreateFileParserCtxt (wmfxml_filename); if (ctxt == 0) return wmf_E_InsMem; ctxt->sax = &sax; ctxt->userData = (void*) (&input_data); xmlParseDocument (ctxt); ctxt->sax = 0; xmlFreeParserCtxt (ctxt); if (input_data.cd_buffer) wmf_free (API, input_data.cd_buffer); if (ERR (API)) { if (input_data.mem_buffer) wmf_free (API, input_data.mem_buffer); return API->err; } API->flags |= API_ENABLE_EDITING; return wmf_mem_open (API, input_data.mem_buffer, (long) input_data.mem_length); } #endif /* HAVE_LIBXML2 */ libwmf-0.2.8.4/src/api.c0000644000077100007710000004525707524773065014243 0ustar fjffjf00000000000000/* libwmf (api.c): library for wmf conversion Copyright (C) 2001 - Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include #include #include #include "wmfdefs.h" #include "api.h" /** * Creates and initializes an instance of the \b libwmf library (lite interface) for a specified device layer. * * @param API_return pointer to a wmfAPI* (the API handle use henceforth) * @param flags bitwise OR of WMF_OPT_ options * @param options pointer to wmfAPI_Options structure * * This is the first and necessary step when using \b libwmf. Options are passed via the wmfAPI_Options * structure and \p flags. wmf_api_create allocates the wmfAPI structure and initializes the color tables, * the metafile player, and the device layer. If successful then the pointer to the wmfAPI structure is * returned via \p API_return, otherwise all allocated memory is released and the library exits with an * appropriate error. * * wmf_lite_create () ignores command line arguments, if any are given, and does \b not attempt to set up * font mapping. * * The library should be closed using the corresponding wmf_lite_destroy () function. * * @return The error state of the library: \b wmf_E_None indicates successful creation and initialization * of the library, and \p *API_return will be non-zero. For any other error value \p *API_return * will be zero. */ wmf_error_t wmf_lite_create (wmfAPI** API_return,unsigned long flags,wmfAPI_Options* options) { wmfAPI* API = 0; wmfMemoryManager* MM = 0; wmfFunctionReference* FR = 0; wmf_error_t err = wmf_E_None; (*API_return) = 0; /* Initialize memory management array & allocate */ if (flags & WMF_OPT_ALLOC) { MM = (wmfMemoryManager*) options->malloc (options->context,sizeof (wmfMemoryManager)); } else { MM = (wmfMemoryManager*) malloc (sizeof (wmfMemoryManager)); } if (MM == 0) { if ((flags & WMF_OPT_NO_ERROR) == 0) { fputs ("wmf_api_create: insufficient memory!\n",stderr); } return (wmf_E_InsMem); } MM->count = 0; MM->max = 32; if (flags & WMF_OPT_ALLOC) { MM->list = (void**) options->malloc (options->context,MM->max * sizeof (void*)); } else { MM->list = (void**) malloc (MM->max * sizeof (void*)); } if (MM->list == 0) { if ((flags & WMF_OPT_NO_ERROR) == 0) { fputs ("wmf_api_create: insufficient memory!\n",stderr); } if (flags & WMF_OPT_ALLOC) { options->free (options->context,MM); } else { free (MM); } return (wmf_E_InsMem); } if (flags & WMF_OPT_ALLOC) { MM->context = options->context; MM->malloc = options->malloc; MM->realloc = options->realloc; MM->free = options->free; } else { MM->context = 0; MM->malloc = 0; MM->realloc = 0; MM->free = 0; } /* Allocate wmfAPI structure */ if (flags & WMF_OPT_ALLOC) { API = (wmfAPI*) options->malloc (options->context,sizeof (wmfAPI)); } else { API = (wmfAPI*) malloc (sizeof (wmfAPI)); } if (API == 0) { if ((flags & WMF_OPT_NO_ERROR) == 0) { fputs ("wmf_api_create: insufficient memory!\n",stderr); } if (flags & WMF_OPT_ALLOC) { options->free (options->context,MM->list); options->free (options->context,MM); } else { free (MM->list); free (MM); } return (wmf_E_InsMem); } API->memory_data = (void*) MM; /* Initialize debug, error & other streams */ if (flags & WMF_OPT_NO_DEBUG) API->debug_out = 0; else { if (flags & WMF_OPT_LOG_DEBUG) API->debug_out = options->debug_out; else { API->debug_out = stdout; } } if (flags & WMF_OPT_NO_ERROR) API->error_out = 0; else { if (flags & WMF_OPT_LOG_ERROR) API->error_out = options->error_out; else { API->error_out = stderr; } } API->write_data = 0; API->MetaHeader.pmh = &(API->PlaceableMetaHeader); API->MetaHeader.wmfheader = &(API->Head); API->File = &(API->MetaHeader); API->File->filein = 0; /* Input stream: file (unused) */ API->buffer_data = 0; /* Input stream */ API->bbuf.read = 0; API->bbuf.seek = 0; API->bbuf.tell = 0; /* Status function & context */ API->status.context = 0; API->status.function = 0; /* General purpose string buffer */ API->string_buffer.length = 0; API->string_buffer.buffer = 0; /* Zero some unset pointers */ API->function_reference = 0; API->font_data = 0; /* non-lite option TODO */ API->fonts = 0; API->color_data = 0; API->store.attrlist = 0; API->store.count = 0; API->store.max = 0; /* Library error state: */ API->err = wmf_E_None; /* Finally: flags, etc. */ API->flags = flags; /* ---- Henceforth all allocation to be done via api ---- */ /* General purpose string buffer */ API->string_buffer.length = 64; API->string_buffer.buffer = wmf_malloc (API,API->string_buffer.length * sizeof (char)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); err = wmf_lite_destroy (API); return (err); } /* Create color data - must be done prior to IPA initialization */ wmf_ipa_color_init (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); err = wmf_lite_destroy (API); return (err); } /* Create ipa function interface */ API->function_reference = wmf_malloc (API,sizeof (wmfFunctionReference)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); err = wmf_lite_destroy (API); return (err); } FR = (wmfFunctionReference*) API->function_reference; FR->device_open = 0; FR->device_close = 0; FR->device_begin = 0; FR->device_end = 0; FR->flood_interior = 0; FR->flood_exterior = 0; FR->draw_pixel = 0; FR->draw_pie = 0; FR->draw_chord = 0; FR->draw_arc = 0; FR->draw_ellipse = 0; FR->draw_line = 0; FR->poly_line = 0; FR->draw_polygon = 0; FR->draw_polypolygon = 0; FR->draw_rectangle = 0; FR->rop_draw = 0; FR->bmp_draw = 0; FR->bmp_read = 0; FR->bmp_free = 0; FR->draw_text = 0; FR->udata_init = 0; FR->udata_copy = 0; FR->udata_set = 0; FR->udata_free = 0; FR->region_frame = 0; FR->region_paint = 0; FR->region_clip = 0; /* Create ipa-device data */ if (flags & WMF_OPT_FUNCTION) { options->function (API); } else if (flags & WMF_OPT_MODULE) /* TODO... TODO... TODO... */ { WMF_ERROR (API,"libwmf: module interface not implemented yet..."); WMF_ERROR (API," unable to initialize device layer!"); API->err = wmf_E_Glitch; } else { WMF_ERROR (API,"libwmf: unable to initialize device layer!"); API->err = wmf_E_Glitch; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); err = wmf_lite_destroy (API); return (err); } /* Create player data */ wmf_player_init (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); err = wmf_lite_destroy (API); return (err); } /* Have successfully created the API... */ (*API_return) = API; return (wmf_E_None); } /** * Close the device layer, if open, and release all allocated memory attached to the memory manager. * * @param API the API handle * * @return The final error state of the library. */ wmf_error_t wmf_lite_destroy (wmfAPI* API) /* Basically free all alloced memory */ { wmf_error_t err; /* associated with the API */ wmfMemoryManager* MM = (wmfMemoryManager*) API->memory_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; if (FR) { /* FR->device_close must be the first action of wmf_lite_destroy in case * FR->device_close decides, for whatever reason, to re-play the meta file * or to acquire API resources... */ if ((API->flags & API_DEVICE_OPEN) && FR->device_close) FR->device_close (API); } if (API->flags & API_FILE_OPEN) wmf_file_close (API); err = API->err; while (MM->count) { MM->count--; if (MM->free) { MM->free (MM->context,MM->list[MM->count]); } else { free (MM->list[MM->count]); } } if (MM->free) { MM->free (MM->context,API); MM->free (MM->context,MM->list); MM->free (MM->context,MM); } else { free (API); free (MM->list); free (MM); } return (err); } /* ERROR & DEBUG Reporting * ======================= */ /** * Set the error state of the library to wmf_E_Assert. * * @param API the API handle * @param file file name * @param line line number * * This should only be called via the macro WMF_ASSERT(API,) which is defined (for debug builds only) * as: * @verbatim #define WMF_ASSERT(Z,M) if (!(M)) wmf_assert (Z,__FILE__,__LINE__) @endverbatim * i.e., if evaluates to 0 then call wmf_assert() with current file name and line number. */ void wmf_assert (wmfAPI* API,char* file,int line) { wmf_error (API,file,line,"Assertion failed!"); API->err = wmf_E_Assert; } /** * Print message to error stream. * * @param API the API handle * @param file file name * @param line line number * @param msg message to print * * This should only be called via the macro WMF_ERROR(API,msg) which calls wmf_error() with the current file * name and line number. */ void wmf_error (wmfAPI* API,char* file,int line,char* msg) { if (API->error_out == 0) return; fprintf (API->error_out,"ERROR: %s (%d): %s\n",file,line,msg); fflush (API->error_out); } /** * Print message to debug stream. * * @param API the API handle * @param file file name * @param line line number * @param msg message to print * * This should only be called via the macro WMF_DEBUG(API,msg) which (in debug builds only) calls * wmf_debug() with the current file name and line number. */ void wmf_debug (wmfAPI* API,char* file,int line,char* msg) { if (API->debug_out == 0) return; fprintf (API->debug_out,"%s (%d): %s\n",file,line,msg); fflush (API->debug_out); } /** * Print formatted message to debug stream. * * @param API the API handle * @param msg message to print * * With syntax similar to printf(), wmf_printf() prints formatted output to the debug stream. */ void wmf_printf (wmfAPI* API,char* msg,...) { va_list argp; va_start (argp,msg); if (API->debug_out) { vfprintf (API->debug_out,msg,argp); fflush (API->debug_out); } va_end (argp); } /* Memory management interface * =========================== */ /** * Allocate memory of specified size and attach to the API's memory manager's internal list. * * @param API the API handle * @param size size in bytes of memory required * * With syntax similar to malloc(), wmf_malloc() allocates \p size bytes of memory and adds a reference to * it in the memory manager's list. To free the memory, use wmf_free(). * * @return Pointer to new memory, or zero on failure. * Sets error state \b wmf_E_InsMem on failure. */ void* wmf_malloc (wmfAPI* API,size_t size) { wmfMemoryManager* MM = (wmfMemoryManager*) API->memory_data; void* mem = 0; void** more = 0; if (size == 0) { WMF_DEBUG (API,"wmf_[*]alloc: attempt to allocate zero-sized memory!"); return (0); } if (MM->count == MM->max) { if (MM->realloc) { more = (void**) MM->realloc (MM->context,MM->list,(MM->max+32) * sizeof (void*)); } else { more = (void**) realloc (MM->list,(MM->max+32) * sizeof (void*)); } if (more == 0) { WMF_ERROR (API,"wmf_[*]alloc: insufficient memory!"); API->err = wmf_E_InsMem; return (0); } MM->max += 32; MM->list = more; } if (MM->malloc) { mem = MM->malloc (MM->context,size); } else { mem = malloc (size); } if (mem == 0) { WMF_ERROR (API,"wmf_[*]alloc: insufficient memory!"); API->err = wmf_E_InsMem; return (0); } MM->list[MM->count] = mem; MM->count++; return (mem); } /** * Allocate memory of specified size and attach to the API's memory manager's internal list. * * @param API the API handle * @param number number or elements * @param size size in bytes of memory required by one element * * With syntax similar to calloc(), wmf_calloc() allocates \p number * \p size bytes of memory and adds a * reference to it in the memory manager's list. To free the memory, use wmf_free(). * * @return Pointer to new memory, or zero on failure. * Sets error state \b wmf_E_InsMem on failure. */ void* wmf_calloc (wmfAPI* API,size_t number,size_t size) { return (wmf_malloc (API,number * size)); } /** * (Re)Allocate memory of specified size and attach to the API's memory manager's internal list. * * @param API the API handle * @param mem pointer to memory previously allocated via the API * @param size new size in bytes of memory required * * With syntax similar to realloc(), wmf_realloc() allocates \p size bytes of memory and adds a reference * to it in the memory manager's list. To free the memory, use wmf_free(). If \p mem is zero, this is * equivalent to a call to wmf_malloc(). If \p size is zero, the memory is released via wmf_free(). * * @return Pointer to new memory, or zero on failure. * Sets error state \b wmf_E_InsMem on failure. */ void* wmf_realloc (wmfAPI* API,void* mem,size_t size) { wmfMemoryManager* MM = (wmfMemoryManager*) API->memory_data; void* more = 0; int i; if (mem == 0) return (wmf_malloc (API,size)); if (size == 0) { WMF_DEBUG (API,"wmf_realloc: attempt to allocate zero-sized memory!"); wmf_free (API,mem); return (0); } for (i = 0; i < MM->count; i++) if (MM->list[i] == mem) { if (MM->realloc) { more = MM->realloc (MM->context,mem,size); } else { more = realloc (mem,size); } if (more == 0) { WMF_ERROR (API,"wmf_[*]alloc: insufficient memory!"); API->err = wmf_E_InsMem; } else { MM->list[i] = more; } break; } return (more); } /** * Frees memory attached to the API's memory manager's internal list. * * @param API the API handle * @param mem pointer to memory previously allocated via the API * * Syntax is similar to free(). */ void wmf_free (wmfAPI* API,void* mem) { wmfMemoryManager* MM = (wmfMemoryManager*) API->memory_data; int i; for (i = 0; i < MM->count; i++) if (MM->list[i] == mem) { if (MM->free) { MM->free (MM->context,mem); } else { free (mem); } MM->count--; MM->list[i] = MM->list[MM->count]; break; } } /** * Detach memory attached to the API's memory manager's internal list. * * @param API the API handle * @param mem pointer to memory previously allocated via the API * * This removes the reference in the API's memory manager's internal list, and the memory will not, * therefore, be released by wmf_api_destroy(). To free subsequently, use free(). */ void wmf_detach (wmfAPI* API,void* mem) { wmfMemoryManager* MM = (wmfMemoryManager*) API->memory_data; int i; for (i = 0; i < MM->count; i++) if (MM->list[i] == mem) { MM->count--; MM->list[i] = MM->list[MM->count]; break; } } /** * Duplicate string and attach to the API's memory manager's internal list. * * @param API the API handle * @param str a string * * With syntax similar to strdup(), wmf_strdup() allocates the necessary memory via wmf_malloc() and copies * the string. Use wmf_free() to free the string. * * @return Pointer to new string, or zero on failure. * Sets error state \b wmf_E_InsMem on failure, or \b wmf_E_Glitch if str is zero. */ char* wmf_strdup (wmfAPI* API,const char* str) { char* cpy = 0; if (str == 0) { if (ERR (API)) return (0); WMF_ERROR (API,"wmf_strdup: attempt to copy non-existent string!"); API->err = wmf_E_Glitch; return (0); } cpy = (char*) wmf_malloc (API,strlen (str) + 1); if (ERR (API)) return (0); strcpy (cpy,str); return (cpy); } /** * Create concatenatation of two strings and attach to the API's memory manager's internal list. * * @param API the API handle * @param pre a string * @param post a string * * wmf_str_append() allocates the necessary memory via wmf_malloc(), copies \p pre into the string and * appends \p post. Use wmf_free() to free the string. * * @return Pointer to new string, or zero on failure. * Sets error state \b wmf_E_InsMem on failure, or \b wmf_E_Glitch if str is zero. */ char* wmf_str_append (wmfAPI* API,char* pre,char* post) { char* cpy = 0; if ((pre == 0) && (post == 0)) return (0); if (pre == 0) return (wmf_strdup (API,post)); if (post == 0) return (wmf_strdup (API,pre)); cpy = (char*) wmf_malloc (API,strlen (pre) + strlen (post) + 1); if (ERR (API)) return (0); strcpy (cpy,pre); strcat (cpy,post); return (cpy); } /** * Substring search. * * @param haystack a string * @param needle a substring to search for in haystack * * With syntax identical to strstr(), wmf_strstr() searches for string \p needle in string \p haystack. * * @return Pointer to substring \p needle found in \p haystack, or zero if not found. */ char* wmf_strstr (const char* haystack,const char* needle) { #ifdef HAVE_STRSTR return (strstr (haystack,needle)); #else /* HAVE_STRSTR */ const char* ptr1; const char* ptr2; const char* ptr3; ptr1 = haystack; while (*ptr1) { ptr2 = ptr1; ptr3 = needle; while ((*ptr3) == (*ptr2)) { if ((*ptr3) == 0) break; ptr2++; ptr3++; } if ((*ptr3) == 0) break; ptr1++; } return ((*ptr1) ? (char*) ptr1 : 0); #endif /* HAVE_STRSTR */ } /* Optional status call-back function * ================================== */ /** * Set a status call-back function. * * @param API the API handle * @param context handle for user data * @param function call-back function * * The metafile player calls the status function after each record. */ void wmf_status_function (wmfAPI* API,void* context,wmfStatus function) { API->status.context = context; API->status.function = function; } /** * Increase the size of the internal string buffer. * * @param API the API handle * * \b libwmf maintains an internal buffer for string operations. wmf_strbuf_grow() increases the size by 64. * * @return Returns the new size of the buffer. * Uses wmf_realloc(), so may set \b wmf_E_InsMem on failure. */ unsigned long wmf_strbuf_grow (wmfAPI* API) { char* more = 0; more = (char*) wmf_realloc (API,API->string_buffer.buffer,(API->string_buffer.length + 64) * sizeof (char)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (0); } API->string_buffer.length += 64; API->string_buffer.buffer = more; return (API->string_buffer.length); } libwmf-0.2.8.4/src/bbuf.c0000644000077100007710000001544707373707573014411 0ustar fjffjf00000000000000/* libwmf (bbuf.c): library for wmf conversion Copyright (C) 2000,2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include "wmfdefs.h" #include "bbuf.h" /** * Set custom metafile input-stream handler functions. * * @param API the API handle * @param fp_read function to read a byte * @param fp_seek function to set position * @param fp_tell function to get position * @param user_data handle for user data * * \b libwmf has simple methods for reading either from file or from memory, but many applications will want * to use customized variants of these. wmf_bbuf_input() enables this. * * @verbatim typedef int (*wmfRead) (void* user_data); typedef int (*wmfSeek) (void* user_data,long position); typedef long (*wmfTell) (void* user_data); @endverbatim * * \b wmfRead returns unsigned char cast to int, or EOF (cf. fgetc()) * * \b wmfSeek returns (-1) on error, otherwise 0 (cf. fseek()) * * \b wmfTell returns (-1) on error, otherwise current position (cf. ftell()) * * @return Returns the library error state (\b wmf_E_None on success). * Possible library error state of \b wmf_E_Glitch, if any of the three functions is zero. */ wmf_error_t wmf_bbuf_input (wmfAPI* API,wmfRead fp_read,wmfSeek fp_seek,wmfTell fp_tell,void* user_data) { if (ERR (API)) return (API->err); if ((fp_read == 0) || (fp_seek == 0) || (fp_tell == 0)) { WMF_ERROR (API,"wmf_bbuf_input: null arg. given unexpectedly!"); API->err = wmf_E_Glitch; } else { API->buffer_data = user_data; API->bbuf.read = fp_read; API->bbuf.seek = fp_seek; API->bbuf.tell = fp_tell; } return (API->err); } /** * Open file as metafile. * * @param API the API handle * @param file file name * * Simple method for reading from file. * * @return Returns the library error state (\b wmf_E_None on success). * Possible library error states of \b wmf_E_Glitch or \b wmf_E_BadFile. */ wmf_error_t wmf_file_open (wmfAPI* API,const char* file) { wmfBBufFileInfo* file_info = 0; if (ERR (API)) return (API->err); if (API->buffer_data) { WMF_ERROR (API,"wmf_file_open: input stream already open!"); API->err = wmf_E_Glitch; return (API->err); } file_info = (wmfBBufFileInfo*) wmf_malloc (API,sizeof (wmfBBufFileInfo)); if (ERR (API)) return (API->err); if ((file_info->file = fopen (file,"rb")) == 0) { WMF_ERROR (API,"wmf_file_open: unable to open file for reading."); wmf_free (API,file_info); API->err = wmf_E_BadFile; return (API->err); } wmf_bbuf_input (API,wmf_file_read,wmf_file_seek,wmf_file_tell,(void*) file_info); if (ERR (API)) { wmf_file_close (API); return (API->err); } API->flags |= API_FILE_OPEN; return (API->err); } /** * Close metafile input file stream. * * @param API the API handle * * @return Returns the library error state (\b wmf_E_None on success). * Possible library error state of \b wmf_E_Glitch. */ wmf_error_t wmf_file_close (wmfAPI* API) { wmfBBufFileInfo* file_info = (wmfBBufFileInfo*) (API->buffer_data); if ((API->buffer_data == 0) || ((API->flags & API_FILE_OPEN) == 0)) { WMF_ERROR (API,"wmf_file_close: attempt to close unopened stream!"); API->err = wmf_E_Glitch; return (API->err); } fclose (file_info->file); API->flags &= ~API_FILE_OPEN; wmf_free (API,API->buffer_data); API->buffer_data = 0; API->bbuf.read = 0; API->bbuf.seek = 0; API->bbuf.tell = 0; return (API->err); } /** * @internal */ int wmf_file_read (void* user_data) { wmfBBufFileInfo* file_info = (wmfBBufFileInfo*) user_data; return (fgetc (file_info->file)); } /** * @internal */ int wmf_file_seek (void* user_data,long pos) { wmfBBufFileInfo* file_info = (wmfBBufFileInfo*) user_data; return (fseek (file_info->file,pos,SEEK_SET)); } /** * @internal */ long wmf_file_tell (void* user_data) { wmfBBufFileInfo* file_info = (wmfBBufFileInfo*) user_data; return (ftell (file_info->file)); } /** * Open metafile in memory. * * @param API the API handle * @param mem the metafile in memory * @param length the length in bytes of metafile data * * Simple method for reading from memory as array of unsigned char. * * @return Returns the library error state (\b wmf_E_None on success). * Possible library error state of \b wmf_E_Glitch. */ wmf_error_t wmf_mem_open (wmfAPI* API,unsigned char* mem,long length) { wmfBBufMemInfo* mem_info = 0; if (ERR (API)) return (API->err); if (API->buffer_data) { WMF_ERROR (API,"wmf_mem_open: input stream already open!"); API->err = wmf_E_Glitch; return (API->err); } if ((mem == 0) || (length <= 0)) { WMF_ERROR (API,"wmf_mem_open: null or improper buffer!"); API->err = wmf_E_Glitch; return (API->err); } mem_info = (wmfBBufMemInfo*) wmf_malloc (API,sizeof (wmfBBufMemInfo)); if (ERR (API)) return (API->err); mem_info->mem = mem; mem_info->ptr = mem; mem_info->pos = 0; mem_info->length = length; wmf_bbuf_input (API,wmf_mem_read,wmf_mem_seek,wmf_mem_tell,(void*) mem_info); if (ERR (API)) { wmf_mem_close (API); return (API->err); } return (API->err); } /** * Close metafile input memory stream. * * @param API the API handle * * @return Returns the library error state (\b wmf_E_None on success). */ wmf_error_t wmf_mem_close (wmfAPI* API) { wmf_free (API,API->buffer_data); API->buffer_data = 0; API->bbuf.read = 0; API->bbuf.seek = 0; API->bbuf.tell = 0; return (API->err); } /** * @internal */ int wmf_mem_read (void* user_data) { int byte = EOF; wmfBBufMemInfo* mem_info = (wmfBBufMemInfo*) user_data; if (mem_info->pos < mem_info->length) { byte = (int) (*(mem_info->ptr)); mem_info->ptr++; mem_info->pos++; } return (byte); } /** * @internal */ int wmf_mem_seek (void* user_data,long pos) { wmfBBufMemInfo* mem_info = (wmfBBufMemInfo*) user_data; if ((pos < 0) || (pos >= mem_info->length)) return (-1); mem_info->ptr = mem_info->mem + pos; mem_info->pos = pos; return (0); } /** * @internal */ long wmf_mem_tell (void* user_data) { wmfBBufMemInfo* mem_info = (wmfBBufMemInfo*) user_data; return (mem_info->pos); } libwmf-0.2.8.4/src/meta.c0000644000077100007710000003237307503051513014373 0ustar fjffjf00000000000000/* libwmf (meta.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include "wmfdefs.h" static void write_header (wmfAPI*,long,long); static void write_str (wmfAPI*,const char*); static void write_b64 (wmfAPI*,const unsigned char*,unsigned long); /** * @internal */ U16 wmf_read_16 (wmfAPI* API) { int i1; int i2; U16 bb = 0; if (API->bbuf.read == 0) { WMF_ERROR (API,"wmf_read_16: no input stream open!"); API->err = wmf_E_BadFile; } else { i1 = WMF_READ (API); i2 = WMF_READ (API); if ((i1 == EOF) || (i2 == EOF)) { WMF_DEBUG (API,"wmf_read_16: (EOF)"); API->err = wmf_E_EOF; } else bb = (((U16) i2) << 8) + ((U16) i1); } return (bb); } /** * @internal */ U32 wmf_read_32 (wmfAPI* API,U16* u16a,U16* u16b) { U16 w1; U16 w2; U32 ww = 0; w1 = wmf_read_16 (API); w2 = wmf_read_16 (API); if (u16a) (*u16a) = w1; if (u16b) (*u16b) = w2; if (API->err == wmf_E_None) ww = WMF_U16_U16_to_U32 (w1,w2); return (ww); } /** * Compute the Aldus checksum of the metafile's header. * * @param API the API handle * * (Must read the header first, either via wmf_scan() or by calling wmf_header_read() directly.) * * @return Returns the checksum. */ U16 wmf_aldus_checksum (wmfAPI* API) { U16 Checksum = 0; Checksum ^= API->File->pmh->Key & 0x0000FFFFUL; Checksum ^= (API->File->pmh->Key & 0xFFFF0000UL) >> 16; Checksum ^= API->File->pmh->Handle; Checksum ^= API->File->pmh->Left; Checksum ^= API->File->pmh->Top; Checksum ^= API->File->pmh->Right; Checksum ^= API->File->pmh->Bottom; Checksum ^= API->File->pmh->Inch; Checksum ^= API->File->pmh->Reserved & 0x0000FFFFUL; Checksum ^= (API->File->pmh->Reserved & 0xFFFF0000UL) >> 16; return (Checksum); } /** * Read the metafile's header. * * @param API the API handle * * (Must read the header first, either via wmf_scan() or by calling wmf_header_read() directly.) * * @return Returns the library error state (\b wmf_E_None on success). * Possible library error states of \b wmf_E_Glitch, \b wmf_E_BadFormat (bad header), * \b wmf_E_BadFile (no open input stream) and \b wmf_E_EOF (premature end-of-file). */ wmf_error_t wmf_header_read (wmfAPI* API) { U16 u16a; U16 u16b; long header_start = WMF_TELL (API); long header_end = 0; if ((API->File->pmh->Key = wmf_read_32 (API,&u16a,&u16b)) == 0x9ac6cdd7) { API->File->placeable = 1; API->File->pmh->Handle = wmf_read_16 (API); u16a = wmf_read_16 (API); API->File->pmh->Left = U16_2_S16 (u16a); u16a = wmf_read_16 (API); API->File->pmh->Top = U16_2_S16 (u16a); u16a = wmf_read_16 (API); API->File->pmh->Right = U16_2_S16 (u16a); u16a = wmf_read_16 (API); API->File->pmh->Bottom = U16_2_S16 (u16a); API->File->pmh->Inch = wmf_read_16 (API); API->File->pmh->Reserved = wmf_read_32 (API,0,0); API->File->pmh->Checksum = wmf_read_16 (API); API->File->wmfheader->FileType = wmf_read_16 (API); API->File->wmfheader->HeaderSize = wmf_read_16 (API); } else { API->File->placeable = 0; API->File->pmh->Key = 0; API->File->pmh->Handle = 0; API->File->pmh->Left = 0; API->File->pmh->Top = 0; API->File->pmh->Right = 0; /* was 6000 */ API->File->pmh->Bottom = 0; /* was 6000 */ API->File->pmh->Inch = 0; API->File->pmh->Reserved = 0; API->File->pmh->Checksum = 0; API->File->wmfheader->FileType = u16a; /* from key-check above */ API->File->wmfheader->HeaderSize = u16b; } if (ERR (API)) return (API->err); if (API->File->wmfheader->HeaderSize == 9) { API->File->wmfheader->Version = wmf_read_16 (API); API->File->wmfheader->FileSize = wmf_read_32 (API,0,0); API->File->wmfheader->NumOfObjects = wmf_read_16 (API); API->File->wmfheader->MaxRecordSize = wmf_read_32 (API,0,0); API->File->wmfheader->NumOfParams = wmf_read_16 (API); if (API->bbuf.tell == 0) { WMF_ERROR (API,"wmf_header_read: Glitch! No tell() function!"); API->err = wmf_E_Glitch; } else { API->File->pos = WMF_TELL (API); header_end = API->File->pos; write_header (API, header_start, header_end); } } else { WMF_ERROR (API,"wmf_header_read: this isn't a wmf file"); API->err = wmf_E_BadFormat; } return (API->err); } static void write_header (wmfAPI* API, long header_start, long header_end) { unsigned char * header = 0; long i; long header_size = header_end - header_start; int byte; wmfAttributes attrlist; if (API->write_data == 0) return; if (header_size <= 0) { WMF_ERROR (API, "Glitch!"); API->err = wmf_E_Glitch; return; } header = (unsigned char *) wmf_malloc (API, header_size); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } wmf_attr_new (API, &attrlist); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } WMF_SEEK (API,header_start); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } for (i = 0; i < header_size; i++) { byte = WMF_READ (API); if (byte == EOF) { WMF_ERROR (API, "Glitch!"); API->err = wmf_E_Glitch; break; } header[i] = (unsigned char) (byte & 0xff); } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } wmf_write (API, 0, 0, "header", attrlist.atts, header, header_size); wmf_attr_free (API, &attrlist); wmf_free (API, header); } typedef enum _wmf_write_t { wmf_W_WMF = 0, wmf_W_XML } wmf_write_t; typedef struct _wmfWriteFileInfo wmfWriteFileInfo; struct _wmfWriteFileInfo { FILE* file; wmf_write_t type; }; void wmf_write (wmfAPI * API, unsigned long Size, unsigned int Function, const char * name, char ** atts, const unsigned char * buffer, unsigned long length) { char ** attr = 0; unsigned char prefix[6]; wmfWriteFileInfo * WFI = (wmfWriteFileInfo *) API->write_data; if (WFI == 0) return; prefix[0] = (unsigned char) ( Size & 0xff); prefix[1] = (unsigned char) ((Size >> 8) & 0xff); prefix[2] = (unsigned char) ((Size >> 16) & 0xff); prefix[3] = (unsigned char) ((Size >> 24) & 0xff); prefix[4] = (unsigned char) ( Function & 0xff); prefix[5] = (unsigned char) ((Function >> 8) & 0xff); if (WFI->type == wmf_W_WMF) { if (strcmp (name, "header")) fwrite (prefix, 1, 6, WFI->file); if (buffer && length) fwrite (buffer, 1, length, WFI->file); return; } if (name == 0) return; fprintf (WFI->file, " <%s", name); if (atts) { attr = atts; while (*attr) { fprintf (WFI->file, " %s=\"", *attr++); if (*attr) fputs (*attr, WFI->file); fputs ("\"", WFI->file); attr++; } } fputs (">\n", WFI->file); if (strcmp (name, "header")) write_b64 (API, prefix, 6); if (buffer && length) write_b64 (API, buffer, length); fprintf (WFI->file, " \n", name); } void wmf_write_begin (wmfAPI * API, const char * filename) { int length; wmfWriteFileInfo * WFI = (wmfWriteFileInfo *) wmf_malloc (API, sizeof(wmfWriteFileInfo)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } if (filename == 0) { WMF_ERROR (API,"Glitch!"); API->err = wmf_E_Glitch; return; } length = strlen (filename); if (length < 5) { WMF_ERROR (API,"Bad [--wmf-write] filename! expected *.wmf or *.xml"); API->err = wmf_E_BadFile; return; } if ((strcmp (filename + length - 4, ".wmf") == 0) || (strcmp (filename + length - 4, ".WMF") == 0)) { WFI->type = wmf_W_WMF; } else if ((strcmp (filename + length - 4, ".xml") == 0) || (strcmp (filename + length - 4, ".XML") == 0)) { WFI->type = wmf_W_XML; } else { WMF_ERROR (API,"Bad [--wmf-write] filename! expected *.wmf or *.xml"); API->err = wmf_E_BadFile; return; } if (WFI->type == wmf_W_WMF) WFI->file = fopen (filename, "wb"); if (WFI->type == wmf_W_XML) WFI->file = fopen (filename, "w"); if (WFI->file == 0) { WMF_ERROR (API,"Unable to open [--wmf-write] file for writing!"); API->err = wmf_E_BadFile; return; } API->write_data = (void *) WFI; if (WFI->type == wmf_W_XML) { API->flags |= API_ENABLE_EDITING; write_str (API, "\n"); write_str (API, "\n"); } } void wmf_write_end (wmfAPI * API) { wmfWriteFileInfo * WFI = (wmfWriteFileInfo *) API->write_data; if (WFI == 0) return; if (WFI->type == wmf_W_XML) write_str (API, "\n"); fclose (WFI->file); wmf_free (API, API->write_data); API->write_data = 0; } static void write_str (wmfAPI * API, const char * str) { wmfWriteFileInfo * WFI = (wmfWriteFileInfo *) API->write_data; if (WFI == 0) return; if (WFI->type == wmf_W_WMF) return; if ( str == 0) return; if (*str == 0) return; fputs (str, WFI->file); } static void write_b64 (wmfAPI * API, const unsigned char * buffer, unsigned long length) { static char B64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; unsigned long i; unsigned long b32; unsigned long remaining = length; const unsigned char * bufptr = buffer; char buf[74]; char * ptr = 0; wmfWriteFileInfo * WFI = (wmfWriteFileInfo *) API->write_data; if (WFI == 0) return; if (WFI->type == wmf_W_WMF) return; if (length == 0) return; if (buffer == 0) { WMF_ERROR (API, "Glitch!"); API->err = wmf_E_Glitch; return; } buf[72] = '\n'; buf[73] = 0; while (remaining >= 54) { ptr = buf; for (i = 0; i < 18; i++) { b32 = (unsigned long) *bufptr++; b32 = (b32 << 8) | (unsigned long) *bufptr++; b32 = (b32 << 8) | (unsigned long) *bufptr++; *ptr++ = B64[(b32 >> 18) ]; *ptr++ = B64[(b32 >> 12) & 0x3f]; *ptr++ = B64[(b32 >> 6) & 0x3f]; *ptr++ = B64[ b32 & 0x3f]; } fputs (buf, WFI->file); remaining -= 54; } ptr = buf; while (remaining >= 3) { b32 = (unsigned long) *bufptr++; b32 = (b32 << 8) | (unsigned long) *bufptr++; b32 = (b32 << 8) | (unsigned long) *bufptr++; *ptr++ = B64[(b32 >> 18) ]; *ptr++ = B64[(b32 >> 12) & 0x3f]; *ptr++ = B64[(b32 >> 6) & 0x3f]; *ptr++ = B64[ b32 & 0x3f]; remaining -= 3; } if (remaining == 2) { b32 = (unsigned long) *bufptr++; b32 = (b32 << 8) | (unsigned long) *bufptr++; b32 = (b32 << 8); *ptr++ = B64[(b32 >> 18) ]; *ptr++ = B64[(b32 >> 12) & 0x3f]; *ptr++ = B64[(b32 >> 6) & 0x3f]; remaining -= 2; } if (remaining == 1) { b32 = (unsigned long) *bufptr++; b32 = (b32 << 16); *ptr++ = B64[(b32 >> 18) ]; *ptr++ = B64[(b32 >> 12) & 0x3f]; remaining -= 1; } *ptr++ = '\n'; *ptr++ = 0; fputs (buf, WFI->file); } void wmf_attr_new (wmfAPI * API, wmfAttributes * list) { if (list == 0) return; list->name = 0; list->buffer = 0; list->length = 0; list->offset = 0; list->count = 0; list->max = 0; list->atts = (char **) wmf_malloc (API, 2 * (8 + 1) * sizeof (char *)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } list->max = 8; list->atts[list->count] = 0; } void wmf_attr_clear (wmfAPI * API, wmfAttributes * list) { unsigned long i; if (list == 0) return; for (i = 0; i < (2 * list->count); i++) wmf_free (API, list->atts[i]); list->count = 0; list->atts[list->count] = 0; if (list->name) { wmf_free (API, list->name); list->name = 0; } list->buffer = 0; list->length = 0; } void wmf_attr_free (wmfAPI * API, wmfAttributes * list) { if (list == 0) return; wmf_attr_clear (API, list); if (list->atts) { wmf_free (API, list->atts); list->atts = 0; } list->max = 0; } const char * wmf_attr_add (wmfAPI * API, wmfAttributes * list, const char * name, const char * value) { unsigned long i; char ** more = 0; char * copy_name = 0; char * copy_value = 0; if (list == 0) return 0; if (list->atts == 0) return 0; copy_value = wmf_strdup (API, value); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return 0; } for (i = 0; i < (2 * list->count); i += 2) { if (strcmp (list->atts[i], name) == 0) { copy_name = list->atts[i]; wmf_free (API, list->atts[i+1]); list->atts[i+1] = copy_value; break; } } if (copy_name) return copy_value; copy_name = wmf_strdup (API, name); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return 0; } if (list->count == list->max) { more = (char **) wmf_realloc (API, list->atts, 2 * (list->max + 8 + 1) * sizeof (char *)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return 0; } list->atts = more; list->max += 8; } list->atts[list->count++] = copy_name; list->atts[list->count++] = copy_value; list->atts[list->count] = 0; return copy_value; } const char * wmf_attr_query (wmfAPI * API, wmfAttributes * list, const char* name) { unsigned long i; const char * value = 0; if (list == 0) return 0; if (list->atts == 0) return 0; for (i = 0; i < (2 * list->count); i += 2) { if (strcmp (list->atts[i], name) == 0) { value = list->atts[i+1]; break; } } return value; } libwmf-0.2.8.4/src/player.c0000644000077100007710000012025507575440322014747 0ustar fjffjf00000000000000/* libwmf (player.c): library for wmf conversion Copyright (C) 2000,2001 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include "wmfdefs.h" #include "metadefs.h" #include "player.h" #include "player/region.h" /* Provides: REGION manipulation functions */ #include "player/clip.h" /* Provides: clip function */ #include "player/color.h" /* Provides: color stuff */ #include "player/coord.h" /* Provides: coordinate translations */ #include "player/dc.h" /* Provides: dc stack & other dc functions */ #include "player/defaults.h" /* Provides: default settings */ #include "player/record.h" /* Provides: parameter mechanism */ #include "player/meta.h" /* Provides: record interpreters */ /** * @internal */ wmf_error_t wmf_player_init (wmfAPI* API) { wmfPlayer_t* P = 0; WMF_DEBUG (API,"~~~~~~~~wmf_player_init"); API->player_data = wmf_malloc (API,sizeof (wmfPlayer_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } P = (wmfPlayer_t*) API->player_data; P->flags = 0; return (API->err); } /** * Scan the metafile. * * @param API the API handle * @param flags (unused) * @param d_r for bounding-box return * * Before the metafile can be played, it must be scanned. This is because metafile headers do not always * provide image size information. Although the device layer (the graphics exporter) is initialized in * wmf_api_create(), the output device is not opened until after the metafile is scanned. By scanning, * therefore, the device layer can be provided on opening not only with size information but also a list * of colors to expect (not including those in raster images) and of other required resources, if necessary. * Finally, if scanning fails, then there's certainly no point in playing the metafile. * * The bounding box, in device coordinates, is returned in \p *d_r. * * @return Returns the library error state (\b wmf_E_None on success). */ wmf_error_t wmf_scan (wmfAPI* API,unsigned long flags,wmfD_Rect* d_r) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; WMF_DEBUG (API,"~~~~~~~~wmf_scan"); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } /* wmf_scan doesn't allow re-scanning, but I suppose there may be a case * implementing a rescan function (or WMF_RESCAN flag?) at some point ?? */ if (P->flags & PLAYER_SCANNED) { WMF_DEBUG (API,"already scanned; skipping..."); return (API->err); } P->dc_stack_maxlen = 0; P->dc_stack = 0; P->objects = 0; P->D_TL.x = 0; P->D_TL.y = 0; P->D_BR.x = 0; P->D_BR.y = 0; d_r->TL = P->D_TL; d_r->BR = P->D_BR; P->flags &= ~PLAYER_PLAY; /* Set scan mode */ wmf_header_read (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } if (API->File->wmfheader->NumOfObjects > 0) { P->objects = (wmfObject*) wmf_malloc (API,NUM_OBJECTS (API) * sizeof (wmfObject)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } } /* P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API)-3) * 2 * sizeof (unsigned char)); */ P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API) ) * 2 * sizeof (unsigned char)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } WmfPlayMetaFile (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } d_r->TL = P->D_TL; d_r->BR = P->D_BR; P->flags |= PLAYER_SCANNED; return (API->err); } /** * Get image size. * * @param API the API handle * @param width width return * @param height height return * * wmf_size() returns image width in \p *width and image height in \p *height. If supplied, the metafile * header values are used, otherwise the width and height found by wmf_scan() are used. * * @return Returns the library error state (\b wmf_E_None on success). * Possible library error state of \b wmf_E_Glitch (the metafile has not been scanned). */ wmf_error_t wmf_size (wmfAPI* API,float* width,float* height) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; S16 default_width; S16 default_height; WMF_DEBUG (API,"~~~~~~~~wmf_size"); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } if ((P->flags & PLAYER_SCANNED) == 0) { WMF_ERROR (API,"attempt to determine size of unscanned metafile!"); API->err = wmf_E_Glitch; return (API->err); } default_width = WMF_BBOX_RIGHT (API) - WMF_BBOX_LEFT (API); default_height = WMF_BBOX_TOP (API) - WMF_BBOX_BOTTOM (API); default_width = ABS (default_width ); default_height = ABS (default_height); if (default_width && default_height) { (*width) = (float) default_width; (*height) = (float) default_height; } else { (*width) = P->D_BR.x - P->D_TL.x; (*height) = P->D_BR.y - P->D_TL.y; } return (API->err); } /** * Get estimate of image display size. * * @param API the API handle * @param width width return * @param height height return * @param res_x x-resolution of display * @param res_y y-resolution of display * * wmf_display_size() returns image width in \p *width and image height in \p *height. * wmf_size() is used to get the calculated/estimate width and height of the image, * and these values are converted to integer width and height estimates for display. * * @return Returns the library error state (\b wmf_E_None on success). * Possible library error state of \b wmf_E_Glitch (the metafile has not been scanned). */ wmf_error_t wmf_display_size (wmfAPI* API,unsigned int* width,unsigned int* height, double res_x,double res_y) { unsigned int units_per_inch = 1440; double disp_width; double disp_height; float est_width; float est_height; WMF_DEBUG (API,"~~~~~~~~wmf_display_size"); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } wmf_size (API, &est_width, &est_height); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } if (PLACEABLE (API)) { units_per_inch = DPI (API); } else if ((est_width * est_height) < (1024 * 1024)) { units_per_inch = 72; } disp_width = ((double) est_width ) * res_x / (double) units_per_inch; disp_height = ((double) est_height) * res_y / (double) units_per_inch; if (width) *width = (unsigned int) disp_width; if (height) *height = (unsigned int) disp_height; return API->err; } /** * Play the metafile. * * @param API the API handle * @param flags (unused) * @param d_r for bounding-box return * * Before the metafile can be played, it must be scanned - see wmf_scan(). * * The first time (and only the first time) the metafile is played, it first calls \b device_open() for the * device layer specified (and initialized) in wmf_api_create(). Then, and also each subsequent time the * metafile is played, it calls \b device_begin(), plays the metafile (with calls to various other device * layer functions), and finally it calls \b device_end(). \b device_close() is only ever called via * wmf_api_destroy(). * * \p d_r is recomputed, but should not change. * * @return Returns the library error state (\b wmf_E_None on success). */ wmf_error_t wmf_play (wmfAPI* API,unsigned long flags,wmfD_Rect* d_r) { wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; WMF_DEBUG (API,"~~~~~~~~wmf_play"); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } if ((P->flags & PLAYER_SCANNED) == 0) { WMF_ERROR (API,"attempt to play unscanned metafile!"); API->err = wmf_E_Glitch; return (API->err); } if ((API->flags & API_DEVICE_OPEN) == 0) { if (FR->device_open) FR->device_open (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } API->flags |= API_DEVICE_OPEN; } d_r->TL = P->D_TL; d_r->BR = P->D_BR; P->flags |= PLAYER_PLAY; /* Set play mode */ WmfPlayMetaFile (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } d_r->TL = P->D_TL; d_r->BR = P->D_BR; return (API->err); } static wmf_error_t WmfPlayMetaFile (wmfAPI* API) { int i; int byte; int changed; unsigned char* Par; unsigned int Function; unsigned long Size; unsigned long number; long pos_params; long pos_current; long pos_max; wmfObject* objects = 0; wmfUserData_t userdata; wmfRegion* visible; wmfRecord Record; wmfPlayer_t* P = (wmfPlayer_t*) API->player_data; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; wmfFontData* FD = (wmfFontData*) API->font_data; wmfAttributes attrlist; wmfAttributes * atts = 0; WMF_DEBUG (API,"~~~~~~~~WmfPlayMetaFile"); P->dc_stack_length = 0; visible = &(P->visible); visible->numRects = 0; visible->rects = 0; visible->size = 0; P->current.x = 0; /* Should this be in the DC ?? */ P->current.y = 0; P->Viewport_Origin.x = 0; /* Should this be in the DC ?? */ P->Viewport_Origin.y = 0; P->Viewport_Width = 1024; /* Should this be in the DC ?? */ P->Viewport_Height = 1024; /* Can SetDefaults go in player_init ?? */ if (FD == 0) { WMF_ERROR (API,"Glitch! No font engine interface!"); API->err = wmf_E_Glitch; return (API->err); } if (FD->map == 0) { WMF_ERROR (API,"Glitch! No font-mapper!"); API->err = wmf_E_Glitch; return (API->err); } if (FD->stringwidth == 0) { WMF_ERROR (API,"Glitch! No string width function!"); API->err = wmf_E_Glitch; return (API->err); } if ((API->bbuf.read == 0) || (API->bbuf.seek == 0) || (API->bbuf.tell == 0)) { WMF_ERROR (API,"WmfPlayMetaFile: input functions set improperly!"); API->err = wmf_E_Glitch; return (API->err); } P->dc = dc_copy (API,0); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } WmfSetMapMode (API,(U16)(PLACEABLE (API) ? MM_DPI : MM_TEXT)); if (PLAY (API)) { if (FR->device_begin) FR->device_begin (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } } Par = P->Parameters; objects = P->objects; for (i = 0; i < NUM_OBJECTS (API); i++) objects[i].type = 0; WMF_SEEK (API,API->File->pos); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } wmf_attr_new (API, &attrlist); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (API->err); } number = 0; do { if (++number < API->store.count) { atts = API->store.attrlist + number; } else { atts = &attrlist; wmf_attr_clear (API, atts); } Size = wmf_read_32 (API,0,0); Function = wmf_read_16 (API); if ((Size == 3) && (Function == 0)) { if (SCAN (API)) wmf_write (API, Size, Function, "empty", atts->atts, 0, 0); break; /* Probably final record ?? */ } /* if ((Size > MAX_REC_SIZE (API)) || (Size < 3)) */ if (((Size - 3) > MAX_REC_SIZE (API)) || (Size < 3)) { WMF_ERROR (API,"libwmf: wmf with bizarre record size; bailing..."); WMF_ERROR (API," please send it to us at http://www.wvware.com/"); wmf_printf (API,"maximum record size = %u\n",(unsigned) MAX_REC_SIZE (API)); wmf_printf (API,"record size = %u\n",(unsigned) Size); API->err = wmf_E_BadFormat; break; } pos_params = WMF_TELL (API); if (pos_params < 0) { WMF_ERROR (API,"API's tell() failed on input stream!"); API->err = wmf_E_BadFile; break; } for (i = 0; i < ((Size - 3) * 2); i++) { byte = WMF_READ (API); if (byte == (-1)) { WMF_ERROR (API,"Unexpected EOF!"); API->err = wmf_E_EOF; break; } Par[i] = (unsigned char) byte; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); break; } Record.size = Size - 3; Record.function = Function; Record.parameter = Par; Record.position = pos_params; switch (Function) { case META_SETMAPMODE: SCAN_DIAGNOSTIC (API,"New Record: SETMAPMODE"); changed = meta_mapmode (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setmapmode", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETWINDOWORG: SCAN_DIAGNOSTIC (API,"New Record: SETWINDOWORG"); changed = meta_orgext (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setwindoworg", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETVIEWPORTORG: SCAN_DIAGNOSTIC (API,"New Record: SETVIEWPORTORG"); changed = meta_orgext (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setviewportorg", atts->atts, Record.parameter, Record.size * 2); SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETVIEWPORTEXT: SCAN_DIAGNOSTIC (API,"New Record: SETVIEWPORTEXT"); changed = meta_orgext (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setviewportext", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETWINDOWEXT: SCAN_DIAGNOSTIC (API,"New Record: SETWINDOWEXT"); changed = meta_orgext (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setwindowext", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_OFFSETWINDOWORG: SCAN_DIAGNOSTIC (API,"New Record: OFFSETWINDOWORG"); changed = meta_orgext (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "offsetwindoworg", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_OFFSETVIEWPORTORG: SCAN_DIAGNOSTIC (API,"New Record: OFFSETVIEWPORTORG"); changed = meta_orgext (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "offsetviewportorg", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SCALEWINDOWEXT: SCAN_DIAGNOSTIC (API,"New Record: SCALEWINDOWEXT"); changed = meta_scale (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "scalewindowext", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SCALEVIEWPORTEXT: SCAN_DIAGNOSTIC (API,"New Record: SCALEVIEWPORTEXT"); changed = meta_scale (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "scaleviewportext", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* Following were originally play-only: * (a) basic draw * (b) REGION calls * (c) BMP & ROP stuff * (d) DC set * (e) text & font * (f) palette * (g) create & delete; save & restore; ... * (h) ==== other ==== */ /* (a) basic draw */ case META_MOVETO: SCAN_DIAGNOSTIC (API,"New Record: MOVETO"); changed = meta_moveto (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "moveto", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_FLOODFILL: SCAN_DIAGNOSTIC (API,"New Record: FLOODFILL"); changed = meta_flood (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "floodfill", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_EXTFLOODFILL: SCAN_DIAGNOSTIC (API,"New Record: EXTFLOODFILL"); changed = meta_flood (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "extfloodfill", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETPIXEL: SCAN_DIAGNOSTIC (API,"New Record: SETPIXEL"); changed = meta_pixel (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setpixel", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_PIE: SCAN_DIAGNOSTIC (API,"New Record: PIE"); changed = meta_arc (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "pie", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_CHORD: SCAN_DIAGNOSTIC (API,"New Record: CHORD"); changed = meta_arc (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "chord", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_ARC: SCAN_DIAGNOSTIC (API,"New Record: ARC"); changed = meta_arc (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "arc", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_ELLIPSE: SCAN_DIAGNOSTIC (API,"New Record: ELLIPSE"); changed = meta_ellipse (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "ellipse", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_LINETO: SCAN_DIAGNOSTIC (API,"New Record: LINETO"); changed = meta_line (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "lineto", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_POLYLINE: SCAN_DIAGNOSTIC (API,"New Record: POLYLINE"); changed = meta_lines (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "polyline", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_POLYGON: SCAN_DIAGNOSTIC (API,"New Record: POLYGON"); changed = meta_polygon (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "polygon", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_POLYPOLYGON: SCAN_DIAGNOSTIC (API,"New Record: POLYPOLYGON"); changed = meta_polygons (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "polypolygon", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_ROUNDRECT: SCAN_DIAGNOSTIC (API,"New Record: ROUNDRECT"); changed = meta_round (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "roundrect", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_RECTANGLE: SCAN_DIAGNOSTIC (API,"New Record: RECTANGLE"); changed = meta_rect (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "rectangle", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* (b) REGION calls */ case META_FRAMEREGION: SCAN_DIAGNOSTIC (API,"New Record: FRAMEREGION"); changed = meta_rgn_brush (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "frameregion", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_FILLREGION: SCAN_DIAGNOSTIC (API,"New Record: FILLREGION"); changed = meta_rgn_brush (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "fillregion", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_INVERTREGION: SCAN_DIAGNOSTIC (API,"New Record: INVERTREGION"); changed = meta_rgn_paint (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "invertregion", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_PAINTREGION: SCAN_DIAGNOSTIC (API,"New Record: PAINTREGION"); changed = meta_rgn_paint (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "paintregion", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_CREATEREGION: SCAN_DIAGNOSTIC (API,"New Record: CREATEREGION"); changed = meta_rgn_create (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "createregion", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SELECTCLIPREGION: SCAN_DIAGNOSTIC (API,"New Record: SELECTCLIPREGION"); changed = meta_clip_select (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "selectclipregion", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_OFFSETCLIPRGN: SCAN_DIAGNOSTIC (API,"New Record: OFFSETCLIPREGION"); changed = meta_clip_offset (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "offsetclipregion", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_EXCLUDECLIPRECT: SCAN_DIAGNOSTIC (API,"New Record: EXCLUDECLIPRECT"); changed = meta_clip_combine (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "excludecliprect", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_INTERSECTCLIPRECT: SCAN_DIAGNOSTIC (API,"New Record: INTERSECTCLIPRECT"); changed = meta_clip_combine (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "intersectcliprect", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* (c) BMP & ROP stuff * Notes: (1) BMP width/height may be signed! ?? i.e., -width,-height ?? * (2) Check! Check! Check! */ case META_SETDIBTODEV: SCAN_DIAGNOSTIC (API,"New Record: SETDIBTODEV"); changed = meta_dib_draw (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setdibtodev", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_STRETCHDIB: SCAN_DIAGNOSTIC (API,"New Record: STRETCHDIB"); changed = meta_dib_draw (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "stretchdib", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_DIBSTRETCHBLT: SCAN_DIAGNOSTIC (API,"New Record: DIBSTRETCHBLT"); changed = meta_dib_draw (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "dibstretchblt", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_DIBBITBLT: SCAN_DIAGNOSTIC (API,"New Record: DIBBITBLT"); changed = meta_dib_draw (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "dibbitblt", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_DIBCREATEPATTERNBRUSH: SCAN_DIAGNOSTIC (API,"New Record: DIBCREATEPATTERNBRUSH"); changed = meta_dib_brush (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "dibcreatepatternbrush", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_PATBLT: SCAN_DIAGNOSTIC (API,"New Record: PATBLT"); changed = meta_rop_draw (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "patblt", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* (d) DC set */ case META_SETROP2: SCAN_DIAGNOSTIC (API,"New Record: SETROP2"); changed = meta_dc_set (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setrop2", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETTEXTJUSTIFICATION: SCAN_DIAGNOSTIC (API,"New Record: SETTEXTJUSTIFICATION"); changed = meta_dc_set (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "settextjustification", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETTEXTCHAREXTRA: SCAN_DIAGNOSTIC (API,"New Record: SETTEXTCHAREXTRA"); changed = meta_dc_set (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "settextcharextra", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETPOLYFILLMODE: SCAN_DIAGNOSTIC (API,"New Record: SETPOLYFILLMODE"); changed = meta_dc_set (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setpolyfillmode", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETSTRETCHBLTMODE: SCAN_DIAGNOSTIC (API,"New Record: SETSTRETCHBLTMODE"); changed = meta_unused (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setstretchbltmode", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETTEXTALIGN: SCAN_DIAGNOSTIC (API,"New Record: SETTEXTALIGN"); changed = meta_dc_set (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "settextalign", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETTEXTCOLOR: SCAN_DIAGNOSTIC (API,"New Record: SETTEXTCOLOUR"); changed = meta_dc_color (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "settextcolour", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETBKCOLOR: SCAN_DIAGNOSTIC (API,"New Record: SETBKCOLOR"); changed = meta_dc_color (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setbkcolor", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETBKMODE: SCAN_DIAGNOSTIC (API,"New Record: SETBKMODE"); changed = meta_dc_set (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setbkmode", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SELECTOBJECT: SCAN_DIAGNOSTIC (API,"New Record: SELECTOBJECT"); changed = meta_dc_select (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "selectobject", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* (e) text & font */ case META_TEXTOUT: SCAN_DIAGNOSTIC (API,"New Record: TEXTOUT"); changed = meta_text (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "textout", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_EXTTEXTOUT: SCAN_DIAGNOSTIC (API,"New Record: EXTTEXTOUT"); changed = meta_text (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "exttextout", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_CREATEFONTINDIRECT: SCAN_DIAGNOSTIC (API,"New Record: CREATEFONTINDIRECT"); changed = meta_font_create (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "createfontindirect", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETMAPPERFLAGS: SCAN_DIAGNOSTIC (API,"New Record: SETMAPPERFLAGS"); changed = meta_unused (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setmapperflags", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* (f) palette */ case META_CREATEPALETTE: SCAN_DIAGNOSTIC (API,"New Record: CREATEPALETTE"); changed = meta_palette_create (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "createpalette", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_REALIZEPALETTE: SCAN_DIAGNOSTIC (API,"New Record: REALIZEPALETTE"); changed = meta_unused (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "realizepalette", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SELECTPALETTE: SCAN_DIAGNOSTIC (API,"New Record: SELECTPALETTE"); changed = meta_unused (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "selectpalette", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_SETPALENTRIES: SCAN_DIAGNOSTIC (API,"New Record: SETPALENTRIES"); changed = meta_unused (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "setpalentries", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* (g) create & delete; save & restore; ... */ case META_SAVEDC: SCAN_DIAGNOSTIC (API,"New Record: SAVEDC"); changed = meta_dc_save (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "savedc", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_RESTOREDC: SCAN_DIAGNOSTIC (API,"New Record: RESTOREDC"); changed = meta_dc_restore (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "restoredc", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_CREATEPENINDIRECT: SCAN_DIAGNOSTIC (API,"New Record: CREATEPENINDIRECT"); changed = meta_pen_create (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "createpenindirect", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_CREATEBRUSHINDIRECT: SCAN_DIAGNOSTIC (API,"New Record: CREATEBRUSHINDIRECT"); changed = meta_brush_create (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "createbrushindirect", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; case META_DELETEOBJECT: SCAN_DIAGNOSTIC (API,"New Record: DELETEOBJECT"); changed = meta_delete (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "deleteobject", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; /* (h) ==== other ==== */ case META_ESCAPE: SCAN_DIAGNOSTIC (API,"New Record: ESCAPE"); changed = meta_unused (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "escape", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; default: SCAN_DIAGNOSTIC (API,"New Record: UNKNOWN"); changed = meta_unused (API,&Record,atts); if (SCAN (API)) wmf_write (API, Size, Function, "unknown", atts->atts, Record.parameter, Record.size * 2); if (changed && ((Record.size * 2 + 6) == atts->length)) { memcpy (atts->buffer + 6, Record.parameter, Record.size * 2); } SCAN_DIAGNOSTIC (API,"\n"); break; } if (PLAY (API) && API->status.function) { pos_current = WMF_TELL (API); if (pos_current < 0) { WMF_ERROR (API,"API's tell() failed on input stream!"); API->err = wmf_E_BadFile; break; } pos_current -= API->File->pos; pos_max = (FILE_SIZE(API) - API->File->pos)*2; if (API->status.function (API->status.context,(float) pos_current / (float) pos_max)) { API->err = wmf_E_UserExit; } } } while (API->err == wmf_E_None); if (Size == 0) { WMF_DEBUG (API,"size was 0, giving up now silently..."); if (API->err == wmf_E_EOF) { WMF_DEBUG (API,"discarding an EOF error, however."); API->err = wmf_E_None; } } if (ERR (API)) /* Quit now ?? */ { WMF_DEBUG (API,"bailing..."); return (API->err); } wmf_attr_free (API, &attrlist); if (SCAN (API)) wmf_write_end (API); while (P->dc_stack_length) { if (P->dc) { userdata.dc = P->dc; userdata.data = P->dc->userdata; if (FR->udata_free) FR->udata_free (API,&userdata); wmf_free (API,P->dc); } P->dc = dc_stack_pop (API); } if (P->dc) { userdata.dc = P->dc; userdata.data = P->dc->userdata; if (PLAY (API) && FR->udata_free) FR->udata_free (API,&userdata); wmf_free (API,P->dc); } dc_stack_free (API); for (i = 0; i < NUM_OBJECTS(API); i++) { if (objects[i].type == OBJ_BRUSH) { if (objects[i].obj.brush.lbStyle == BS_DIBPATTERN) { if (objects[i].obj.brush.bmp.data && FR->bmp_free) { FR->bmp_free (API,&(objects[i].obj.brush.bmp)); } } } else if (objects[i].type == OBJ_REGION) { wmf_free (API,objects[i].obj.rgn.rects); } else if (objects[i].type == OBJ_FONT) { wmf_free (API,objects[i].obj.font.lfFaceName); } } if (PLAY (API) && FR->device_end) FR->device_end (API); return (API->err); } libwmf-0.2.8.4/src/recorder.c0000644000077100007710000012630710271767772015274 0ustar fjffjf00000000000000/* libwmf (recorder.c): library for wmf conversion Copyright (C) 2002 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include "wmfdefs.h" #include "metadefs.h" #include "libwmf/canvas.h" #include "recorder.h" static void s_convert_color (wmfRGB * color, unsigned short * rg, unsigned short * b) { if (color && rg && b) { *rg = ((unsigned short) (color->g) << 8) | (unsigned short) (color->r); *b = (unsigned short) (color->b); } } static void s_rbox_set (wmfAPI * API, wmfConstruct * construct, wmfRecordBox * rbox, unsigned long n) { if (n >= construct->rec_count) { WMF_ERROR (API, "Hmm. Record out of range..."); API->err = wmf_E_Glitch; return; } rbox->start = construct->buffer + construct->rec_offset[n ]; rbox->end = construct->buffer + construct->rec_offset[n+1]; rbox->ptr = rbox->start; } static void s_rbox_skip_w (wmfAPI * API, wmfRecordBox * rbox) { if (rbox->end - rbox->ptr < 2) { WMF_ERROR (API, "Hmm. Record out of range..."); API->err = wmf_E_Glitch; return; } rbox->ptr++; rbox->ptr++; } static void s_rbox_ushort (wmfAPI * API, wmfRecordBox * rbox, unsigned long us) { if (rbox->end - rbox->ptr < 2) { WMF_ERROR (API, "Hmm. Record out of range..."); API->err = wmf_E_Glitch; return; } *rbox->ptr++ = (unsigned char) ( us & 0xff); *rbox->ptr++ = (unsigned char) ((us >> 8) & 0xff); } static void s_rbox_ulong (wmfAPI * API, wmfRecordBox * rbox, unsigned long ul) { if (rbox->end - rbox->ptr < 4) { WMF_ERROR (API, "Hmm. Record out of range..."); API->err = wmf_E_Glitch; return; } *rbox->ptr++ = (unsigned char) ( ul & 0xff); *rbox->ptr++ = (unsigned char) ((ul >> 8) & 0xff); *rbox->ptr++ = (unsigned char) ((ul >> 16) & 0xff); *rbox->ptr++ = (unsigned char) ((ul >> 24) & 0xff); } static void s_update_header (wmfAPI * API, wmfConstruct * construct) { wmfRecordBox rbox; s_rbox_set (API, construct, &rbox, 1); s_rbox_skip_w (API, &rbox); s_rbox_skip_w (API, &rbox); s_rbox_skip_w (API, &rbox); s_rbox_ulong (API, &rbox, construct->length / 2); s_rbox_ushort (API, &rbox, construct->NoObjects); s_rbox_ulong (API, &rbox, construct->MaxRecord); } static void s_append_record (wmfAPI * API, wmfConstruct * construct, wmfRecordBox * rbox, unsigned long length) { unsigned char * uc_more = 0; unsigned long * ul_more = 0; unsigned long bytes; if (length & 1) { WMF_DEBUG (API, "odd length? records should have even length. adding 1..."); length++; } if (construct->length + length > construct->max) { bytes = (construct->length + length) - construct->max; if (bytes & 0x7f) { bytes |= 0x7f; bytes++; } uc_more = (unsigned char *) wmf_realloc (API, construct->buffer, construct->max + bytes); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return; } construct->buffer = uc_more; construct->max += bytes; } if (construct->rec_count == construct->rec_max) { bytes = (construct->rec_max + 1 + 16) * sizeof (unsigned long); ul_more = (unsigned long *) wmf_realloc (API, construct->rec_offset, bytes); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return; } construct->rec_offset = ul_more; construct->rec_max += 16; } if (construct->MaxRecord < (length / 2)) construct->MaxRecord = length / 2; construct->length += length; construct->rec_count++; construct->rec_offset[construct->rec_count] = construct->length; s_rbox_set (API, construct, rbox, construct->rec_count-1); } /** * Get a handle for creating a new metafile. * * @param API the API handle * @param width width in 'dots' (a.k.a. 'twips'?) * @param height height in 'dots' (a.k.a. 'twips'?) * @param dpi dots per inch: one of 1440, 2880, 720, or 360 * * In case you want to use simple drawing routines to create your own metafile; all * drawing commands expect a wmfCanvas handle as well as the API handle. * * @return Returns 0 on failure. */ wmfCanvas * wmf_canvas (wmfAPI * API, unsigned short width, unsigned short height, unsigned short dpi) { unsigned short checksum; wmfRecordBox rbox; wmfConstruct * construct = 0; if ((width & 0x7fff) != width) { WMF_ERROR (API, "Image too large! (width > 0x7fff)"); return 0; } if ((height & 0x7fff) != height) { WMF_ERROR (API, "Image too large! (height > 0x7fff)"); return 0; } if ((dpi != 1440) && (dpi != 2880) && (dpi != 720) && (dpi != 360)) { WMF_ERROR (API, "invalid dpi! expected one of 1440, 2880, 720, or 360"); return 0; } construct = (wmfConstruct *) wmf_malloc (API, sizeof (wmfConstruct)); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return 0; } construct->buffer = (unsigned char *) wmf_malloc (API, 128); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); wmf_free (API, construct); return 0; } construct->length = 2 * 11; /* size in bytes of placeable meta header */ construct->max = 128; construct->rec_offset = (unsigned long *) wmf_malloc (API, 16); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); wmf_free (API, construct->buffer); wmf_free (API, construct); return 0; } construct->rec_offset[0] = 0; construct->rec_count = 1; construct->rec_max = 15; construct->rec_offset[construct->rec_count] = construct->length; construct->width = width; construct->height = height; construct->dpi = dpi; s_rbox_set (API, construct, &rbox, 0); checksum = 0xcdd7 ^ 0x9ac6 ^ width ^ height ^ dpi; /* I think... */ s_rbox_ulong (API, &rbox, 0x9ac6cdd7); /* Key */ s_rbox_ushort (API, &rbox, 0 ); /* Handle */ s_rbox_ushort (API, &rbox, 0 ); /* Left */ s_rbox_ushort (API, &rbox, 0 ); /* Top */ s_rbox_ushort (API, &rbox, width ); /* Right */ s_rbox_ushort (API, &rbox, height ); /* Bottom */ s_rbox_ushort (API, &rbox, dpi ); /* Inch */ s_rbox_ulong (API, &rbox, 0 ); /* Reserved */ s_rbox_ushort (API, &rbox, checksum ); /* Checksum */ s_append_record (API, construct, &rbox, 2 * 9); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); wmf_free (API, construct->rec_offset); wmf_free (API, construct->buffer); wmf_free (API, construct); return 0; } s_rbox_ushort (API, &rbox, 2); /* Type */ s_rbox_ushort (API, &rbox, 9); /* HeaderSize */ s_rbox_ushort (API, &rbox, 0x0300); /* Version */ s_rbox_ulong (API, &rbox, 0); /* Size */ s_rbox_ushort (API, &rbox, 0); /* NoObjects */ s_rbox_ulong (API, &rbox, 0); /* MaxRecord */ s_rbox_ushort (API, &rbox, 0); /* NoParameters */ construct->NoObjects = 3; construct->MaxRecord = 11; s_update_header (API, construct); construct->new_pen.style = PS_NULL; construct->new_pen.width = 1; construct->new_pen.color = wmf_black; construct->pen = construct->new_pen; construct->new_brush.style = BS_NULL; construct->new_brush.hatch = HS_HORIZONTAL; construct->new_brush.color = wmf_black; construct->brush = construct->new_brush; strcpy (construct->new_font.name, "Times New Roman"); construct->new_font.height = 100; /* size (in tenths of points) */ construct->new_font.width = 0; /* Do we care? */ construct->new_font.escapement = 0; /* Do we care? */ construct->new_font.orientation = 0; /* text rotation (in tenths of a degree ??) */ construct->new_font.weight = 400; /* bold, normal, light, etc. */ construct->new_font.italic = 0; /* italic, oblique, etc. */ construct->new_font.underline = 0; /* underline */ construct->new_font.strikeout = 0; /* strike-through */ construct->new_font.charset = 0; /* character set, encoding,... */ construct->new_font.out = 0; /* font outlining */ construct->new_font.clip = 0; /* Do we care? */ construct->new_font.quality = 0; /* Do we care? */ construct->new_font.pitch = 16; /* italics angle ?? */ construct->font = construct->new_font; s_create_pen (API, construct); /* order of object creation is important! */ s_create_brush (API, construct); s_create_font (API, construct); s_select (API, construct, 0); s_select (API, construct, 1); s_select (API, construct, 2); construct->polyfill = ALTERNATE; s_set_polyfill (API, construct); construct->background = TRANSPARENT; s_set_background (API, construct); construct->bgcolor = wmf_white; s_set_bgcolor (API, construct); construct->textcolor = wmf_black; s_set_textcolor (API, construct); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); wmf_free (API, construct->rec_offset); wmf_free (API, construct->buffer); wmf_free (API, construct); return 0; } return (wmfCanvas *) construct; } /** * Last command when creating a new metafile; returns the metafile you have drawn. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param buffer metafile buffer return * @param length metafile length return * * Cleans up memory etc. associated with the canvas process, except of course for the * new metafile itself which gets returned. * * @return Returns 0 on failure, *buffer on success */ unsigned char * wmf_canvas_done (wmfAPI * API, wmfCanvas * canvas, unsigned char ** buffer, unsigned long * length) { wmfConstruct * construct = (wmfConstruct *) canvas; if ((construct == 0) || (buffer == 0) || (length == 0)) return 0; /* TODO: s_delete (API, construct, 2); */ s_delete (API, construct, 1); s_delete (API, construct, 0); s_update_header (API, construct); /* TODO */ *buffer = construct->buffer; *length = construct->length; wmf_free (API, construct->rec_offset); wmf_free (API, construct); return *buffer; } /** * Change current pen style. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param line one of PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT, PS_NULL, PS_INSIDEFRAME, PS_USERSTYLE, or PS_ALTERNATE * @param endcap one of PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE, or PS_ENDCAP_FLAT * @param join one of PS_JOIN_ROUND, PS_JOIN_BEVEL, or PS_JOIN_MITER * @param width stroke width * @param color stroke color * * Pen settings to be used with next drawing command. * * @return Returns 0 on success. */ int wmf_canvas_set_pen (wmfAPI * API, wmfCanvas * canvas, unsigned short line, unsigned short endcap, unsigned short join, unsigned short width, wmfRGB color) { wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; line &= 0x0f; if (line > 8) { WMF_DEBUG (API, "Attempt to set unsupported line style."); line = 0; } endcap &= 0x0f00; if (endcap > 0x0200) { WMF_DEBUG (API, "Attempt to set unsupported endcap style."); endcap = 0; } join &= 0xf000; if (endcap > 0x2000) { WMF_DEBUG (API, "Attempt to set unsupported join style."); join = 0; } construct->new_pen.style = line | endcap | join; if (width == 0) { WMF_DEBUG (API, "Pen width is 0? Setting to 1."); width = 1; } construct->new_pen.width = width; construct->new_pen.color = color; return 0; } /** * Change current brush style. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param style one of BS_SOLID, BS_NULL, or BS_HATCHED * @param hatch one of HS_HORIZONTAL, HS_VERTICAL, HS_FDIAGONAL, HS_BDIAGONAL, HS_CROSS or HS_DIAGCROSS * @param color stroke color * * Brush settings to be used with next drawing command. * * @return Returns 0 on success. */ int wmf_canvas_set_brush (wmfAPI * API, wmfCanvas * canvas, unsigned short style, unsigned short hatch, wmfRGB color) { wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; if (style > 2) { WMF_DEBUG (API, "Attempt to set unsupported brush style."); style = 0; } construct->new_brush.style = style; if (hatch > 5) { WMF_DEBUG (API, "Attempt to set unsupported hatch brush."); hatch = 0; } construct->new_brush.hatch = hatch; construct->new_brush.color = color; return 0; } /** * Change current font. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param name font name * @param size font height (in twips) * @param orient text rotation in tenths of degrees * @param weight 400 for normal text, 700 for bold * @param italic 0 for normal text, 1 for oblique/italic * @param strike 0 for normal text, 1 for strike-through * @param uscore 0 for normal text, 1 for underscore (I think; and 2 for double uscore ??) * @param encode encoding; 0 for most fonts, 2 for symbol fonts; presumably others... * @param pitch italic angle; usually 0 (webdings), 16 (times), 32 (arial) or 48 (courier) * * Font settings to be used with next drawing command. * * @return Returns 0 on success. */ int wmf_canvas_set_font (wmfAPI * API, wmfCanvas * canvas, const char * name, unsigned short size, unsigned short orient, unsigned short weight, unsigned short italic, unsigned short strike, unsigned short uscore, unsigned short encode, unsigned short pitch) { int length; wmfConstruct * construct = (wmfConstruct *) canvas; if ((construct == 0) || (name == 0)) return -1; if (orient >= 3600) { WMF_DEBUG (API, "orientation exceeds 360 degrees; reducing to 0."); orient = 0; } if (italic > 1) { WMF_DEBUG (API, "italic set unusually high; reducing to 1."); italic = 1; } if (strike > 1) { WMF_DEBUG (API, "strike-through set unusually high; reducing to 1."); strike = 1; } if (uscore > 2) { WMF_DEBUG (API, "underscore set unusually high; reducing to 2."); uscore = 2; } if (pitch > 48) { WMF_DEBUG (API, "pitch set unusually high; reducing to 48."); pitch = 48; } length = strlen (name); if (length >= CanvasFontBufferSize) { WMF_DEBUG (API, "font name is too long; reducing."); length = CanvasFontBufferSize - 1; } memset (construct->new_font.name, 0, CanvasFontBufferSize); strncpy (construct->new_font.name, name, length); construct->new_font.name[length] = 0; construct->new_font.height = size; construct->new_font.orientation = orient; construct->new_font.weight = weight; construct->new_font.italic = italic; construct->new_font.underline = uscore; construct->new_font.strikeout = strike; construct->new_font.charset = encode; construct->new_font.pitch = pitch; return 0; } static int s_setnew_pen (wmfAPI * API, wmfConstruct * construct) { if (ERR (API)) return -1; if (memcmp (&(construct->pen), &(construct->new_pen), sizeof (wmfCanvasPen)) == 0) { return -1; } construct->pen = construct->new_pen; if (s_delete (API, construct, 0) == 0) if (s_create_pen (API, construct) == 0) if (s_select (API, construct, 0) == 0) return 0; return -1; } static int s_setnew_brush (wmfAPI * API, wmfConstruct * construct) { if (ERR (API)) return -1; if (memcmp (&(construct->brush), &(construct->new_brush), sizeof (wmfCanvasBrush)) == 0) { return -1; } construct->brush = construct->new_brush; if (s_delete (API, construct, 1) == 0) if (s_create_brush (API, construct) == 0) if (s_select (API, construct, 1) == 0) return 0; return -1; } static int s_setnew_font (wmfAPI * API, wmfConstruct * construct) { if (ERR (API)) return -1; if (memcmp (&(construct->font), &(construct->new_font), sizeof (wmfCanvasFont)) == 0) { return -1; } construct->font = construct->new_font; if (s_delete (API, construct, 2) == 0) if (s_create_font (API, construct) == 0) if (s_select (API, construct, 2) == 0) return 0; return -1; } static int s_create_pen (wmfAPI * API, wmfConstruct * construct) { unsigned long Size = 3 + 5; unsigned short rg; unsigned short b; wmfRecordBox rbox; if (ERR (API)) return -1; s_convert_color (&(construct->pen.color), &rg, &b); s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_CREATEPENINDIRECT); s_rbox_ushort (API, &rbox, construct->pen.style); s_rbox_ushort (API, &rbox, construct->pen.width); s_rbox_ushort (API, &rbox, construct->pen.width); /* this should be ignored */ s_rbox_ushort (API, &rbox, rg); s_rbox_ushort (API, &rbox, b); return 0; } static int s_create_brush (wmfAPI * API, wmfConstruct * construct) { unsigned long Size = 3 + 4; unsigned short rg; unsigned short b; wmfRecordBox rbox; if (ERR (API)) return -1; s_convert_color (&(construct->brush.color), &rg, &b); s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_CREATEBRUSHINDIRECT); s_rbox_ushort (API, &rbox, construct->brush.style); s_rbox_ushort (API, &rbox, rg); s_rbox_ushort (API, &rbox, b); s_rbox_ushort (API, &rbox, construct->brush.hatch); /* ?? something missing? */ return 0; } static int s_create_font (wmfAPI * API, wmfConstruct * construct) { short size; unsigned short i; unsigned short cc; unsigned short length = (strlen (construct->font.name) + 1) / 2; unsigned long Size = 3 + 9 + length; wmfRecordBox rbox; if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_CREATEFONTINDIRECT); size = - (short) (construct->font.height); s_rbox_ushort (API, &rbox, (unsigned short) size); s_rbox_ushort (API, &rbox, construct->font.width); s_rbox_ushort (API, &rbox, construct->font.escapement); s_rbox_ushort (API, &rbox, construct->font.orientation); s_rbox_ushort (API, &rbox, construct->font.weight); s_rbox_ushort (API, &rbox, construct->font.italic | (construct->font.underline << 8)); s_rbox_ushort (API, &rbox, construct->font.strikeout | (construct->font.charset << 8)); s_rbox_ushort (API, &rbox, construct->font.out | (construct->font.clip << 8)); s_rbox_ushort (API, &rbox, construct->font.quality | (construct->font.pitch << 8)); for (i = 0; i < length; i++) { cc = (unsigned short) construct->font.name[2*i ]; cc |= ((unsigned short) construct->font.name[2*i+1]) << 8; s_rbox_ushort (API, &rbox, cc); } return 0; } static int s_delete (wmfAPI * API, wmfConstruct * construct, unsigned short oid) { unsigned long Size = 3 + 1; wmfRecordBox rbox; if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_DELETEOBJECT); s_rbox_ushort (API, &rbox, oid); return 0; } static int s_select (wmfAPI * API, wmfConstruct * construct, unsigned short oid) { unsigned long Size = 3 + 1; wmfRecordBox rbox; if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_SELECTOBJECT); s_rbox_ushort (API, &rbox, oid); return 0; } /** * Set polygon fill mode. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param mode one of ALTERNATE or WINDING * * Set polygon fill mode. * * @return Returns 0 on success. */ int wmf_canvas_set_polyfill (wmfAPI * API, wmfCanvas * canvas, unsigned short mode) { wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; if (ERR (API)) return -1; if ((mode != ALTERNATE) && (mode != WINDING)) { WMF_ERROR (API, "Unexpected polygon fill mode! Expected one of ALTERNATE or WINDING"); return 0; } if (construct->polyfill == mode) return 0; construct->polyfill = mode; return s_set_polyfill (API, construct); } static int s_set_polyfill (wmfAPI * API, wmfConstruct * construct) { unsigned long Size = 3 + 1; wmfRecordBox rbox; if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_SETPOLYFILLMODE); s_rbox_ushort (API, &rbox, construct->polyfill); return 0; } /** * Set background mode. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param mode one of TRANSPARENT or OPAQUE * * Set background mode. * * @return Returns 0 on success. */ int wmf_canvas_set_background (wmfAPI * API, wmfCanvas * canvas, unsigned short mode) { wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; if (ERR (API)) return -1; if ((mode != TRANSPARENT) && (mode != OPAQUE)) { WMF_ERROR (API, "Unexpected background mode! Expected one of TRANSPARENT or OPAQUE"); return -1; } if (construct->background == mode) return 0; construct->background = mode; return s_set_background (API, construct); } static int s_set_background (wmfAPI * API, wmfConstruct * construct) { unsigned long Size = 3 + 1; wmfRecordBox rbox; if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_SETBKMODE); s_rbox_ushort (API, &rbox, construct->background); return 0; } /** * Set background color. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param color background color * * Set background color. * * @return Returns 0 on success. */ int wmf_canvas_set_bgcolor (wmfAPI * API, wmfCanvas * canvas, wmfRGB color) { wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; if (ERR (API)) return -1; if ((construct->bgcolor.r == color.r) && (construct->bgcolor.g == color.g) && (construct->bgcolor.b == color.b)) return 0; construct->bgcolor = color; return s_set_bgcolor (API, construct); } static int s_set_bgcolor (wmfAPI * API, wmfConstruct * construct) { unsigned long Size = 3 + 2; unsigned short rg; unsigned short b; wmfRecordBox rbox; if (ERR (API)) return -1; s_convert_color (&(construct->bgcolor), &rg, &b); s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_SETBKCOLOR); s_rbox_ushort (API, &rbox, rg); s_rbox_ushort (API, &rbox, b); return 0; } /** * Set text color. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param color text color * * Set text color. * * @return Returns 0 on success. */ int wmf_canvas_set_textcolor (wmfAPI * API, wmfCanvas * canvas, wmfRGB color) { wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; if (ERR (API)) return -1; if ((construct->textcolor.r == color.r) && (construct->textcolor.g == color.g) && (construct->textcolor.b == color.b)) return 0; construct->textcolor = color; return s_set_textcolor (API, construct); } static int s_set_textcolor (wmfAPI * API, wmfConstruct * construct) { unsigned long Size = 3 + 2; unsigned short rg; unsigned short b; wmfRecordBox rbox; if (ERR (API)) return -1; s_convert_color (&(construct->textcolor), &rg, &b); s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_SETTEXTCOLOR); s_rbox_ushort (API, &rbox, rg); s_rbox_ushort (API, &rbox, b); return 0; } /** * Draw a line. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param x1 x-coordinate of start point * @param y1 y-coordinate of start point * @param x2 x-coordinate of end point * @param y2 y-coordinate of end point * * Draw line from (x1,y1) to (x2,y2). * * @return Returns 0 on success. */ int wmf_canvas_line (wmfAPI * API, wmfCanvas * canvas, unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2) { #if 0 unsigned long Size = 3 + 2; wmfRecordBox rbox; #endif wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; if (ERR (API)) return -1; if (((x1 & 0x7fff) != x1) || ((x2 & 0x7fff) != x2)) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); return -1; } if (((y1 & 0x7fff) != y1) || ((y2 & 0x7fff) != y2)) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); return -1; } if (s_moveto (API, construct, x1, y1) == 0) if (s_lineto (API, construct, x2, y2) == 0) return 0; return -1; } static int s_moveto (wmfAPI * API, wmfConstruct * construct, unsigned short x, unsigned short y) { unsigned long Size = 3 + 2; wmfRecordBox rbox; if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_MOVETO); s_rbox_ushort (API, &rbox, y); s_rbox_ushort (API, &rbox, x); return 0; } static int s_lineto (wmfAPI * API, wmfConstruct * construct, unsigned short x, unsigned short y) { unsigned long Size = 3 + 2; wmfRecordBox rbox; s_setnew_pen (API, construct); if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_LINETO); s_rbox_ushort (API, &rbox, y); s_rbox_ushort (API, &rbox, x); return 0; } /** * Draw a rounded rectangle. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param left lower x-coordinate * @param top lower y-coordinate * @param right upper x-coordinate * @param bottom upper y-coordinate * @param rx x-axis of corner ellipse * @param ry y-axis of corner ellipse * * Draw a rounded rectangle. Coordinate origin is at the top-left, y increasing down. * * @return Returns 0 on success. */ int wmf_canvas_roundrect (wmfAPI * API, wmfCanvas * canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom, unsigned short rx, unsigned short ry) { unsigned long Size = 3 + 6; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; s_setnew_pen (API, construct); s_setnew_brush (API, construct); if (ERR (API)) return -1; if (((left & 0x7fff) != left) || ((right & 0x7fff) != right) || ((rx & 0x7fff) != rx)) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); return -1; } if (((top & 0x7fff) != top) || ((bottom & 0x7fff) != bottom) || ((ry & 0x7fff) != ry)) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); return -1; } s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_ROUNDRECT); s_rbox_ushort (API, &rbox, ry); s_rbox_ushort (API, &rbox, rx); s_rbox_ushort (API, &rbox, bottom); s_rbox_ushort (API, &rbox, right); s_rbox_ushort (API, &rbox, top); s_rbox_ushort (API, &rbox, left); return 0; } /** * Draw a rectangle. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param left lower x-coordinate * @param top lower y-coordinate * @param right upper x-coordinate * @param bottom upper y-coordinate * * Draw a rectangle. Coordinate origin is at the top-left, y increasing down. * * @return Returns 0 on success. */ int wmf_canvas_rect (wmfAPI * API, wmfCanvas * canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom) { unsigned long Size = 3 + 4; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; s_setnew_pen (API, construct); s_setnew_brush (API, construct); if (ERR (API)) return -1; if (((left & 0x7fff) != left) || ((right & 0x7fff) != right)) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); return -1; } if (((top & 0x7fff) != top) || ((bottom & 0x7fff) != bottom)) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); return -1; } s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_RECTANGLE); s_rbox_ushort (API, &rbox, bottom); s_rbox_ushort (API, &rbox, right); s_rbox_ushort (API, &rbox, top); s_rbox_ushort (API, &rbox, left); return 0; } /** * Draw an ellipse. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param left lower x-coordinate * @param top lower y-coordinate * @param right upper x-coordinate * @param bottom upper y-coordinate * * Draw an ellipse in the given bounding box. Coordinate origin is at the top-left, * y increasing down. * * @return Returns 0 on success. */ int wmf_canvas_ellipse (wmfAPI * API, wmfCanvas * canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom) { unsigned long Size = 3 + 4; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; s_setnew_pen (API, construct); s_setnew_brush (API, construct); if (ERR (API)) return -1; if (((left & 0x7fff) != left) || ((right & 0x7fff) != right)) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); return -1; } if (((top & 0x7fff) != top) || ((bottom & 0x7fff) != bottom)) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); return -1; } s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_ELLIPSE); s_rbox_ushort (API, &rbox, bottom); s_rbox_ushort (API, &rbox, right); s_rbox_ushort (API, &rbox, top); s_rbox_ushort (API, &rbox, left); return 0; } /** * Draw an arc, open or fill as chord or pie. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param left lower x-coordinate * @param top lower y-coordinate * @param right upper x-coordinate * @param bottom upper y-coordinate * @param x1 x-coordinate of start of arc * @param y1 y-coordinate of start of arc * @param x2 x-coordinate of end of arc * @param y2 y-coordinate of end of arc * @param type arc type (open, chord or pie) * * Draw an arc in the given bounding box, from (x1,y1) to (x2,y2). * Coordinate origin is at the top-left, y increasing down. * * @return Returns 0 on success. */ int wmf_canvas_arc (wmfAPI * API, wmfCanvas * canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom, unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, wmf_canvas_arc_t type) { unsigned long Size = 3 + 8; unsigned short Function; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if (construct == 0) return -1; switch (type) { default: case wmf_CA_open: Function = META_ARC; s_setnew_pen (API, construct); break; case wmf_CA_chord: Function = META_CHORD; s_setnew_pen (API, construct); s_setnew_brush (API, construct); break; case wmf_CA_pie: Function = META_PIE; s_setnew_pen (API, construct); s_setnew_brush (API, construct); break; } if (ERR (API)) return -1; if (((left & 0x7fff) != left ) || ((right & 0x7fff) != right) || ((x1 & 0x7fff) != x1 ) || ((x2 & 0x7fff) != x2 )) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); return -1; } if (((top & 0x7fff) != top ) || ((bottom & 0x7fff) != bottom) || ((y1 & 0x7fff) != y1 ) || ((y2 & 0x7fff) != y2 )) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); return -1; } s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, Function); s_rbox_ushort (API, &rbox, y1); s_rbox_ushort (API, &rbox, x1); s_rbox_ushort (API, &rbox, y2); s_rbox_ushort (API, &rbox, x2); s_rbox_ushort (API, &rbox, bottom); s_rbox_ushort (API, &rbox, right); s_rbox_ushort (API, &rbox, top); s_rbox_ushort (API, &rbox, left); return 0; } /** * Draw a line connecting a sequence of points. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param x array of N x-coordinates * @param y array of N y-coordinates * @param N number of points on line * * Draw a line connecting a sequence of points. * * @return Returns 0 on success. */ int wmf_canvas_polyline (wmfAPI * API, wmfCanvas * canvas, unsigned short * x, unsigned short * y, unsigned short N) { unsigned long Size = 3 + 1 + 2 * (unsigned long) N; unsigned short i; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if ((construct == 0) || (x == 0) || (y == 0) || (N < 2)) return -1; s_setnew_pen (API, construct); if (ERR (API)) return -1; for (i = 0; i < N; i++) { if ((x[i] & 0x7fff) != x[i]) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); Size = 0; break; } if ((y[i] & 0x7fff) != y[i]) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); Size = 0; break; } } if (Size == 0) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_POLYLINE); s_rbox_ushort (API, &rbox, N); for (i = 0; i < N; i++) { s_rbox_ushort (API, &rbox, x[i]); s_rbox_ushort (API, &rbox, y[i]); } return 0; } /** * Draw a polygon. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param x array of N x-coordinates * @param y array of N y-coordinates * @param N number of points of polygon * * Draw a polygon. * * @return Returns 0 on success. */ int wmf_canvas_polygon (wmfAPI * API, wmfCanvas * canvas, unsigned short * x, unsigned short * y, unsigned short N) { unsigned long Size = 3 + 1 + 2 * (unsigned long) N; unsigned short i; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if ((construct == 0) || (x == 0) || (y == 0) || (N < 3)) return -1; s_setnew_pen (API, construct); s_setnew_brush (API, construct); if (ERR (API)) return -1; for (i = 0; i < N; i++) { if ((x[i] & 0x7fff) != x[i]) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); Size = 0; break; } if ((y[i] & 0x7fff) != y[i]) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); Size = 0; break; } } if (Size == 0) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_POLYGON); s_rbox_ushort (API, &rbox, N); for (i = 0; i < N; i++) { s_rbox_ushort (API, &rbox, x[i]); s_rbox_ushort (API, &rbox, y[i]); } return 0; } /** * Draw a set of polygons. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param count number of polygons [i = 0..count-1] * @param x x[i] is array of N x-coordinates in ith polygon * @param y y[i] is array of N y-coordinates in ith polygon * @param N N[i] is number of points of ith polygon * * Draw a set of polygons. * * @return Returns 0 on success. */ int wmf_canvas_polygons (wmfAPI * API, wmfCanvas * canvas, unsigned short count, unsigned short ** x, unsigned short ** y, unsigned short * N) { unsigned long Size = 3 + 1 + (unsigned long) count; unsigned short i; unsigned short j; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if ((construct == 0) || (x == 0) || (y == 0) || (count == 0)) return -1; for (j = 0; j < count; j++) { if ((x[j] == 0) || (y[j] == 0) || (N[j] < 3)) { Size = 0; break; } Size += 2 * (unsigned long) N[j]; if (Size > 0x7fffffff) { Size = 0; break; } } if (Size == 0) return -1; s_setnew_pen (API, construct); s_setnew_brush (API, construct); if (ERR (API)) return -1; for (j = 0; j < count; j++) for (i = 0; i < N[j]; i++) { if ((x[j][i] & 0x7fff) != x[j][i]) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); Size = 0; break; } if ((y[j][i] & 0x7fff) != y[j][i]) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); Size = 0; break; } } if (Size == 0) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_POLYPOLYGON); s_rbox_ushort (API, &rbox, count); for (j = 0; j < count; j++) s_rbox_ushort (API, &rbox, N[j]); for (j = 0; j < count; j++) for (i = 0; i < N[j]; i++) { s_rbox_ushort (API, &rbox, x[j][i]); s_rbox_ushort (API, &rbox, y[j][i]); } return 0; } /** * Draw text. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param x x-coordinate of string * @param y y-coordinate of string * @param str the text string to be drawn * * Draw text. * * @return Returns 0 on success. */ int wmf_canvas_text (wmfAPI * API, wmfCanvas * canvas, unsigned short x, unsigned short y, const char * str) { unsigned short i; unsigned short length; unsigned short cc; unsigned long Size = 3 + 3; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if ((construct == 0) || (str == 0)) return -1; length = (strlen (str) + 1) / 2; /* TODO: do conversion from UTF-8 to... ?? */ if (length == 0) return 0; Size += length; if ((x & 0x7fff) != x) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); return -1; } if ((y & 0x7fff) != y) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); return -1; } s_setnew_font (API, construct); if (ERR (API)) return -1; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_TEXTOUT); s_rbox_ushort (API, &rbox, length); for (i = 0; i < length; i++) { cc = (unsigned short) str[2*i ]; cc |= ((unsigned short) str[2*i+1]) << 8; s_rbox_ushort (API, &rbox, cc); } s_rbox_ushort (API, &rbox, y); s_rbox_ushort (API, &rbox, x); return 0; } /** * Place a bitmap. * * @param API the API handle * @param canvas the Canvas handle for the metafile you are drawing to * @param x x-coordinate of bitmap * @param y y-coordinate of bitmap * @param width (scaled) width of bitmap * @param height (scaled) height of bitmap * @param buffer buffer containing bitmap * @param length length of buffer * * Place a bitmap. * * @return Returns 0 on success. */ int wmf_canvas_bitmap (wmfAPI * API, wmfCanvas * canvas, unsigned short x, unsigned short y, unsigned short width, unsigned short height, const unsigned char * buffer, unsigned long length) { unsigned short bmp_width; unsigned short bmp_height; unsigned long bmp_size; unsigned long Size = 3 + 10; wmfRecordBox rbox; wmfConstruct * construct = (wmfConstruct *) canvas; if ((construct == 0) || (buffer == 0) || (length == 0)) return -1; if ((x & 0x7fff) != x) { WMF_ERROR (API, "Coordinate out of range! (x > 0x7fff)"); return -1; } if ((y & 0x7fff) != y) { WMF_ERROR (API, "Coordinate out of range! (y > 0x7fff)"); return -1; } if ((bmp_size = s_bmp_query (API, buffer, length, &bmp_width, &bmp_height)) == 0) { WMF_ERROR (API, "Bad bitmap!"); return -1; } if (ERR (API)) return -1; Size += bmp_size; s_append_record (API, construct, &rbox, 2 * Size); if (ERR (API)) { WMF_DEBUG (API, "bailing..."); return -1; } s_rbox_ulong (API, &rbox, Size); s_rbox_ushort (API, &rbox, META_DIBSTRETCHBLT); s_rbox_ulong (API, &rbox, 0); /* ?? */ s_rbox_ushort (API, &rbox, bmp_height); s_rbox_ushort (API, &rbox, bmp_width); s_rbox_ushort (API, &rbox, 0); s_rbox_ushort (API, &rbox, 0); s_rbox_ushort (API, &rbox, height); s_rbox_ushort (API, &rbox, width); s_rbox_ushort (API, &rbox, y); s_rbox_ushort (API, &rbox, x); /* TODO */ return 0; } static unsigned long s_bmp_query (wmfAPI * API, const unsigned char * buffer, unsigned long length, unsigned short * bmp_width, unsigned short * bmp_height) { return 0; } libwmf-0.2.8.4/src/wmfdefs.h0000644000077100007710000000453007505114501015076 0ustar fjffjf00000000000000/* libwmf ("wmfdefs.h"): library for wmf conversion Copyright (C) 2000,2001 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFDEFS_H #define WMFDEFS_H #include "libwmf/fund.h" #include "libwmf/types.h" #include "libwmf/api.h" #include "libwmf/defs.h" #include "libwmf/ipa.h" #include "libwmf/font.h" #include "libwmf/color.h" #include "libwmf/macro.h" #ifdef LIBWMF_INCLUDE_TRIO_H #include "extra/trio/trio.h" #endif #define WMF_BMP_OPAQUE 0xff /* I think, or should this be zero ?? */ /* API flags: flags to lie in range (1<<20) to (1<<31) */ #define API_DEVICE_OPEN (1<<20) #define API_FTLIBRARY_OPEN (1<<21) #define API_FILE_OPEN (1<<22) #define API_ENABLE_EDITING (1<<30) #define API_STANDARD_INTERFACE (1<<31) /* API-independent defs & macros *only* */ #ifdef MAX #undef MAX #endif #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #ifdef MIN #undef MIN #endif #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #ifdef ABS #undef ABS #endif /* ABS */ #define ABS(X) (((X) < 0) ? (-(X)) : (X)) #ifdef ROUND #undef ROUND #endif /* ROUND */ #define ROUND(X) (((X) < 0.0) ? ((X) - 0.5) : ((X) + 0.5)) #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #ifndef PI #define PI 3.14159265358979323846 #endif #ifndef M_2PI #define M_2PI 6.28318530717958647692 #endif #ifndef M_SQRT2 #define M_SQRT2 1.41421356237309504880 #endif #define WMF_U16_U16_to_U32(A,B) ((((U32) (B)) << 16) + (U32) (A)); /* (Simple) API-dependent defs */ #define ERR(API) ((API)->err != wmf_E_None) #define DIAG(API) ((API)->flags & WMF_OPT_DIAGNOSTICS) #endif /* ! WMFDEFS_H */ libwmf-0.2.8.4/src/metadefs.h0000644000077100007710000001301207504572102015232 0ustar fjffjf00000000000000/* libwmf ("metadefs.h"): library for wmf conversion Copyright (C) 2000-2002 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFMETADEFS_H #define WMFMETADEFS_H /* Modes for WmfSetMapMode */ #define MM_TEXT 1 #define MM_LOMETRIC 2 #define MM_HIMETRIC 3 #define MM_LOENGLISH 4 #define MM_HIENGLISH 5 #define MM_TWIPS 6 #define MM_ISOTROPIC 7 #define MM_ANISOTROPIC 8 #define MM_DPI 9 /* meta file api defs */ #define META_SAVEDC 0x001E /*i dont think ive saved everything ?*/ #define META_REALIZEPALETTE 0x0035 /*safely ignored methinks*/ #define META_SETPALENTRIES 0x0037 /*safely ignored methinks*/ #define META_CREATEPALETTE 0x00f7 /*not implemented yet*/ #define META_SETBKMODE 0x0102 /*working on it*/ #define META_SETMAPMODE 0x0103 /*more or less implemented*/ #define META_SETROP2 0x0104 /*maybe it works maybe it doesnt*/ #define META_SETPOLYFILLMODE 0x0106 #define META_SETSTRETCHBLTMODE 0x0107 /*dont know yet*/ #define META_SETTEXTCHAREXTRA 0x0108 /*extra space after each character*/ #define META_RESTOREDC 0x0127 /*i dont think ive restored everything ?*/ #define META_INVERTREGION 0x012A /*invert the select region*/ #define META_PAINTREGION 0x012B /*paint the selected region*/ #define META_SELECTCLIPREGION 0x012C /*set a region to be the clipping region*/ #define META_SELECTOBJECT 0x012D /*select what object to draw with*/ #define META_SETTEXTALIGN 0x012E /*working on it, vertial done for X*/ #define META_DIBCREATEPATTERNBRUSH 0x0142 /*implemented fully i think*/ #define META_DELETEOBJECT 0x01f0 /*delete an object, deleting selected object makes you fall back to the previous selected object ?*/ #define META_SETBKCOLOR 0x0201 #define META_SETTEXTCOLOR 0x0209 /*text color, stored*/ #define META_SETTEXTJUSTIFICATION 0x020A /*amount of extra space to add to each space i believe*/ #define META_SETWINDOWORG 0x020B /*defines the origin of the coordinate system that the wmf functions are against*/ #define META_SETWINDOWEXT 0x020C /*defines the width and height of the coord-system*/ #define META_SETVIEWPORTORG 0x020D #define META_SETVIEWPORTEXT 0x020E /*only makes a difference in those MM_ISOTROPIC and MM_ANISOTROPIC modes*/ #define META_OFFSETWINDOWORG 0x020F /*changes the origin of the logical window*/ #define META_OFFSETVIEWPORTORG 0x0211 /*changes the origin of the device window*/ #define META_LINETO 0x0213 /*fairly obvious, once clipping is engaged*/ #define META_MOVETO 0x0214 /*obvious see code for more*/ #define META_OFFSETCLIPRGN 0x0220 /*move the clipping reg*/ #define META_FILLREGION 0x0228 /*fill the selected region with the selected brush*/ #define META_SETMAPPERFLAGS 0x0231 /*font mapping flag, ignorable methinks*/ #define META_SELECTPALETTE 0x0234 /*safely ignored methinks*/ #define META_CREATEFONTINDIRECT 0x02FB /*gd mapping needs to be done, X one needs to be made robust*/ #define META_CREATEPENINDIRECT 0x02FA /*uncertain*/ #define META_CREATEBRUSHINDIRECT 0x02FC /*undertain*/ #define META_POLYGON 0x0324 /*obvious*/ #define META_POLYLINE 0x0325 /*obvious*/ #define META_SCALEWINDOWEXT 0x0410 /*modify the extent of the window*/ #define META_SCALEVIEWPORTEXT 0x0412 /*modify the extent of the viewport*/ #define META_EXCLUDECLIPRECT 0x0415 /*remove part of a clipping rect*/ #define META_INTERSECTCLIPRECT 0x0416 /*a clipping rectangle, often used for lines*/ #define META_ELLIPSE 0x0418 /*obvious*/ #define META_FLOODFILL 0x0419 /*reasonably obvious*/ #define META_RECTANGLE 0x041B /*obvious*/ #define META_SETPIXEL 0x041F /*obvious*/ #define META_FRAMEREGION 0x0429 /*reasonably obvious*/ #define META_TEXTOUT 0x0521 #define META_POLYPOLYGON 0x0538 /*working*/ #define META_EXTFLOODFILL 0x0548 /*what are filltypes ?*/ #define META_ROUNDRECT 0x061C /*reasonably obvious*/ #define META_PATBLT 0x061D /*more ROP stuff*/ #define META_ESCAPE 0x0626 /*i think i can ignore this one*/ #define META_CREATEREGION 0x06FF /*awkward*/ #define META_ARC 0x0817 /*obvious*/ #define META_PIE 0x081A /*a pie*/ #define META_CHORD 0x0830 /*a chord*/ #define META_DIBBITBLT 0x0940 /*not so sure yet, some common ones working so far*/ #define META_EXTTEXTOUT 0x0a32 /*working on it, basically working for X*/ #define META_DIBSTRETCHBLT 0x0b41 /*working on it*/ #define META_SETDIBTODEV 0x0d33 /*a reasonably complicated mechanism of copying a graphic to the screen*/ #define META_STRETCHDIB 0x0f43 /*working on it*/ /* Regions */ #define ERROR 0 #define NULLREGION 1 #define SIMPLEREGION 2 #define COMPLEXREGION 3 #define RGN_AND 1 #define RGN_OR 2 #define RGN_XOR 3 #define RGN_DIFF 4 #define RGN_COPY 5 #define CLIP_INTERSECT 0x0001 #define CLIP_EXCLUDE 0x0002 #define CLIP_KEEPRGN 0x0004 #endif /* ! WMFMETADEFS_H */ libwmf-0.2.8.4/src/player.h0000644000077100007710000002067107504572130014750 0ustar fjffjf00000000000000/* libwmf ("player.h"): library for wmf conversion Copyright (C) 2000,2001 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFPLAYER_H #define WMFPLAYER_H /* General defs */ typedef struct _wmfL_Coord wmfL_Coord; typedef struct _wmfRegion wmfRegion; typedef struct _wmfObject wmfObject; typedef struct _wmfPlayer_t wmfPlayer_t; typedef struct _wmfRecord wmfRecord; typedef void (*pProcO) (wmfAPI*,wmfRegion*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,float,float); typedef void (*pProcNonO) (wmfAPI*,wmfRegion*,wmfD_Rect*,wmfD_Rect*,float,float); struct _wmfL_Coord { S32 x; S32 y; }; struct _wmfRegion { unsigned int size; unsigned int numRects; U16 type; /* NULL, SIMPLE or COMPLEX */ wmfD_Rect* rects; wmfD_Rect extents; }; struct _wmfObject { int type; union { wmfBrush brush; wmfPen pen; wmfFont font; int palette; wmfRegion rgn; } obj; }; struct _wmfPlayer_t { wmfPen default_pen; wmfBrush default_brush; wmfFont default_font; wmfDC* dc; /* current dc */ int dc_stack_maxlen; int dc_stack_length; wmfDC** dc_stack; wmfObject* objects; wmfRegion visible; /* I don't understand this... what is the purpose of `visible'? */ wmfL_Coord current; /* Current position */ wmfD_Coord D_TL; /* Bounding box from Display perspective */ wmfD_Coord D_BR; wmfD_Coord Viewport_Origin; /* Origin of Viewport */ S32 Viewport_Width; /* Display extents */ S32 Viewport_Height; unsigned char* Parameters; /* meta file parameter values */ unsigned long flags; }; struct _wmfRecord { unsigned long size; unsigned int function; unsigned char* parameter; long position; }; /* In: defaults.h */ static void SetDefaults (wmfAPI*,wmfPen*,wmfBrush*,wmfFont*); /* In: color.h */ static wmfRGB rgb (wmfAPI*,U16,U16); /* In: coord.h */ static wmfL_Coord L_Coord (wmfAPI*,U16,U16); static void D_Rect (wmfAPI*,wmfD_Rect*,U16,U16,U16,U16); static void D_Coord_Register (wmfAPI*,wmfD_Coord,float); static void WmfSetMapMode (wmfAPI*,U16 map_mode); static double PixelWidth (wmfAPI*); static double PixelHeight (wmfAPI*); static wmfL_Coord wmf_L_Coord_translate (wmfAPI*,wmfD_Coord); static wmfD_Coord wmf_D_Coord_translate (wmfAPI*,wmfL_Coord); /* In: region.h */ static wmfD_Rect* rgn_memchk (wmfAPI*,wmfRegion*); static unsigned int REGION_Coalesce (wmfAPI* API,wmfRegion *pReg,unsigned int prevStart,unsigned int curStart); static void REGION_RegionOp (wmfAPI*,wmfRegion*,wmfRegion*,wmfRegion*,pProcO,pProcNonO,pProcNonO); static void REGION_SetExtents (wmfAPI*,wmfRegion*); static void REGION_CopyRegion (wmfAPI*,wmfRegion*,wmfRegion*); static void REGION_UnionRegion (wmfAPI*,wmfRegion*,wmfRegion*,wmfRegion*); static void REGION_UnionO (wmfAPI*,wmfRegion*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,float,float); static void REGION_UnionNonO (wmfAPI*,wmfRegion*,wmfD_Rect*,wmfD_Rect*,float,float); static void REGION_SubtractRegion (wmfAPI*,wmfRegion*,wmfRegion*,wmfRegion*); static void REGION_SubtractO (wmfAPI*,wmfRegion*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,float,float); static void REGION_SubtractNonO1 (wmfAPI*,wmfRegion*,wmfD_Rect*,wmfD_Rect*,float,float); static void REGION_IntersectRegion (wmfAPI*,wmfRegion*,wmfRegion*,wmfRegion*); static void REGION_IntersectO (wmfAPI*,wmfRegion*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,wmfD_Rect*,float,float); static void WmfSetRectRgn (wmfAPI*,wmfRegion*,wmfD_Rect*); static void WmfCombineRgn (wmfAPI*,wmfRegion*,wmfRegion*,wmfRegion*,U16); static void rect_merge (wmfAPI*,wmfRegion*,wmfD_Rect*,float,float); /* In: clip.h */ static void Clipping (wmfAPI*,wmfRegion*,wmfRegion*,wmfD_Rect*,U16); /* In: dc.h */ static wmfDC* dc_copy (wmfAPI*,wmfDC*); static void dc_stack_push (wmfAPI*,wmfDC*); static wmfDC* dc_stack_pop (wmfAPI*); static void dc_stack_free (wmfAPI*); /* In: record.h */ static U16 ParU16 (wmfAPI*,wmfRecord*,unsigned long); static S16 ParS16 (wmfAPI*,wmfRecord*,unsigned long); static S32 ParS32 (wmfAPI*,wmfRecord*,unsigned long); static int PutParU16 (wmfAPI*,wmfRecord*,unsigned long,U16); static wmfRecord OffsetRecord (wmfAPI*,wmfRecord*,unsigned long); /* In: meta.h */ static int meta_mapmode (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_orgext (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_scale (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_moveto (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_flood (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_pixel (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_arc (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_ellipse (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_line (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_lines (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_polygon (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_polygons (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_round (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_rect (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_rgn_brush (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_rgn_paint (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_rgn_create (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_clip_select (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_clip_offset (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_clip_combine (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_dib_draw (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_dib_brush (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_rop_draw (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_dc_set (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_dc_color (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_dc_select (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_dc_save (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_dc_restore (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_text (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_pen_create (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_brush_create (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_font_create (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_palette_create (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_delete (wmfAPI*,wmfRecord*,wmfAttributes*); static int meta_unused (wmfAPI*,wmfRecord*,wmfAttributes*); static void polypoly_construct (wmfAPI*,wmfPolyPoly_t*,wmfPolyLine_t*,U16); static void diagnose_object (wmfAPI*,unsigned int,wmfObject*); /* In: player.c */ static wmf_error_t WmfPlayMetaFile (wmfAPI*); static U16 ParU16 (wmfAPI*,wmfRecord*,unsigned long); static S16 ParS16 (wmfAPI*,wmfRecord*,unsigned long); static S32 ParS32 (wmfAPI*,wmfRecord*,unsigned long); static wmfRecord OffsetRecord (wmfAPI*,wmfRecord*,unsigned long); #define PLAYER_SCANNED (1 << 0) #define PLAYER_PLAY (1 << 1) #define PLAYER_TLBR_D_SET (1 << 2) #define SCAN(API) ((((wmfPlayer_t*)((API)->player_data))->flags & PLAYER_PLAY) == 0) #define PLAY(API) (((wmfPlayer_t*)((API)->player_data))->flags & PLAYER_PLAY) #define PLACEABLE(API) ((API)->File->placeable) #define DPI(API) ((API)->File->pmh->Inch) #define NUM_OBJECTS(API) ((API)->File->wmfheader->NumOfObjects) #define MAX_REC_SIZE(API) ((API)->File->wmfheader->MaxRecordSize) #define FILE_SIZE(API) ((API)->File->wmfheader->FileSize) #define WMF_BBOX_LEFT(API) ((API)->File->pmh->Left ) #define WMF_BBOX_TOP(API) ((API)->File->pmh->Top ) #define WMF_BBOX_RIGHT(API) ((API)->File->pmh->Right ) #define WMF_BBOX_BOTTOM(API) ((API)->File->pmh->Bottom) #define POINT_TO_INCH(X) ((double) (X) / (double) 72 ) #define INCH_TO_POINT(X) ((double) (X) * (double) 72 ) #define MM_TO_INCH(X) ((double) (X) / (double) 25.4) #define SCAN_DIAGNOSTIC(API,MESG) if (SCAN ((API)) && DIAG ((API))) fputs (MESG,stderr); #endif /* ! WMFPLAYER_H */ libwmf-0.2.8.4/src/recorder.h0000644000077100007710000001014007506344107015252 0ustar fjffjf00000000000000/* libwmf ("recorder.h"): library for wmf conversion Copyright (C) 2002 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFRECORDER_H #define WMFRECORDER_H typedef struct _wmfCanvasPen wmfCanvasPen; typedef struct _wmfCanvasBrush wmfCanvasBrush; typedef struct _wmfCanvasFont wmfCanvasFont; typedef struct _wmfConstruct wmfConstruct; typedef struct _wmfRecordBox wmfRecordBox; struct _wmfCanvasPen { unsigned short style; unsigned short width; wmfRGB color; }; struct _wmfCanvasBrush { unsigned short style; unsigned short hatch; wmfRGB color; }; #ifdef CanvasFontBufferSize #undef CanvasFontBufferSize #endif #define CanvasFontBufferSize 64 struct _wmfCanvasFont { char name[CanvasFontBufferSize]; unsigned short height; unsigned short width; unsigned short escapement; unsigned short orientation; unsigned short weight; unsigned short italic; unsigned short underline; unsigned short strikeout; unsigned short charset; unsigned short out; unsigned short clip; unsigned short quality; unsigned short pitch; }; struct _wmfConstruct { unsigned char * buffer; unsigned long length; unsigned long max; unsigned long * rec_offset; unsigned long rec_count; unsigned long rec_max; unsigned short NoObjects; unsigned long MaxRecord; /* Maximum record size in *words* */ unsigned short width; unsigned short height; unsigned short dpi; wmfCanvasPen pen; wmfCanvasBrush brush; wmfCanvasFont font; wmfCanvasPen new_pen; wmfCanvasBrush new_brush; wmfCanvasFont new_font; unsigned short polyfill; unsigned short background; wmfRGB bgcolor; wmfRGB textcolor; }; struct _wmfRecordBox { unsigned char * start; unsigned char * end; unsigned char * ptr; }; static void s_convert_color (wmfRGB *, unsigned short *, unsigned short *); static void s_rbox_set (wmfAPI *, wmfConstruct *, wmfRecordBox *, unsigned long); static void s_rbox_skip_w (wmfAPI *, wmfRecordBox *); static void s_rbox_ushort (wmfAPI *, wmfRecordBox *, unsigned long); static void s_rbox_ulong (wmfAPI *, wmfRecordBox *, unsigned long); static void s_update_header (wmfAPI *, wmfConstruct *); static void s_append_record (wmfAPI *, wmfConstruct *, wmfRecordBox *, unsigned long); static int s_setnew_pen (wmfAPI *, wmfConstruct *); static int s_setnew_brush (wmfAPI *, wmfConstruct *); static int s_setnew_font (wmfAPI *, wmfConstruct *); static int s_create_pen (wmfAPI *, wmfConstruct *); /* use via s_setnew_pen */ static int s_create_brush (wmfAPI *, wmfConstruct *); /* use via s_setnew_brush */ static int s_create_font (wmfAPI *, wmfConstruct *); /* use via s_setnew_font */ static int s_delete (wmfAPI *, wmfConstruct *, unsigned short); /* use via s_setnew_* */ static int s_select (wmfAPI *, wmfConstruct *, unsigned short); /* use via s_setnew_* */ static int s_set_polyfill (wmfAPI *, wmfConstruct *); static int s_set_background (wmfAPI *, wmfConstruct *); static int s_set_bgcolor (wmfAPI *, wmfConstruct *); static int s_set_textcolor (wmfAPI *, wmfConstruct *); static int s_moveto (wmfAPI *, wmfConstruct *, unsigned short, unsigned short); static int s_lineto (wmfAPI *, wmfConstruct *, unsigned short, unsigned short); static unsigned long s_bmp_query (wmfAPI *, const unsigned char *, unsigned long, unsigned short *, unsigned short *); #endif /* ! WMFRECORDER_H */ libwmf-0.2.8.4/src/api.h0000644000077100007710000000232407367010430014215 0ustar fjffjf00000000000000/* libwmf ("api.h"): library for wmf conversion Copyright (C) 2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFAPI_API_H #define WMFAPI_API_H typedef struct _wmfMemoryManager wmfMemoryManager; struct _wmfMemoryManager { U32 count; U32 max; void** list; void* context; void* (*malloc) (void* context,size_t size); void* (*realloc) (void* context,void* mem,size_t size); void (*free) (void* context,void* mem); }; #endif /* ! WMFAPI_API_H */ libwmf-0.2.8.4/src/bbuf.h0000644000077100007710000000232507367010430014363 0ustar fjffjf00000000000000/* libwmf ("bbuf.h"): library for wmf conversion Copyright (C) 2000,2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFBBUF_H #define WMFBBUF_H #include typedef struct _wmfBBufFileInfo wmfBBufFileInfo; typedef struct _wmfBBufMemInfo wmfBBufMemInfo; struct _wmfBBufFileInfo { FILE* file; }; struct _wmfBBufMemInfo { unsigned char* mem; unsigned char* ptr; long pos; /* redundant, but convenient ?? */ long length; }; #endif /* ! WMFBBUF_H */ libwmf-0.2.8.4/src/font.h0000644000077100007710000001207307760730762014432 0ustar fjffjf00000000000000/* libwmf ("font.h"): library for wmf conversion Copyright (C) 2000,2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMF_FONT_H #define WMF_FONT_H #include #include FT_FREETYPE_H #include FT_GLYPH_H static void ipa_font_add_wmf (wmfAPI*,wmfFontMap*); static void ipa_font_add_sub (wmfAPI*,wmfMapping*); static void ipa_font_add_ps (wmfAPI*,wmfMapping*); static void ipa_font_add_cache (wmfAPI*,wmfFT_CacheEntry*); static void ipa_font_add_api (wmfAPI*,char*); static float ipa_char_position (wmfAPI*,wmfFont*,char*,char*); static wmfXML_FontInfo* ipa_font_sys_map (wmfAPI*,wmfFont*); static FT_Face ipa_font_sys_face (wmfAPI*,wmfFont*,wmfXML_FontInfo*); #ifdef HAVE_EXPAT static void exml_start (void*,const char*,const char**); static void exmlfontmap_read (wmfAPI*,wmfXML_FontData*,char*); typedef struct _EXML_FontData EXML_FontData; struct _EXML_FontData { wmfAPI* API; wmfXML_FontData* FD; }; #endif /* HAVE_EXPAT */ #ifdef HAVE_LIBXML2 static void xml2_start (void*,const char*,const char**); static void xml2fontmap_read (wmfAPI*,wmfXML_FontData*,char*); typedef struct _XML2_FontData XML2_FontData; struct _XML2_FontData { wmfAPI* API; wmfXML_FontData* FD; }; #endif /* HAVE_LIBXML2 */ static void ipa_font_gs_file (wmfAPI* API,wmfGS_FontData* FD,char* file); static void ipa_font_gs_add (wmfAPI* API,wmfGS_FontData* FD,char* name,char* alias); static char* ipa_font_gs_alias (wmfAPI* API,wmfGS_FontData* FD,char* name); static char* ipa_font_gs_readline (wmfAPI* API,FILE* in); static wmfGS_FontInfo* ipa_font_gs_map (wmfAPI* API,wmfFont* font); static FT_Face ipa_font_gs_face (wmfAPI* API,wmfFont* font,wmfGS_FontInfo* FI); static FT_Face ipa_font_face (wmfAPI* API,wmfFont* font,char* ps_name); static FT_Face ipa_font_face_open (wmfAPI* API,char* ps_name,char* glyphs,char* metrics); static FT_Face ipa_font_face_cached (wmfAPI* API,wmfFont* font,char* ps_name); static char* ipa_font_path_find (wmfAPI* API,char* file_name); static char* ipa_font_std (wmfAPI* API,wmfFont* font); /* postscript (standard 13) font name mapping to type 1 font file */ static wmfMapping PSFontMap[13] = { { "Courier", "n022003l.pfb", ft_encoding_adobe_standard }, { "Courier-Oblique", "n022023l.pfb", ft_encoding_adobe_standard }, { "Courier-Bold", "n022004l.pfb", ft_encoding_adobe_standard }, { "Courier-BoldOblique", "n022024l.pfb", ft_encoding_adobe_standard }, { "Helvetica", "n019003l.pfb", ft_encoding_adobe_standard }, { "Helvetica-Oblique", "n019023l.pfb", ft_encoding_adobe_standard }, { "Helvetica-Bold", "n019004l.pfb", ft_encoding_adobe_standard }, { "Helvetica-BoldOblique","n019024l.pfb", ft_encoding_adobe_standard }, { "Times-Roman", "n021003l.pfb", ft_encoding_adobe_standard }, { "Times-Italic", "n021023l.pfb", ft_encoding_adobe_standard }, { "Times-Bold", "n021004l.pfb", ft_encoding_adobe_standard }, { "Times-BoldItalic", "n021024l.pfb", ft_encoding_adobe_standard }, { "Symbol", "s050000l.pfb", ft_encoding_adobe_custom }}; /* exact WMF font name to postscript (standard 13) equivalent... * well, yeah, I know. :-( */ static wmfFontMap WMFFontMap[] = { { "Courier", "Courier", "Courier-Oblique", "Courier-Bold", "Courier-BoldOblique" }, { "Helvetica", "Helvetica", "Helvetica-Oblique", "Helvetica-Bold", "Helvetica-BoldOblique" }, { "Modern", "Courier", "Courier-Oblique", "Courier-Bold", "Courier-BoldOblique" }, { "Monotype Corsiva", "Courier", "Courier-Oblique", "Courier-Bold", "Courier-BoldOblique" }, { "News Gothic", "Helvetica", "Helvetica-Oblique", "Helvetica-Bold", "Helvetica-BoldOblique" }, { "Symbol", "Symbol", "Symbol", "Symbol", "Symbol" }, { "System", "Courier", "Courier-Oblique", "Courier-Bold", "Courier-BoldOblique" }, { "Times", "Times-Roman", "Times-Italic", "Times-Bold", "Times-BoldItalic" }}; /* Sub-string match if not in the above list; */ static wmfMapping SubFontMap[] = { { "Arial", "Helvetica" }, { "Courier", "Courier" }, { "Fixed", "Courier" }, { "Helvetica", "Helvetica" }, { "Sans", "Helvetica" }, { "Sym", "Symbol" }, { "Terminal", "Courier" }, { "Times", "Times" }, { "Wingdings", "Symbol" }}; /* If all else fails, assume Times */ static char* DefaultFontMapping = "Times"; #endif /* ! WMF_FONT_H */ libwmf-0.2.8.4/src/stream.h0000644000077100007710000000250007367010430014733 0ustar fjffjf00000000000000/* libwmf ("stream.h"): library for wmf conversion Copyright (C) 2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFAPI_STREAM_H #define WMFAPI_STREAM_H typedef struct _wmfDefaultZtream wmfDefaultZtream; typedef struct _wmfDefaultStream wmfDefaultStream; struct _wmfDefaultZtream { wmfAPI* API; gzFile out; z_off_t offset; unsigned long max; unsigned long len; char* buf; char* ptr; }; struct _wmfDefaultStream { wmfAPI* API; FILE* out; long offset; unsigned long max; unsigned long len; char* buf; char* ptr; }; #endif /* ! WMFAPI_STREAM_H */ libwmf-0.2.8.4/src/xml.h0000644000077100007710000000234507500357734014261 0ustar fjffjf00000000000000/* libwmf ("xml.h"): library for wmf conversion Copyright (C) 2000,2001 Francis James Franklin The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFXML_H #define WMFXML_H typedef struct _wmfXML_InputData wmfXML_InputData; struct _wmfXML_InputData { wmfAPI * API; char * cd_buffer; char * cd_bufptr; unsigned long cd_length; unsigned long cd_max; unsigned char * mem_buffer; unsigned char * mem_bufptr; unsigned long mem_length; unsigned long mem_max; int wmfxml; }; #endif /* ! WMFXML_H */ libwmf-0.2.8.4/src/extra/0000755000077100007710000000000010272000331014401 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/extra/Makefile.am0000644000077100007710000000002207307634746016463 0ustar fjffjf00000000000000SUBDIRS = trio gd libwmf-0.2.8.4/src/extra/Makefile.in0000664000077100007710000003655110272000331016462 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/extra DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = trio gd all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/extra/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/extra/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-libtool \ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/src/extra/trio/0000755000077100007710000000000010272000332015357 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/extra/trio/Makefile.am0000644000077100007710000000047107323023213017423 0ustar fjffjf00000000000000CFLAGS = @CFLAGS@ @WMF_CFLAGS@ LDFLAGS = @LDFLAGS@ DEFS = @DEFS@ @WMF_DEFS@ INCLUDES = -I$(top_builddir) -I$(srcdir) if LIBWMF_OPT_TRIO LIBTRIO = libtrio.la else LIBTRIO = endif noinst_LTLIBRARIES = $(LIBTRIO) libtrio_la_SOURCES = trio.c strio.c libtrio_la_LDFLAGS = EXTRA_DIST = trio.h triop.h strio.h libwmf-0.2.8.4/src/extra/trio/Makefile.in0000664000077100007710000003566110272000332017441 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ SOURCES = $(libtrio_la_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/extra/trio DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libtrio_la_LIBADD = am_libtrio_la_OBJECTS = trio.lo strio.lo libtrio_la_OBJECTS = $(am_libtrio_la_OBJECTS) @LIBWMF_OPT_TRIO_TRUE@am_libtrio_la_rpath = DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libtrio_la_SOURCES) DIST_SOURCES = $(libtrio_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @WMF_CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ @WMF_DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = -I$(top_builddir) -I$(srcdir) @LIBWMF_OPT_TRIO_FALSE@LIBTRIO = @LIBWMF_OPT_TRIO_TRUE@LIBTRIO = libtrio.la noinst_LTLIBRARIES = $(LIBTRIO) libtrio_la_SOURCES = trio.c strio.c libtrio_la_LDFLAGS = EXTRA_DIST = trio.h triop.h strio.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/extra/trio/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/extra/trio/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libtrio.la: $(libtrio_la_OBJECTS) $(libtrio_la_DEPENDENCIES) $(LINK) $(am_libtrio_la_rpath) $(libtrio_la_LDFLAGS) $(libtrio_la_OBJECTS) $(libtrio_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trio.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/src/extra/trio/trio.c0000644000077100007710000034017407307634746016544 0ustar fjffjf00000000000000/************************************************************************* * * $Id: trio.c,v 1.1 2001/06/07 08:23:02 fjfranklin Exp $ * * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************* * * A note to trio contributors: * * Avoid heap allocation at all costs to ensure that the trio functions * are async-safe. The exceptions are the printf/fprintf functions, which * uses fputc, and the asprintf functions and the modifier, which * by design are required to allocate form the heap. * ************************************************************************/ /* * TODO: * - Scan is probably too permissive about its modifiers. * - Add hex-float to TrioReadDouble. * - C escapes in %#[] ? * - C99 support has not been properly tested. * - Multibyte characters (done for format parsing, except scan groups) * - Complex numbers? (C99 _Complex) * - Boolean values? (C99 _Bool) * - C99 NaN(n-char-sequence) missing * - Should we support the GNU %a alloc modifier? GNU has an ugly hack * for %a, because C99 used %a for other purposes. If specified as * %as or %a[ it is interpreted as the alloc modifier, otherwise as * the C99 hex-float. This means that you cannot scan %as as a hex-float * immediately followed by an 's'. */ static const char rcsid[] = "@(#)$Id: trio.c,v 1.1 2001/06/07 08:23:02 fjfranklin Exp $"; #if defined(unix) || defined(__xlC__) /* AIX xlC workaround */ # define PLATFORM_UNIX #elif defined(AMIGA) && defined(__GNUC__) # define PLATFORM_UNIX #endif /************************************************************************* * Include files */ #include "trio.h" #include "triop.h" #include "strio.h" #if !defined(DEBUG) && !defined(NDEBUG) # define NDEBUG #endif #include #include #include #include #include #include #include #if defined(TRIO_C99) # include #endif #if defined(PLATFORM_UNIX) # include # include # define USE_LOCALE #endif #if defined(_MSC_VER) #include #define read _read #define write _write #endif /* _MSC_VER */ /************************************************************************* * Generic definitions */ #ifndef NULL # define NULL 0 #endif #define NIL ((char)0) #ifdef __cplusplus # undef TRUE # undef FALSE # define TRUE true # define FALSE false # define BOOLEAN_T bool #else # ifndef FALSE # define FALSE (1 == 0) # define TRUE (! FALSE) # endif # define BOOLEAN_T int #endif /* mincore() can be used for debugging purposes */ #define VALID(x) (NULL != (x)) /* * Encode the error code and the position. This is decoded * with TRIO_ERROR_CODE and TRIO_ERROR_POSITION. */ #if defined(TRIO_ERRORS) # define TRIO_ERROR_RETURN(x,y) (- ((x) + ((y) << 8))) #else # define TRIO_ERROR_RETURN(x,y) (-1) #endif /************************************************************************* * Internal definitions */ #if defined(__STDC_ISO_10646__) || defined(MB_LEN_MAX) # define USE_MULTIBYTE #endif #if !defined(USE_LONGLONG) # if defined(__GNUC__) && !defined(__STRICT_ANSI__) # define USE_LONGLONG # elif defined(__SUNPRO_C) # define USE_LONGLONG # elif defined(_LONG_LONG) || defined(_LONGLONG) # define USE_LONGLONG # endif #endif /* The extra long numbers */ #if defined(USE_LONGLONG) # define LONGLONG long long # define ULONGLONG unsigned long long #else # define LONGLONG long # define ULONGLONG unsigned long #endif /* The longest possible integer */ #if defined(TRIO_C99) # define LONGEST uintmax_t # define SLONGEST intmax_t #else # define LONGEST ULONGLONG # define SLONGEST LONGLONG #endif /* The maximal number of digits are for base 2 */ #define MAX_CHARS_IN(x) (sizeof(x) * CHAR_BIT + 1) /* The width of a pointer. The number of bits in a hex digit is 4 */ #define POINTER_WIDTH ((sizeof("0x") - 1) + sizeof(void *) * CHAR_BIT / 4) /* Infinite and Not-A-Number for floating-point */ #define USE_NON_NUMBERS #ifndef NAN # define NAN (cos(HUGE_VAL)) #endif #define INFINITE_LOWER "inf" #define INFINITE_UPPER "INF" #define LONG_INFINITE_LOWER "infinite" #define LONG_INFINITE_UPPER "INFINITE" #define NAN_LOWER "nan" #define NAN_UPPER "NAN" /* Various constants */ enum { TYPE_PRINT = 1, TYPE_SCAN = 2, /* Flags. Use maximum 32 */ FLAGS_NEW = 0, FLAGS_STICKY = 1, FLAGS_SPACE = 2 * FLAGS_STICKY, FLAGS_SHOWSIGN = 2 * FLAGS_SPACE, FLAGS_LEFTADJUST = 2 * FLAGS_SHOWSIGN, FLAGS_ALTERNATIVE = 2 * FLAGS_LEFTADJUST, FLAGS_SHORT = 2 * FLAGS_ALTERNATIVE, FLAGS_SHORTSHORT = 2 * FLAGS_SHORT, FLAGS_LONG = 2 * FLAGS_SHORTSHORT, FLAGS_QUAD = 2 * FLAGS_LONG, FLAGS_LONGDOUBLE = 2 * FLAGS_QUAD, FLAGS_SIZE_T = 2 * FLAGS_LONGDOUBLE, FLAGS_PTRDIFF_T = 2 * FLAGS_SIZE_T, FLAGS_INTMAX_T = 2 * FLAGS_PTRDIFF_T, FLAGS_NILPADDING = 2 * FLAGS_INTMAX_T, FLAGS_UNSIGNED = 2 * FLAGS_NILPADDING, FLAGS_UPPER = 2 * FLAGS_UNSIGNED, FLAGS_WIDTH = 2 * FLAGS_UPPER, FLAGS_WIDTH_PARAMETER = 2 * FLAGS_WIDTH, FLAGS_PRECISION = 2 * FLAGS_WIDTH_PARAMETER, FLAGS_PRECISION_PARAMETER = 2 * FLAGS_PRECISION, FLAGS_BASE = 2 * FLAGS_PRECISION_PARAMETER, FLAGS_BASE_PARAMETER = 2 * FLAGS_BASE, FLAGS_FLOAT_E = 2 * FLAGS_BASE_PARAMETER, FLAGS_FLOAT_G = 2 * FLAGS_FLOAT_E, FLAGS_QUOTE = 2 * FLAGS_FLOAT_G, FLAGS_WIDECHAR = 2 * FLAGS_QUOTE, FLAGS_ALLOC = 2 * FLAGS_WIDECHAR, FLAGS_IGNORE = 2 * FLAGS_ALLOC, FLAGS_IGNORE_PARAMETER = 2 * FLAGS_IGNORE, FLAGS_SIZE_PARAMETER = 2 * FLAGS_IGNORE_PARAMETER, /* Reused flags */ FLAGS_EXCLUDE = FLAGS_SHORT, FLAGS_USER_DEFINED = FLAGS_IGNORE, /* Compounded flags */ FLAGS_ALL_VARSIZES = FLAGS_LONG | FLAGS_QUAD | FLAGS_INTMAX_T | FLAGS_PTRDIFF_T | FLAGS_SIZE_T, NO_POSITION = -1, NO_WIDTH = 0, NO_PRECISION = -1, NO_SIZE = -1, NO_BASE = -1, MIN_BASE = 2, MAX_BASE = 36, BASE_BINARY = 2, BASE_OCTAL = 8, BASE_DECIMAL = 10, BASE_HEX = 16, /* Maximal number of allowed parameters */ MAX_PARAMETERS = 64, /* Maximal number of characters in class */ MAX_CHARACTER_CLASS = UCHAR_MAX, /* Maximal string lengths for user-defined specifiers */ MAX_USER_NAME = 64, MAX_USER_DATA = 256, /* Maximal length of locale separator strings */ MAX_LOCALE_SEPARATOR_LENGTH = 64, /* Maximal number of integers in grouping */ MAX_LOCALE_GROUPS = 64 }; #define NO_GROUPING ((int)CHAR_MAX) /* Fundamental formatting parameter types */ #define FORMAT_UNKNOWN 0 #define FORMAT_INT 1 #define FORMAT_DOUBLE 2 #define FORMAT_CHAR 3 #define FORMAT_STRING 4 #define FORMAT_POINTER 5 #define FORMAT_COUNT 6 #define FORMAT_PARAMETER 7 #define FORMAT_GROUP 8 #if defined(TRIO_GNU) # define FORMAT_ERRNO 9 #endif #if defined(TRIO_EXTENSION) # define FORMAT_USER_DEFINED 10 #endif /* Character constants */ #define CHAR_IDENTIFIER '%' #define CHAR_BACKSLASH '\\' #define CHAR_QUOTE '\"' #define CHAR_ADJUST ' ' /* Character class expressions */ #define CLASS_ALNUM ":alnum:" #define CLASS_ALPHA ":alpha:" #define CLASS_CNTRL ":cntrl:" #define CLASS_DIGIT ":digit:" #define CLASS_GRAPH ":graph:" #define CLASS_LOWER ":lower:" #define CLASS_PRINT ":print:" #define CLASS_PUNCT ":punct:" #define CLASS_SPACE ":space:" #define CLASS_UPPER ":upper:" #define CLASS_XDIGIT ":xdigit:" /* * SPECIFIERS: * * * a Hex-float * A Hex-float * c Character * C Widechar character (wint_t) * d Decimal * e Float * E Float * F Float * F Float * g Float * G Float * i Integer * m Error message * n Count * o Octal * p Pointer * s String * S Widechar string (wchar_t) * u Unsigned * x Hex * X Hex * [] Group * <> User-defined * * Reserved: * * D Binary Coded Decimal %D(length,precision) (OS/390) */ #define SPECIFIER_CHAR 'c' #define SPECIFIER_STRING 's' #define SPECIFIER_DECIMAL 'd' #define SPECIFIER_INTEGER 'i' #define SPECIFIER_UNSIGNED 'u' #define SPECIFIER_OCTAL 'o' #define SPECIFIER_HEX 'x' #define SPECIFIER_HEX_UPPER 'X' #define SPECIFIER_FLOAT_E 'e' #define SPECIFIER_FLOAT_E_UPPER 'E' #define SPECIFIER_FLOAT_F 'f' #define SPECIFIER_FLOAT_F_UPPER 'F' #define SPECIFIER_FLOAT_G 'g' #define SPECIFIER_FLOAT_G_UPPER 'G' #define SPECIFIER_POINTER 'p' #define SPECIFIER_GROUP '[' #define SPECIFIER_UNGROUP ']' #define SPECIFIER_COUNT 'n' #if defined(TRIO_UNIX98) # define SPECIFIER_CHAR_UPPER 'C' # define SPECIFIER_STRING_UPPER 'S' #endif #if defined(TRIO_C99) # define SPECIFIER_HEXFLOAT 'a' # define SPECIFIER_HEXFLOAT_UPPER 'A' #endif #if defined(TRIO_GNU) # define SPECIFIER_ERRNO 'm' #endif #if defined(TRIO_EXTENSION) # define SPECIFIER_BINARY 'b' # define SPECIFIER_BINARY_UPPER 'B' # define SPECIFIER_USER_DEFINED_BEGIN '<' # define SPECIFIER_USER_DEFINED_END '>' # define SPECIFIER_USER_DEFINED_SEPARATOR ':' #endif /* * QUALIFIERS: * * * Numbers = d,i,o,u,x,X * Float = a,A,e,E,f,F,g,G * String = s * Char = c * * * 9$ Position * Use the 9th parameter. 9 can be any number between 1 and * the maximal argument * * 9 Width * Set width to 9. 9 can be any number, but must not be postfixed * by '$' * * h Short * Numbers: * (unsigned) short int * * hh Short short * Numbers: * (unsigned) char * * l Long * Numbers: * (unsigned) long int * String: * as the S specifier * Char: * as the C specifier * * ll Long Long * Numbers: * (unsigned) long long int * * L Long Double * Float * long double * * # Alternative * Float: * Decimal-point is always present * String: * non-printable characters are handled as \number * * Spacing * * + Sign * * - Alignment * * . Precision * * * Parameter * print: use parameter * scan: no parameter (ignore) * * q Quad * * Z size_t * * w Widechar * * ' Thousands/quote * Numbers: * Integer part grouped in thousands * Binary numbers: * Number grouped in nibbles (4 bits) * String: * Quoted string * * j intmax_t * t prtdiff_t * z size_t * * ! Sticky * @ Parameter (for both print and scan) */ #define QUALIFIER_POSITION '$' #define QUALIFIER_SHORT 'h' #define QUALIFIER_LONG 'l' #define QUALIFIER_LONG_UPPER 'L' #define QUALIFIER_ALTERNATIVE '#' #define QUALIFIER_SPACE ' ' #define QUALIFIER_PLUS '+' #define QUALIFIER_MINUS '-' #define QUALIFIER_DOT '.' #define QUALIFIER_STAR '*' #define QUALIFIER_CIRCUMFLEX '^' #if defined(TRIO_C99) # define QUALIFIER_SIZE_T 'z' # define QUALIFIER_PTRDIFF_T 't' # define QUALIFIER_INTMAX_T 'j' #endif #if defined(TRIO_BSD) || defined(TRIO_GNU) # define QUALIFIER_QUAD 'q' #endif #if defined(TRIO_GNU) # define QUALIFIER_SIZE_T_UPPER 'Z' #endif #if defined(TRIO_MISC) # define QUALIFIER_WIDECHAR 'w' #endif #if defined(TRIO_EXTENSION) # define QUALIFIER_QUOTE '\'' # define QUALIFIER_STICKY '!' # define QUALIFIER_VARSIZE '&' /* This should remain undocumented */ # define QUALIFIER_PARAM '@' /* Experimental */ # define QUALIFIER_COLON ':' /* For scanlists */ #endif /************************************************************************* * Internal structures */ /* Parameters */ typedef struct { int type; unsigned long flags; int width; int precision; int base; int varsize; int indexAfterSpecifier; union { char *string; void *pointer; union { SLONGEST as_signed; LONGEST as_unsigned; } number; double doubleNumber; double *doublePointer; long double longdoubleNumber; long double *longdoublePointer; int errorNumber; } data; /* For the user-defined specifier */ char user_name[MAX_USER_NAME]; char user_data[MAX_USER_DATA]; } parameter_T; /* General trio "class" */ typedef struct _trio_T { const void *location; void (*OutStream)(struct _trio_T *, int); void (*InStream)(struct _trio_T *, int *); /* * The number of characters that would have been written/read if * there had been sufficient space. */ int processed; /* * The number of characters that are actually written/read. * Processed and committed with only differ for the *nprintf * and *nscanf functions. */ int committed; int max; int current; } trio_T; /* References (for user-defined callbacks) */ typedef struct _reference_T { trio_T *data; parameter_T *parameter; } reference_T; /* Registered entries (for user-defined callbacks) */ typedef struct _userdef_T { struct _userdef_T *next; trio_callback_t callback; char *name; } userdef_T; /************************************************************************* * Internal variables */ #if defined(PLATFORM_UNIX) extern int errno; #endif static const char null[] = "(nil)"; #if defined(USE_LOCALE) static struct lconv *internalLocaleValues = NULL; #endif /* * UNIX98 says "in a locale where the radix character is not defined, * the radix character defaults to a period (.)" */ static char internalDecimalPoint[MAX_LOCALE_SEPARATOR_LENGTH] = "."; static char internalThousandSeparator[MAX_LOCALE_SEPARATOR_LENGTH] = ","; static char internalGrouping[MAX_LOCALE_GROUPS] = { (char)NO_GROUPING }; static const char internalDigitsLower[] = "0123456789abcdefghijklmnopqrstuvwxyz"; static const char internalDigitsUpper[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; static userdef_T *internalUserDef = NULL; static BOOLEAN_T internalDigitsUnconverted = TRUE; static int internalDigitArray[128]; /************************************************************************* * trio_strerror [public] */ const char *trio_strerror(int errorcode) { /* Textual versions of the error codes */ switch (TRIO_ERROR_CODE(errorcode)) { case TRIO_EOF: return "End of file"; case TRIO_EINVAL: return "Invalid argument"; case TRIO_ETOOMANY: return "Too many arguments"; case TRIO_EDBLREF: return "Double reference"; case TRIO_EGAP: return "Reference gap"; case TRIO_ENOMEM: return "Out of memory"; case TRIO_ERANGE: return "Invalid range"; default: return "Unknown"; } } /************************************************************************* * TrioIsQualifier [private] * * Description: * Remember to add all new qualifiers to this function. * QUALIFIER_POSITION must not be added. */ static BOOLEAN_T TrioIsQualifier(const char ch) { /* QUALIFIER_POSITION is not included */ switch (ch) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case QUALIFIER_PLUS: case QUALIFIER_MINUS: case QUALIFIER_SPACE: case QUALIFIER_DOT: case QUALIFIER_STAR: case QUALIFIER_ALTERNATIVE: case QUALIFIER_SHORT: case QUALIFIER_LONG: case QUALIFIER_LONG_UPPER: case QUALIFIER_CIRCUMFLEX: #if defined(QUALIFIER_SIZE_T) case QUALIFIER_SIZE_T: #endif #if defined(QUALIFIER_PTRDIFF_T) case QUALIFIER_PTRDIFF_T: #endif #if defined(QUALIFIER_INTMAX_T) case QUALIFIER_INTMAX_T: #endif #if defined(QUALIFIER_QUAD) case QUALIFIER_QUAD: #endif #if defined(QUALIFIER_SIZE_T_UPPER) case QUALIFIER_SIZE_T_UPPER: #endif #if defined(QUALIFIER_WIDECHAR) case QUALIFIER_WIDECHAR: #endif #if defined(QUALIFIER_QUOTE) case QUALIFIER_QUOTE: #endif #if defined(QUALIFIER_STICKY) case QUALIFIER_STICKY: #endif #if defined(QUALIFIER_VARSIZE) case QUALIFIER_VARSIZE: #endif #if defined(QUALIFIER_PARAM) case QUALIFIER_PARAM: #endif return TRUE; default: return FALSE; } } /************************************************************************* * TrioIsNan [private] */ static int TrioIsNan(double number) { #ifdef isnan /* C99 defines isnan() as a macro */ return isnan(number); #else double integral, fraction; return (/* NaN is the only number which does not compare to itself */ (number != number) || /* Fallback solution if NaN compares to NaN */ ((number != 0.0) && (fraction = modf(number, &integral), integral == fraction))); #endif } /************************************************************************* * TrioIsInfinite [private] */ static int TrioIsInfinite(double number) { #ifdef isinf /* C99 defines isinf() as a macro */ return isinf(number); #else return ((number == HUGE_VAL) ? 1 : ((number == -HUGE_VAL) ? -1 : 0)); #endif } /************************************************************************* * TrioSetLocale [private] */ #if defined(USE_LOCALE) static void TrioSetLocale(void) { internalLocaleValues = (struct lconv *)localeconv(); if (StrLength(internalLocaleValues->decimal_point) > 0) { StrCopyMax(internalDecimalPoint, sizeof(internalDecimalPoint), internalLocaleValues->decimal_point); } if (StrLength(internalLocaleValues->thousands_sep) > 0) { StrCopyMax(internalThousandSeparator, sizeof(internalThousandSeparator), internalLocaleValues->thousands_sep); } if (StrLength(internalLocaleValues->grouping) > 0) { StrCopyMax(internalGrouping, sizeof(internalGrouping), internalLocaleValues->grouping); } } #endif /* defined(USE_LOCALE) */ /************************************************************************* * TrioGetPosition [private] * * Get the %n$ position. */ static int TrioGetPosition(const char *format, int *indexPointer) { char *tmpformat; int number = 0; int index = *indexPointer; number = (int)StrToLong(&format[index], &tmpformat, BASE_DECIMAL); index = (int)(tmpformat - format); if ((number != 0) && (QUALIFIER_POSITION == format[index++])) { *indexPointer = index; /* * number is decreased by 1, because n$ starts from 1, whereas * the array it is indexing starts from 0. */ return number - 1; } return NO_POSITION; } /************************************************************************* * TrioFindNamespace [private] * * Find registered user-defined specifier. * The prev argument is used for optimisation only. */ static userdef_T * TrioFindNamespace(const char *name, userdef_T **prev) { userdef_T *def; for (def = internalUserDef; def; def = def->next) { /* Case-sensitive string comparison */ if (StrEqualCase(def->name, name)) return def; if (prev) *prev = def; } return def; } /************************************************************************* * TrioPreprocess [private] * * Description: * Parse the format string */ static int TrioPreprocess(int type, const char *format, parameter_T *parameters, va_list arglist, void **argarray) { #if defined(TRIO_ERRORS) /* Count the number of times a parameter is referenced */ unsigned short usedEntries[MAX_PARAMETERS]; #endif /* Parameter counters */ int parameterPosition; int currentParam; int maxParam = -1; /* Utility variables */ unsigned long flags; int width; int precision; int varsize; int base; int index; /* Index into formatting string */ int dots; /* Count number of dots in modifier part */ BOOLEAN_T positional; /* Does the specifier have a positional? */ BOOLEAN_T got_sticky = FALSE; /* Are there any sticky modifiers at all? */ /* * indices specifies the order in which the parameters must be * read from the va_args (this is necessary to handle positionals) */ int indices[MAX_PARAMETERS]; int pos = 0; /* Various variables */ char ch; int charlen; int i = -1; int num; char *tmpformat; #if defined(TRIO_ERRORS) /* * The 'parameters' array is not initialized, but we need to * know which entries we have used. */ memset(usedEntries, 0, sizeof(usedEntries)); #endif index = 0; parameterPosition = 0; #if defined(USE_MULTIBYTE) mblen(NULL, 0); #endif while (format[index]) { #if defined(USE_MULTIBYTE) if (! isascii(format[index])) { /* * Multibyte characters cannot be legal specifiers or * modifiers, so we skip over them. */ charlen = mblen(&format[index], MB_LEN_MAX); index += (charlen > 0) ? charlen : 1; continue; /* while */ } #endif /* defined(USE_MULTIBYTE) */ if (CHAR_IDENTIFIER == format[index++]) { if (CHAR_IDENTIFIER == format[index]) { index++; continue; /* while */ } flags = FLAGS_NEW; dots = 0; currentParam = TrioGetPosition(format, &index); positional = (NO_POSITION != currentParam); if (!positional) { /* We have no positional, get the next counter */ currentParam = parameterPosition; } if(currentParam >= MAX_PARAMETERS) { /* Bail out completely to make the error more obvious */ return TRIO_ERROR_RETURN(TRIO_ETOOMANY, index); } if (currentParam > maxParam) maxParam = currentParam; /* Default values */ width = NO_WIDTH; precision = NO_PRECISION; base = NO_BASE; varsize = NO_SIZE; while (TrioIsQualifier(format[index])) { ch = format[index++]; switch (ch) { case QUALIFIER_SPACE: flags |= FLAGS_SPACE; break; case QUALIFIER_PLUS: flags |= FLAGS_SHOWSIGN; break; case QUALIFIER_MINUS: flags |= FLAGS_LEFTADJUST; flags &= ~FLAGS_NILPADDING; break; case QUALIFIER_ALTERNATIVE: flags |= FLAGS_ALTERNATIVE; break; case QUALIFIER_DOT: if (dots == 0) /* Precision */ { dots++; /* Skip if no precision */ if (QUALIFIER_DOT == format[index]) break; /* After the first dot we have the precision */ flags |= FLAGS_PRECISION; if ((QUALIFIER_STAR == format[index]) || (QUALIFIER_PARAM == format[index])) { index++; flags |= FLAGS_PRECISION_PARAMETER; precision = TrioGetPosition(format, &index); if (precision == NO_POSITION) { parameterPosition++; if (positional) precision = parameterPosition; else { precision = currentParam; currentParam = precision + 1; } } else { if (! positional) currentParam = precision + 1; if (width > maxParam) maxParam = precision; } if (currentParam > maxParam) maxParam = currentParam; } else { precision = StrToLong(&format[index], &tmpformat, BASE_DECIMAL); index = (int)(tmpformat - format); } } else if (dots == 1) /* Base */ { dots++; /* After the second dot we have the base */ flags |= FLAGS_BASE; if ((QUALIFIER_STAR == format[index]) || (QUALIFIER_PARAM == format[index])) { index++; flags |= FLAGS_BASE_PARAMETER; base = TrioGetPosition(format, &index); if (base == NO_POSITION) { parameterPosition++; if (positional) base = parameterPosition; else { base = currentParam; currentParam = base + 1; } } else { if (! positional) currentParam = base + 1; if (base > maxParam) maxParam = base; } if (currentParam > maxParam) maxParam = currentParam; } else { base = StrToLong(&format[index], &tmpformat, BASE_DECIMAL); if (base > MAX_BASE) return TRIO_ERROR_RETURN(TRIO_EINVAL, index); index = (int)(tmpformat - format); } } else { return TRIO_ERROR_RETURN(TRIO_EINVAL, index); } break; /* QUALIFIER_DOT */ case QUALIFIER_PARAM: type = TYPE_PRINT; /* FALLTHROUGH */ case QUALIFIER_STAR: /* This has different meanings for print and scan */ if (TYPE_PRINT == type) { /* Read with from parameter */ flags |= (FLAGS_WIDTH | FLAGS_WIDTH_PARAMETER); width = TrioGetPosition(format, &index); if (width == NO_POSITION) { parameterPosition++; if (positional) width = parameterPosition; else { width = currentParam; currentParam = width + 1; } } else { if (! positional) currentParam = width + 1; if (width > maxParam) maxParam = width; } if (currentParam > maxParam) maxParam = currentParam; } else { /* Scan, but do not store result */ flags |= FLAGS_IGNORE; } break; /* QUALIFIER_STAR */ case '0': if (! (flags & FLAGS_LEFTADJUST)) flags |= FLAGS_NILPADDING; /* FALLTHROUGH */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': flags |= FLAGS_WIDTH; /* &format[index - 1] is used to "rewind" the read * character from format */ width = StrToLong(&format[index - 1], &tmpformat, BASE_DECIMAL); index = (int)(tmpformat - format); break; case QUALIFIER_SHORT: if (flags & FLAGS_SHORTSHORT) return TRIO_ERROR_RETURN(TRIO_EINVAL, index); else if (flags & FLAGS_SHORT) flags |= FLAGS_SHORTSHORT; else flags |= FLAGS_SHORT; break; case QUALIFIER_LONG: if (flags & FLAGS_QUAD) return TRIO_ERROR_RETURN(TRIO_EINVAL, index); else if (flags & FLAGS_LONG) flags |= FLAGS_QUAD; else flags |= FLAGS_LONG; break; case QUALIFIER_LONG_UPPER: flags |= FLAGS_LONGDOUBLE; break; #if defined(QUALIFIER_SIZE_T) case QUALIFIER_SIZE_T: flags |= FLAGS_SIZE_T; /* Modify flags for later truncation of number */ if (sizeof(size_t) == sizeof(ULONGLONG)) flags |= FLAGS_QUAD; else if (sizeof(size_t) == sizeof(long)) flags |= FLAGS_LONG; break; #endif #if defined(QUALIFIER_PTRDIFF_T) case QUALIFIER_PTRDIFF_T: flags |= FLAGS_PTRDIFF_T; if (sizeof(ptrdiff_t) == sizeof(ULONGLONG)) flags |= FLAGS_QUAD; else if (sizeof(ptrdiff_t) == sizeof(long)) flags |= FLAGS_LONG; break; #endif #if defined(QUALIFIER_INTMAX_T) case QUALIFIER_INTMAX_T: flags |= FLAGS_INTMAX_T; if (sizeof(intmax_t) == sizeof(ULONGLONG)) flags |= FLAGS_QUAD; else if (sizeof(intmax_t) == sizeof(long)) flags |= FLAGS_LONG; break; #endif #if defined(QUALIFIER_QUAD) case QUALIFIER_QUAD: flags |= FLAGS_QUAD; break; #endif #if defined(QUALIFIER_WIDECHAR) case QUALIFIER_WIDECHAR: flags |= FLAGS_WIDECHAR; break; #endif #if defined(QUALIFIER_SIZE_T_UPPER) case QUALIFIER_SIZE_T_UPPER: break; #endif #if defined(QUALIFIER_QUOTE) case QUALIFIER_QUOTE: flags |= FLAGS_QUOTE; break; #endif #if defined(QUALIFIER_STICKY) case QUALIFIER_STICKY: flags |= FLAGS_STICKY; got_sticky = TRUE; break; #endif #if defined(QUALIFIER_VARSIZE) case QUALIFIER_VARSIZE: flags |= FLAGS_SIZE_PARAMETER; parameterPosition++; if (positional) varsize = parameterPosition; else { varsize = currentParam; currentParam = varsize + 1; } if (currentParam > maxParam) maxParam = currentParam; break; #endif default: /* Bail out completely to make the error more obvious */ return TRIO_ERROR_RETURN(TRIO_EINVAL, index); } } /* while qualifier */ /* * Parameters only need the type and value. The value is * read later. */ if (flags & FLAGS_WIDTH_PARAMETER) { #if defined(TRIO_ERRORS) usedEntries[width] += 1; #endif parameters[pos].type = FORMAT_PARAMETER; indices[width] = pos; width = pos++; } if (flags & FLAGS_PRECISION_PARAMETER) { #if defined(TRIO_ERRORS) usedEntries[precision] += 1; #endif parameters[pos].type = FORMAT_PARAMETER; indices[precision] = pos; precision = pos++; } if (flags & FLAGS_BASE_PARAMETER) { #if defined(TRIO_ERRORS) usedEntries[base] += 1; #endif parameters[pos].type = FORMAT_PARAMETER; indices[base] = pos; base = pos++; } if (flags & FLAGS_SIZE_PARAMETER) { #if defined(TRIO_ERRORS) usedEntries[varsize] += 1; #endif parameters[pos].type = FORMAT_PARAMETER; indices[varsize] = pos; varsize = pos++; } indices[currentParam] = pos; switch (format[index++]) { #if defined(SPECIFIER_CHAR_UPPER) case SPECIFIER_CHAR_UPPER: flags |= FLAGS_LONG; /* FALLTHROUGH */ #endif case SPECIFIER_CHAR: parameters[pos].type = FORMAT_CHAR; break; #if defined(SPECIFIER_STRING_UPPER) case SPECIFIER_STRING_UPPER: flags |= FLAGS_LONG; /* FALLTHROUGH */ #endif case SPECIFIER_STRING: parameters[pos].type = FORMAT_STRING; break; case SPECIFIER_GROUP: if (TYPE_SCAN == type) { parameters[pos].type = FORMAT_GROUP; while (format[index]) { if (format[index++] == SPECIFIER_UNGROUP) break; /* while */ } } break; case SPECIFIER_INTEGER: parameters[pos].type = FORMAT_INT; break; case SPECIFIER_UNSIGNED: flags |= FLAGS_UNSIGNED; parameters[pos].type = FORMAT_INT; break; case SPECIFIER_DECIMAL: /* Disable base modifier */ flags &= ~FLAGS_BASE_PARAMETER; base = BASE_DECIMAL; parameters[pos].type = FORMAT_INT; break; case SPECIFIER_OCTAL: flags &= ~FLAGS_BASE_PARAMETER; base = BASE_OCTAL; parameters[pos].type = FORMAT_INT; break; #if defined(SPECIFIER_BINARY) case SPECIFIER_BINARY_UPPER: flags |= FLAGS_UPPER; /* FALLTHROUGH */ case SPECIFIER_BINARY: flags |= FLAGS_NILPADDING; flags &= ~FLAGS_BASE_PARAMETER; base = BASE_BINARY; parameters[pos].type = FORMAT_INT; break; #endif case SPECIFIER_HEX_UPPER: flags |= FLAGS_UPPER; /* FALLTHROUGH */ case SPECIFIER_HEX: flags |= FLAGS_UNSIGNED; flags &= ~FLAGS_BASE_PARAMETER; base = BASE_HEX; parameters[pos].type = FORMAT_INT; break; case SPECIFIER_FLOAT_E_UPPER: flags |= FLAGS_UPPER; /* FALLTHROUGH */ case SPECIFIER_FLOAT_E: flags |= FLAGS_FLOAT_E; parameters[pos].type = FORMAT_DOUBLE; break; case SPECIFIER_FLOAT_G_UPPER: flags |= FLAGS_UPPER; /* FALLTHROUGH */ case SPECIFIER_FLOAT_G: flags |= FLAGS_FLOAT_G; parameters[pos].type = FORMAT_DOUBLE; break; case SPECIFIER_FLOAT_F_UPPER: flags |= FLAGS_UPPER; /* FALLTHROUGH */ case SPECIFIER_FLOAT_F: parameters[pos].type = FORMAT_DOUBLE; break; case SPECIFIER_POINTER: parameters[pos].type = FORMAT_POINTER; break; case SPECIFIER_COUNT: parameters[pos].type = FORMAT_COUNT; break; #if defined(SPECIFIER_HEXFLOAT) # if defined(SPECIFIER_HEXFLOAT_UPPER) case SPECIFIER_HEXFLOAT_UPPER: flags |= FLAGS_UPPER; /* FALLTHROUGH */ # endif case SPECIFIER_HEXFLOAT: base = BASE_HEX; parameters[pos].type = FORMAT_DOUBLE; break; #endif #if defined(FORMAT_ERRNO) case SPECIFIER_ERRNO: parameters[pos].type = FORMAT_ERRNO; break; #endif #if defined(SPECIFIER_USER_DEFINED_BEGIN) case SPECIFIER_USER_DEFINED_BEGIN: { unsigned int max; int without_namespace = TRUE; parameters[pos].type = FORMAT_USER_DEFINED; parameters[pos].user_name[0] = NIL; tmpformat = (char *)&format[index]; while ((ch = format[index])) { index++; if (ch == SPECIFIER_USER_DEFINED_END) { if (without_namespace) { /* We must get the handle first */ parameters[pos].type = FORMAT_PARAMETER; parameters[pos].indexAfterSpecifier = index; parameters[pos].flags = FLAGS_USER_DEFINED; /* Adjust parameters for insertion of new one */ pos++; # if defined(TRIO_ERRORS) usedEntries[currentParam] += 1; # endif parameters[pos].type = FORMAT_USER_DEFINED; currentParam++; indices[currentParam] = pos; if (currentParam > maxParam) maxParam = currentParam; } /* Copy the user data */ max = (unsigned int)(&format[index] - tmpformat); if (max > MAX_USER_DATA) max = MAX_USER_DATA; StrCopyMax(parameters[pos].user_data, max, tmpformat); break; /* while */ } if (ch == SPECIFIER_USER_DEFINED_SEPARATOR) { without_namespace = FALSE; /* Copy the namespace for later looking-up */ max = (int)(&format[index] - tmpformat); if (max > MAX_USER_NAME) max = MAX_USER_NAME; StrCopyMax(parameters[pos].user_name, max, tmpformat); tmpformat = (char *)&format[index]; } } if (ch != SPECIFIER_USER_DEFINED_END) return TRIO_ERROR_RETURN(TRIO_EINVAL, index); } break; #endif /* defined(SPECIFIER_USER_DEFINED_BEGIN) */ default: /* Bail out completely to make the error more obvious */ return TRIO_ERROR_RETURN(TRIO_EINVAL, index); } #if defined(TRIO_ERRORS) /* Count the number of times this entry has been used */ usedEntries[currentParam] += 1; #endif /* Find last sticky parameters */ if (got_sticky && !(flags & FLAGS_STICKY)) { for (i = pos - 1; i >= 0; i--) { if (parameters[i].type == FORMAT_PARAMETER) continue; if ((parameters[i].flags & FLAGS_STICKY) && (parameters[i].type == parameters[pos].type)) { /* Do not overwrite current qualifiers */ flags |= (parameters[i].flags & (unsigned long)~FLAGS_STICKY); if (width == NO_WIDTH) width = parameters[i].width; if (precision == NO_PRECISION) precision = parameters[i].precision; if (base == NO_BASE) base = parameters[i].base; break; } } } parameters[pos].indexAfterSpecifier = index; parameters[pos].flags = flags; parameters[pos].width = width; parameters[pos].precision = precision; parameters[pos].base = (base == NO_BASE) ? BASE_DECIMAL : base; parameters[pos].varsize = varsize; pos++; if (! positional) parameterPosition++; } /* if identifier */ } /* while format characters left */ for (num = 0; num <= maxParam; num++) { #if defined(TRIO_ERRORS) if (usedEntries[num] != 1) { if (usedEntries[num] == 0) /* gap detected */ return TRIO_ERROR_RETURN(TRIO_EGAP, num); else /* double references detected */ return TRIO_ERROR_RETURN(TRIO_EDBLREF, num); } #endif i = indices[num]; /* * FORMAT_PARAMETERS are only present if they must be read, * so it makes no sense to check the ignore flag (besides, * the flags variable is not set for that particular type) */ if ((parameters[i].type != FORMAT_PARAMETER) && (parameters[i].flags & FLAGS_IGNORE)) continue; /* for all arguments */ /* * The stack arguments are read according to ANSI C89 * default argument promotions: * * char = int * short = int * unsigned char = unsigned int * unsigned short = unsigned int * float = double * * In addition to the ANSI C89 these types are read (the * default argument promotions of C99 has not been * considered yet) * * long long * long double * size_t * ptrdiff_t * intmax_t */ switch (parameters[i].type) { case FORMAT_GROUP: case FORMAT_STRING: parameters[i].data.string = (arglist != NULL) ? va_arg(arglist, char *) : (char *)(argarray[num]); break; case FORMAT_POINTER: case FORMAT_COUNT: case FORMAT_USER_DEFINED: case FORMAT_UNKNOWN: parameters[i].data.pointer = (arglist != NULL) ? va_arg(arglist, void *) : argarray[num]; break; case FORMAT_CHAR: case FORMAT_INT: if (TYPE_SCAN == type) { if (arglist != NULL) parameters[i].data.pointer = (LONGEST *)va_arg(arglist, void *); else { if (parameters[i].type == FORMAT_CHAR) parameters[i].data.pointer = (LONGEST *)((char *)argarray[num]); else if (parameters[i].flags & FLAGS_SHORT) parameters[i].data.pointer = (LONGEST *)((short *)argarray[num]); else parameters[i].data.pointer = (LONGEST *)((int *)argarray[num]); } } else { #if defined(QUALIFIER_VARSIZE) if (parameters[i].flags & FLAGS_SIZE_PARAMETER) { /* * Variable sizes are mapped onto the fixed sizes, in * accordance with integer promotion. * * Please note that this may not be portable, as we * only guess the size, not the layout of the numbers. * For example, if int is little-endian, and long is * big-endian, then this will fail. */ parameters[i].flags &= ~FLAGS_ALL_VARSIZES; varsize = (int)parameters[parameters[i].varsize].data.number.as_unsigned; if (varsize <= (int)sizeof(int)) ; else if (varsize <= (int)sizeof(long)) parameters[i].flags |= FLAGS_LONG; #if defined(QUALIFIER_INTMAX_T) else if (varsize <= (int)sizeof(LONGLONG)) parameters[i].flags |= FLAGS_QUAD; else parameters[i].flags |= FLAGS_INTMAX_T; #else else parameters[i].flags |= FLAGS_QUAD; #endif } #endif /* defined(QUALIFIER_VARSIZE) */ #if defined(QUALIFIER_SIZE_T) || defined(QUALIFIER_SIZE_T_UPPER) if (parameters[i].flags & FLAGS_SIZE_T) parameters[i].data.number.as_unsigned = (arglist != NULL) ? (LONGEST)va_arg(arglist, size_t) : (LONGEST)(*((size_t *)argarray[num])); else #endif #if defined(QUALIFIER_PTRDIFF_T) if (parameters[i].flags & FLAGS_PTRDIFF_T) parameters[i].data.number.as_unsigned = (arglist != NULL) ? (LONGEST)va_arg(arglist, ptrdiff_t) : (LONGEST)(*((ptrdiff_t *)argarray[num])); else #endif #if defined(QUALIFIER_INTMAX_T) if (parameters[i].flags & FLAGS_INTMAX_T) parameters[i].data.number.as_unsigned = (arglist != NULL) ? (LONGEST)va_arg(arglist, intmax_t) : (LONGEST)(*((intmax_t *)argarray[num])); else #endif if (parameters[i].flags & FLAGS_QUAD) parameters[i].data.number.as_unsigned = (arglist != NULL) ? (LONGEST)va_arg(arglist, ULONGLONG) : (LONGEST)(*((ULONGLONG *)argarray[num])); else if (parameters[i].flags & FLAGS_LONG) parameters[i].data.number.as_unsigned = (arglist != NULL) ? (LONGEST)va_arg(arglist, long) : (LONGEST)(*((long *)argarray[num])); else { if (arglist != NULL) parameters[i].data.number.as_unsigned = (LONGEST)va_arg(arglist, int); else { if (parameters[i].type == FORMAT_CHAR) parameters[i].data.number.as_unsigned = (LONGEST)(*((char *)argarray[num])); else if (parameters[i].flags & FLAGS_SHORT) parameters[i].data.number.as_unsigned = (LONGEST)(*((short *)argarray[num])); else parameters[i].data.number.as_unsigned = (LONGEST)(*((int *)argarray[num])); } } } break; case FORMAT_PARAMETER: /* * The parameter for the user-defined specifier is a pointer, * whereas the rest (width, precision, base) uses an integer. */ if (parameters[i].flags & FLAGS_USER_DEFINED) parameters[i].data.pointer = (arglist != NULL) ? va_arg(arglist, void *) : argarray[num]; else parameters[i].data.number.as_unsigned = (arglist != NULL) ? (LONGEST)va_arg(arglist, int) : (LONGEST)(*((int *)argarray[num])); break; case FORMAT_DOUBLE: if (TYPE_SCAN == type) { if (parameters[i].flags & FLAGS_LONG) parameters[i].data.longdoublePointer = (arglist != NULL) ? va_arg(arglist, long double *) : (long double *)((long double *)argarray[num]); else { if (arglist != NULL) parameters[i].data.doublePointer = va_arg(arglist, double *); else { if (parameters[i].flags & FLAGS_SHORT) parameters[i].data.doublePointer = (double *)((float *)argarray[num]); else parameters[i].data.doublePointer = (double *)((double *)argarray[num]); } } } else { if (parameters[i].flags & FLAGS_LONG) parameters[i].data.longdoubleNumber = (arglist != NULL) ? va_arg(arglist, long double) : (long double)(*((long double *)argarray[num])); else { if (arglist != NULL) parameters[i].data.longdoubleNumber = (long double)va_arg(arglist, double); else { if (parameters[i].flags & FLAGS_SHORT) parameters[i].data.longdoubleNumber = (long double)(*((float *)argarray[num])); else parameters[i].data.longdoubleNumber = (long double)(long double)(*((double *)argarray[num])); } } } break; #if defined(FORMAT_ERRNO) case FORMAT_ERRNO: parameters[i].data.errorNumber = errno; break; #endif default: break; } } /* for all specifiers */ return num; } /************************************************************************* * * @FORMATTING * ************************************************************************/ /************************************************************************* * TrioWriteNumber [private] * * Description: * Output a number. * The complexity of this function is a result of the complexity * of the dependencies of the flags. */ static void TrioWriteNumber(trio_T *self, SLONGEST number, unsigned long flags, int width, int precision, int base) { BOOLEAN_T isNegative; char buffer[MAX_CHARS_IN(LONGEST) * MAX_LOCALE_SEPARATOR_LENGTH * MAX_LOCALE_GROUPS]; char *bufferend; char *pointer; const char *digits; int i; int length; char *p; int charsPerThousand; int groupingIndex; int count; assert(VALID(self)); assert(VALID(self->OutStream)); assert((base >= MIN_BASE && base <= MAX_BASE) || (base == NO_BASE)); digits = (flags & FLAGS_UPPER) ? internalDigitsUpper : internalDigitsLower; if (flags & FLAGS_UNSIGNED) isNegative = FALSE; else if ((isNegative = (((SLONGEST)number) < 0))) number = -number; if (flags & FLAGS_QUAD) number &= (ULONGLONG)-1; else if (flags & FLAGS_LONG) number &= (unsigned long)-1; else number &= (unsigned int)-1; /* Build number */ pointer = bufferend = &buffer[sizeof(buffer) - 1]; *pointer-- = NIL; charsPerThousand = (int)internalGrouping[0]; groupingIndex = 1; for (i = 1; i < (int)sizeof(buffer); i++) { *pointer-- = digits[number % base]; number /= base; if (number == 0) break; if ((flags & FLAGS_QUOTE) && (charsPerThousand != NO_GROUPING) && (i % charsPerThousand == 0)) { /* * We are building the number from the least significant * to the most significant digit, so we have to copy the * thousand separator backwards */ length = StrLength(internalThousandSeparator); if (((int)(pointer - buffer) - length) > 0) { p = &internalThousandSeparator[length - 1]; while (length-- > 0) *pointer-- = *p--; } /* Advance to next grouping number */ switch (internalGrouping[groupingIndex]) { case CHAR_MAX: /* Disable grouping */ charsPerThousand = NO_GROUPING; break; case 0: /* Repeat last group */ break; default: charsPerThousand = (int)internalGrouping[groupingIndex++]; break; } } } /* Adjust width */ width -= (bufferend - pointer) - 1; /* Adjust precision */ if (NO_PRECISION != precision) { precision -= (bufferend - pointer) - 1; if (precision < 0) precision = 0; flags |= FLAGS_NILPADDING; } /* Adjust width further */ if (isNegative || (flags & FLAGS_SHOWSIGN) || (flags & FLAGS_SPACE)) width--; if (flags & FLAGS_ALTERNATIVE) { switch (base) { case BASE_BINARY: case BASE_HEX: width -= 2; break; case BASE_OCTAL: width--; break; default: break; } } /* Output prefixes spaces if needed */ if (! ((flags & FLAGS_LEFTADJUST) || ((flags & FLAGS_NILPADDING) && (precision == NO_PRECISION)))) { count = (precision == NO_PRECISION) ? 0 : precision; while (width-- > count) self->OutStream(self, CHAR_ADJUST); } /* width has been adjusted for signs and alternatives */ if (isNegative) self->OutStream(self, '-'); else if (flags & FLAGS_SHOWSIGN) self->OutStream(self, '+'); else if (flags & FLAGS_SPACE) self->OutStream(self, ' '); if (flags & FLAGS_ALTERNATIVE) { switch (base) { case BASE_BINARY: self->OutStream(self, '0'); self->OutStream(self, (flags & FLAGS_UPPER) ? 'B' : 'b'); break; case BASE_OCTAL: self->OutStream(self, '0'); break; case BASE_HEX: self->OutStream(self, '0'); self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x'); break; default: break; } /* switch base */ } /* Output prefixed zero padding if needed */ if (flags & FLAGS_NILPADDING) { if (precision == NO_PRECISION) precision = width; while (precision-- > 0) { self->OutStream(self, '0'); width--; } } /* Output the number itself */ while (*(++pointer)) { self->OutStream(self, *pointer); } /* Output trailing spaces if needed */ if (flags & FLAGS_LEFTADJUST) { while (width-- > 0) self->OutStream(self, CHAR_ADJUST); } } /************************************************************************* * TrioWriteString [private] * * Description: * Output a string */ static void TrioWriteString(trio_T *self, const char *string, unsigned long flags, int width, int precision) { int length; int ch; assert(VALID(self)); assert(VALID(self->OutStream)); if (string == NULL) { string = null; length = sizeof(null) - 1; /* Disable quoting for the null pointer */ flags &= (~FLAGS_QUOTE); width = 0; } else { length = StrLength(string); } if ((NO_PRECISION != precision) && (precision < length)) { length = precision; } width -= length; if (flags & FLAGS_QUOTE) self->OutStream(self, CHAR_QUOTE); if (! (flags & FLAGS_LEFTADJUST)) { while (width-- > 0) self->OutStream(self, CHAR_ADJUST); } while (length-- > 0) { /* The ctype parameters must be an unsigned char (or EOF) */ ch = (unsigned char)(*string++); if (flags & FLAGS_ALTERNATIVE) { if (! (isprint(ch) || isspace(ch))) { /* * Non-printable characters are converted to C escapes or * \number, if no C escape exists. */ self->OutStream(self, CHAR_BACKSLASH); switch (ch) { case '\a': self->OutStream(self, 'a'); break; case '\b': self->OutStream(self, 'b'); break; case '\f': self->OutStream(self, 'f'); break; case '\n': self->OutStream(self, 'n'); break; case '\r': self->OutStream(self, 'r'); break; case '\t': self->OutStream(self, 't'); break; case '\v': self->OutStream(self, 'v'); break; case '\\': self->OutStream(self, '\\'); break; default: self->OutStream(self, 'x'); TrioWriteNumber(self, (SLONGEST)ch, FLAGS_UNSIGNED | FLAGS_NILPADDING, 2, 2, BASE_HEX); break; } } else if (ch == CHAR_BACKSLASH) { self->OutStream(self, CHAR_BACKSLASH); self->OutStream(self, CHAR_BACKSLASH); } else { self->OutStream(self, ch); } } else { self->OutStream(self, ch); } } if (flags & FLAGS_LEFTADJUST) { while (width-- > 0) self->OutStream(self, CHAR_ADJUST); } if (flags & FLAGS_QUOTE) self->OutStream(self, CHAR_QUOTE); } /************************************************************************* * TrioWriteDouble [private] */ static void TrioWriteDouble(trio_T *self, long double longdoubleNumber, unsigned long flags, int width, int precision, int base) { int charsPerThousand; int length; double number; double precisionPower; double workNumber; int integerDigits; int fractionDigits; int exponentDigits; int expectedWidth; int exponent; unsigned int uExponent = 0; double dblBase; BOOLEAN_T isNegative; BOOLEAN_T isExponentNegative = FALSE; BOOLEAN_T isHex; const char *digits; char numberBuffer[MAX_CHARS_IN(double) * MAX_LOCALE_SEPARATOR_LENGTH * MAX_LOCALE_GROUPS]; char *numberPointer; char exponentBuffer[MAX_CHARS_IN(double)]; char *exponentPointer = NULL; int groupingIndex; char *work; int i; BOOLEAN_T onlyzero; int set_precision = precision; assert(VALID(self)); assert(VALID(self->OutStream)); assert(base == BASE_DECIMAL || base == BASE_HEX); number = (double)longdoubleNumber; #if defined(USE_NON_NUMBERS) /* Look for infinite numbers and non-a-number first */ switch (TrioIsInfinite(number)) { case 1: /* Positive infinity */ TrioWriteString(self, (flags & FLAGS_UPPER) ? INFINITE_UPPER : INFINITE_LOWER, flags, width, precision); return; case -1: /* Negative infinity */ TrioWriteString(self, (flags & FLAGS_UPPER) ? "-" INFINITE_UPPER : "-" INFINITE_LOWER, flags, width, precision); return; default: /* Finitude */ break; } if (TrioIsNan(number)) { TrioWriteString(self, (flags & FLAGS_UPPER) ? NAN_UPPER : NAN_LOWER, flags, width, precision); return; } #endif /* defined(USE_NON_NUMBERS) */ /* Normal numbers */ digits = (flags & FLAGS_UPPER) ? internalDigitsUpper : internalDigitsLower; isHex = (base == BASE_HEX); dblBase = (double)base; if (precision == NO_PRECISION) precision = FLT_DIG; precisionPower = pow(10.0, (double)precision); isNegative = (number < 0.0); if (isNegative) number = -number; if ((flags & FLAGS_FLOAT_G) || isHex) { if ((number < 1.0e-4) || (number > precisionPower)) flags |= FLAGS_FLOAT_E; #if defined(TRIO_UNIX98) if (precision == 0) precision = 1; #endif } if (flags & FLAGS_FLOAT_E) { /* Scale the number */ workNumber = log10(number); if (workNumber == -HUGE_VAL) { exponent = 0; /* Undo setting */ if (flags & FLAGS_FLOAT_G) flags &= ~FLAGS_FLOAT_E; } else { exponent = (int)floor(workNumber); number /= pow(10.0, (double)exponent); isExponentNegative = (exponent < 0); uExponent = (isExponentNegative) ? -exponent : exponent; /* No thousand separators */ flags &= ~FLAGS_QUOTE; } } /* * Truncated number. * * precision is number of significant digits for FLOAT_G * and number of fractional digits for others */ integerDigits = (floor(number) > DBL_EPSILON) ? 1 + (int)log10(floor(number)) : 1; fractionDigits = (flags & FLAGS_FLOAT_G) ? precision - integerDigits : precision; number = floor(0.5 + number * pow(10.0, (double)fractionDigits)); if ((int)log10(number) + 1 > integerDigits + fractionDigits) { /* Adjust if number was rounded up one digit (ie. 99 to 100) */ integerDigits++; } /* Build the fraction part */ numberPointer = &numberBuffer[sizeof(numberBuffer) - 1]; *numberPointer = NIL; onlyzero = TRUE; for (i = 0; i < fractionDigits; i++) { *(--numberPointer) = digits[(int)fmod(number, dblBase)]; number = floor(number / dblBase); if((set_precision == NO_PRECISION) || (flags & FLAGS_ALTERNATIVE)) { /* Prune trailing zeroes */ if (numberPointer[0] != digits[0]) onlyzero = FALSE; else if (onlyzero && (numberPointer[0] == digits[0])) numberPointer++; } else onlyzero = FALSE; } /* Insert decimal point */ if ((flags & FLAGS_ALTERNATIVE) || ((fractionDigits > 0) && !onlyzero)) { i = StrLength(internalDecimalPoint); while (i> 0) { *(--numberPointer) = internalDecimalPoint[--i]; } } /* Insert the integer part and thousand separators */ charsPerThousand = (int)internalGrouping[0]; groupingIndex = 1; for (i = 1; i < integerDigits + 1; i++) { *(--numberPointer) = digits[(int)fmod(number, dblBase)]; number = floor(number / dblBase); if (number < DBL_EPSILON) break; if ((i > 0) && ((flags & (FLAGS_FLOAT_E | FLAGS_QUOTE)) == FLAGS_QUOTE) && (charsPerThousand != NO_GROUPING) && (i % charsPerThousand == 0)) { /* * We are building the number from the least significant * to the most significant digit, so we have to copy the * thousand separator backwards */ length = StrLength(internalThousandSeparator); integerDigits += length; if (((int)(numberPointer - numberBuffer) - length) > 0) { work = &internalThousandSeparator[length - 1]; while (length-- > 0) *(--numberPointer) = *work--; } /* Advance to next grouping number */ if (charsPerThousand != NO_GROUPING) { switch (internalGrouping[groupingIndex]) { case CHAR_MAX: /* Disable grouping */ charsPerThousand = NO_GROUPING; break; case 0: /* Repeat last group */ break; default: charsPerThousand = (int)internalGrouping[groupingIndex++]; break; } } } } /* Build the exponent */ exponentDigits = 0; if (flags & FLAGS_FLOAT_E) { exponentPointer = &exponentBuffer[sizeof(exponentBuffer) - 1]; *exponentPointer-- = NIL; do { *exponentPointer-- = digits[uExponent % base]; uExponent /= base; exponentDigits++; } while (uExponent); } /* * Calculate expected width. * sign + integer part + thousands separators + decimal point * + fraction + exponent */ expectedWidth = StrLength(numberPointer); if (isNegative || (flags & FLAGS_SHOWSIGN)) expectedWidth += sizeof("-") - 1; if (exponentDigits > 0) expectedWidth += exponentDigits + sizeof("E+") - 1; if (isExponentNegative) expectedWidth += sizeof('-') - 1; if (isHex) expectedWidth += sizeof("0X") - 1; /* Output prefixing */ if (flags & FLAGS_NILPADDING) { /* Leading zeros must be after sign */ if (isNegative) self->OutStream(self, '-'); else if (flags & FLAGS_SHOWSIGN) self->OutStream(self, '+'); if (isHex) { self->OutStream(self, '0'); self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x'); } if (!(flags & FLAGS_LEFTADJUST)) { for (i = expectedWidth; i < width; i++) { self->OutStream(self, '0'); } } } else { /* Leading spaces must be before sign */ if (!(flags & FLAGS_LEFTADJUST)) { for (i = expectedWidth; i < width; i++) { self->OutStream(self, CHAR_ADJUST); } } if (isNegative) self->OutStream(self, '-'); else if (flags & FLAGS_SHOWSIGN) self->OutStream(self, '+'); if (isHex) { self->OutStream(self, '0'); self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x'); } } /* Output number */ for (i = 0; numberPointer[i]; i++) { self->OutStream(self, numberPointer[i]); } /* Output exponent */ if (exponentDigits > 0) { self->OutStream(self, isHex ? ((flags & FLAGS_UPPER) ? 'P' : 'p') : ((flags & FLAGS_UPPER) ? 'E' : 'e')); self->OutStream(self, (isExponentNegative) ? '-' : '+'); for (i = 0; i < exponentDigits; i++) { self->OutStream(self, exponentPointer[i + 1]); } } /* Output trailing spaces */ if (flags & FLAGS_LEFTADJUST) { for (i = expectedWidth; i < width; i++) { self->OutStream(self, CHAR_ADJUST); } } } /************************************************************************* * TrioFormatProcess [private] */ static int TrioFormatProcess(trio_T *data, const char *format, parameter_T *parameters) { #if defined(USE_MULTIBYTE) int charlen; #endif int i; const char *string; void *pointer; unsigned long flags; int width; int precision; int base; int index; index = 0; i = 0; #if defined(USE_MULTIBYTE) mblen(NULL, 0); #endif while (format[index]) { #if defined(USE_MULTIBYTE) if (! isascii(format[index])) { charlen = mblen(&format[index], MB_LEN_MAX); while (charlen-- > 0) { data->OutStream(data, format[index++]); } continue; /* while */ } #endif /* defined(USE_MULTIBYTE) */ if (CHAR_IDENTIFIER == format[index]) { if (CHAR_IDENTIFIER == format[index + 1]) { data->OutStream(data, CHAR_IDENTIFIER); index += 2; } else { /* Skip the parameter entries */ while (parameters[i].type == FORMAT_PARAMETER) i++; flags = parameters[i].flags; /* Find width */ width = parameters[i].width; if (flags & FLAGS_WIDTH_PARAMETER) { /* Get width from parameter list */ width = (int)parameters[width].data.number.as_signed; } /* Find precision */ if (flags & FLAGS_PRECISION) { precision = parameters[i].precision; if (flags & FLAGS_PRECISION_PARAMETER) { /* Get precision from parameter list */ precision = (int)parameters[precision].data.number.as_signed; } } else { precision = NO_PRECISION; } /* Find base */ base = parameters[i].base; if (flags & FLAGS_BASE_PARAMETER) { /* Get base from parameter list */ base = (int)parameters[base].data.number.as_signed; } switch (parameters[i].type) { case FORMAT_CHAR: if (flags & FLAGS_QUOTE) data->OutStream(data, CHAR_QUOTE); if (! (flags & FLAGS_LEFTADJUST)) { while (--width > 0) data->OutStream(data, CHAR_ADJUST); } data->OutStream(data, (char)parameters[i].data.number.as_signed); if (flags & FLAGS_LEFTADJUST) { while(--width > 0) data->OutStream(data, CHAR_ADJUST); } if (flags & FLAGS_QUOTE) data->OutStream(data, CHAR_QUOTE); break; /* FORMAT_CHAR */ case FORMAT_INT: if (base == NO_BASE) base = BASE_DECIMAL; TrioWriteNumber(data, parameters[i].data.number.as_signed, flags, width, precision, base); break; /* FORMAT_INT */ case FORMAT_DOUBLE: TrioWriteDouble(data, parameters[i].data.longdoubleNumber, flags, width, precision, base); break; /* FORMAT_DOUBLE */ case FORMAT_STRING: TrioWriteString(data, parameters[i].data.string, flags, width, precision); break; /* FORMAT_STRING */ case FORMAT_POINTER: { reference_T reference; reference.data = data; reference.parameter = ¶meters[i]; trio_print_pointer(&reference, parameters[i].data.pointer); } break; /* FORMAT_POINTER */ case FORMAT_COUNT: pointer = parameters[i].data.pointer; if (NULL != pointer) { /* * C99 paragraph 7.19.6.1.8 says "the number of * characters written to the output stream so far by * this call", which is data->committed */ #if defined(QUALIFIER_SIZE_T) || defined(QUALIFIER_SIZE_T_UPPER) if (flags & FLAGS_SIZE_T) *(size_t *)pointer = (size_t)data->committed; else #endif #if defined(QUALIFIER_PTRDIFF_T) if (flags & FLAGS_PTRDIFF_T) *(ptrdiff_t *)pointer = (ptrdiff_t)data->committed; else #endif #if defined(QUALIFIER_INTMAX_T) if (flags & FLAGS_INTMAX_T) *(intmax_t *)pointer = (intmax_t)data->committed; else #endif if (flags & FLAGS_QUAD) { *(ULONGLONG int *)pointer = (ULONGLONG)data->committed; } else if (flags & FLAGS_LONG) { *(long int *)pointer = (long int)data->committed; } else if (flags & FLAGS_SHORT) { *(short int *)pointer = (short int)data->committed; } else { *(int *)pointer = (int)data->committed; } } break; /* FORMAT_COUNT */ case FORMAT_PARAMETER: break; /* FORMAT_PARAMETER */ #if defined(FORMAT_ERRNO) case FORMAT_ERRNO: string = StrError(parameters[i].data.errorNumber); if (string) { TrioWriteString(data, string, flags, width, precision); } else { data->OutStream(data, '#'); TrioWriteNumber(data, (SLONGEST)parameters[i].data.errorNumber, flags, width, precision, BASE_DECIMAL); } break; /* FORMAT_ERRNO */ #endif /* defined(FORMAT_ERRNO) */ #if defined(FORMAT_USER_DEFINED) case FORMAT_USER_DEFINED: { reference_T reference; userdef_T *def = NULL; if (parameters[i].user_name[0] == NIL) { /* Use handle */ if ((i > 0) || (parameters[i - 1].type == FORMAT_PARAMETER)) def = (userdef_T *)parameters[i - 1].data.pointer; } else { /* Look up namespace */ def = TrioFindNamespace(parameters[i].user_name, NULL); } if (def) { reference.data = data; reference.parameter = ¶meters[i]; def->callback(&reference); } } break; #endif /* defined(FORMAT_USER_DEFINED) */ default: break; } /* switch parameter type */ /* Prepare for next */ index = parameters[i].indexAfterSpecifier; i++; } } else /* not identifier */ { data->OutStream(data, format[index++]); } } return data->processed; } /************************************************************************* * TrioFormatRef [private] */ static int TrioFormatRef(reference_T *reference, const char *format, va_list arglist, void **argarray) { int status; parameter_T parameters[MAX_PARAMETERS]; status = TrioPreprocess(TYPE_PRINT, format, parameters, arglist, argarray); if (status < 0) return status; return TrioFormatProcess(reference->data, format, parameters); } /************************************************************************* * TrioFormat [private] * * Description: * This is the main engine for formatting output */ static int TrioFormat(void *destination, size_t destinationSize, void (*OutStream)(trio_T *, int), const char *format, va_list arglist, void **argarray) { int status; trio_T data; parameter_T parameters[MAX_PARAMETERS]; assert(VALID(OutStream)); assert(VALID(format)); assert(VALID(arglist) || VALID(argarray)); memset(&data, 0, sizeof(data)); data.OutStream = OutStream; data.location = destination; data.max = destinationSize; #if defined(USE_LOCALE) if (NULL == internalLocaleValues) { TrioSetLocale(); } #endif status = TrioPreprocess(TYPE_PRINT, format, parameters, arglist, argarray); if (status < 0) return status; return TrioFormatProcess(&data, format, parameters); } /************************************************************************* * TrioOutStreamFile [private] */ static void TrioOutStreamFile(trio_T *self, int output) { FILE *file = (FILE *)self->location; assert(VALID(self)); assert(VALID(file)); self->processed++; self->committed++; (void)fputc(output, file); } /************************************************************************* * TrioOutStreamFileDescriptor [private] */ static void TrioOutStreamFileDescriptor(trio_T *self, int output) { int fd = *((int *)self->location); char ch; assert(VALID(self)); ch = (char)output; (void)write(fd, &ch, sizeof(char)); self->processed++; self->committed++; } /************************************************************************* * TrioOutStreamString [private] */ static void TrioOutStreamString(trio_T *self, int output) { char **buffer = (char **)self->location; assert(VALID(self)); assert(VALID(buffer)); **buffer = (char)output; (*buffer)++; self->processed++; self->committed++; } /************************************************************************* * TrioOutStreamStringMax [private] */ static void TrioOutStreamStringMax(trio_T *self, int output) { char **buffer; assert(VALID(self)); buffer = (char **)self->location; assert(VALID(buffer)); if (self->processed < self->max) { **buffer = (char)output; (*buffer)++; self->committed++; } self->processed++; } /************************************************************************* * TrioOutStreamStringDynamic [private] */ #define DYNAMIC_START_SIZE 32 struct dynamicBuffer { char *buffer; size_t length; size_t allocated; }; static void TrioOutStreamStringDynamic(trio_T *self, int output) { struct dynamicBuffer *infop; assert(VALID(self)); assert(VALID(self->location)); infop = (struct dynamicBuffer *)self->location; if (infop->buffer == NULL) { /* Start with a reasonable size */ infop->buffer = (char *)malloc(DYNAMIC_START_SIZE); if (infop->buffer == NULL) return; /* fail */ infop->allocated = DYNAMIC_START_SIZE; self->processed = 0; self->committed = 0; } else if (self->committed + sizeof(NIL) >= infop->allocated) { char *newptr; /* Allocate increasing chunks */ newptr = (char *)realloc(infop->buffer, infop->allocated * 2); if (newptr == NULL) return; infop->buffer = newptr; infop->allocated *= 2; } infop->buffer[self->committed] = output; self->committed++; self->processed++; infop->length = self->committed; } /************************************************************************* * printf */ int trio_printf(const char *format, ...) { int status; va_list args; assert(VALID(format)); va_start(args, format); status = TrioFormat(stdout, 0, TrioOutStreamFile, format, args, NULL); va_end(args); return status; } int trio_vprintf(const char *format, va_list args) { assert(VALID(format)); assert(VALID(args)); return TrioFormat(stdout, 0, TrioOutStreamFile, format, args, NULL); } int trio_printfv(const char *format, void ** args) { assert(VALID(format)); assert(VALID(args)); return TrioFormat(stdout, 0, TrioOutStreamFile, format, NULL, args); } /************************************************************************* * fprintf */ int trio_fprintf(FILE *file, const char *format, ...) { int status; va_list args; assert(VALID(file)); assert(VALID(format)); va_start(args, format); status = TrioFormat(file, 0, TrioOutStreamFile, format, args, NULL); va_end(args); return status; } int trio_vfprintf(FILE *file, const char *format, va_list args) { assert(VALID(file)); assert(VALID(format)); assert(VALID(args)); return TrioFormat(file, 0, TrioOutStreamFile, format, args, NULL); } int trio_fprintfv(FILE *file, const char *format, void ** args) { assert(VALID(file)); assert(VALID(format)); assert(VALID(args)); return TrioFormat(file, 0, TrioOutStreamFile, format, NULL, args); } /************************************************************************* * dprintf */ int trio_dprintf(int fd, const char *format, ...) { int status; va_list args; assert(VALID(format)); va_start(args, format); status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, args, NULL); va_end(args); return status; } int trio_vdprintf(int fd, const char *format, va_list args) { assert(VALID(format)); assert(VALID(args)); return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, args, NULL); } int trio_dprintfv(int fd, const char *format, void **args) { assert(VALID(format)); assert(VALID(args)); return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, NULL, args); } /************************************************************************* * sprintf */ int trio_sprintf(char *buffer, const char *format, ...) { int status; va_list args; assert(VALID(buffer)); assert(VALID(format)); va_start(args, format); status = TrioFormat(&buffer, 0, TrioOutStreamString, format, args, NULL); *buffer = NIL; /* Terminate with NIL character */ va_end(args); return status; } int trio_vsprintf(char *buffer, const char *format, va_list args) { int status; assert(VALID(buffer)); assert(VALID(format)); assert(VALID(args)); status = TrioFormat(&buffer, 0, TrioOutStreamString, format, args, NULL); *buffer = NIL; return status; } int trio_sprintfv(char *buffer, const char *format, void **args) { int status; assert(VALID(buffer)); assert(VALID(format)); assert(VALID(args)); status = TrioFormat(&buffer, 0, TrioOutStreamString, format, NULL, args); *buffer = NIL; return status; } /************************************************************************* * snprintf */ int trio_snprintf(char *buffer, size_t bufferSize, const char *format, ...) { int status; va_list args; assert(VALID(buffer)); assert(VALID(format)); va_start(args, format); status = TrioFormat(&buffer, bufferSize > 0 ? bufferSize - 1 : 0, TrioOutStreamStringMax, format, args, NULL); if (bufferSize > 0) *buffer = NIL; va_end(args); return status; } int trio_vsnprintf(char *buffer, size_t bufferSize, const char *format, va_list args) { int status; assert(VALID(buffer)); assert(VALID(format)); assert(VALID(args)); status = TrioFormat(&buffer, bufferSize > 0 ? bufferSize - 1 : 0, TrioOutStreamStringMax, format, args, NULL); if (bufferSize > 0) *buffer = NIL; return status; } int trio_snprintfv(char *buffer, size_t bufferSize, const char *format, void **args) { int status; assert(VALID(buffer)); assert(VALID(format)); assert(VALID(args)); status = TrioFormat(&buffer, bufferSize > 0 ? bufferSize - 1 : 0, TrioOutStreamStringMax, format, NULL, args); if (bufferSize > 0) *buffer = NIL; return status; } /************************************************************************* * snprintfcat * Appends the new string to the buffer string overwriting the '\0' * character at the end of buffer. */ int trio_snprintfcat(char *buffer, size_t bufferSize, const char *format, ...) { int status; va_list args; size_t buf_len; va_start(args, format); assert(VALID(buffer)); assert(VALID(format)); buf_len = strlen(buffer); buffer = &buffer[buf_len]; status = TrioFormat(&buffer, bufferSize - 1 - buf_len, TrioOutStreamStringMax, format, args, NULL); va_end(args); *buffer = NIL; return status; } int trio_vsnprintfcat(char *buffer, size_t bufferSize, const char *format, va_list args) { int status; size_t buf_len; assert(VALID(buffer)); assert(VALID(format)); assert(VALID(args)); buf_len = strlen(buffer); buffer = &buffer[buf_len]; status = TrioFormat(&buffer, bufferSize - 1 - buf_len, TrioOutStreamStringMax, format, args, NULL); *buffer = NIL; return status; } /************************************************************************* * trio_aprintf */ /* Deprecated */ char * trio_aprintf(const char *format, ...) { va_list args; struct dynamicBuffer info; assert(VALID(format)); info.buffer = NULL; info.length = 0; info.allocated = 0; va_start(args, format); (void)TrioFormat(&info, 0, TrioOutStreamStringDynamic, format, args, NULL); va_end(args); if (info.length) { info.buffer[info.length] = NIL; /* we terminate this with a zero byte */ return info.buffer; } else return NULL; } /* Deprecated */ char * trio_vaprintf(const char *format, va_list args) { struct dynamicBuffer info; assert(VALID(format)); assert(VALID(args)); info.buffer = NULL; info.length = 0; info.allocated = 0; (void)TrioFormat(&info, 0, TrioOutStreamStringDynamic, format, args, NULL); if (info.length) { info.buffer[info.length] = NIL; /* we terminate this with a zero byte */ return info.buffer; } else return NULL; } int trio_asprintf(char **result, const char *format, ...) { va_list args; int status; struct dynamicBuffer info; assert(VALID(format)); info.buffer = NULL; info.length = 0; info.allocated = 0; va_start(args, format); status = TrioFormat(&info, 0, TrioOutStreamStringDynamic, format, args, NULL); va_end(args); if (status < 0) { *result = NULL; return status; } if (info.length == 0) { /* * If the length is zero, no characters have been written and therefore * no memory has been allocated, but we must to allocate and return an * empty string. */ info.buffer = (char *)malloc(sizeof(char)); if (info.buffer == NULL) { *result = NULL; return TRIO_ERROR_RETURN(TRIO_ENOMEM, 0); } } info.buffer[info.length] = NIL; /* we terminate this with a zero byte */ *result = info.buffer; return status; } int trio_vasprintf(char **result, const char *format, va_list args) { int status; struct dynamicBuffer info; assert(VALID(format)); assert(VALID(args)); info.buffer = NULL; info.length = 0; info.allocated = 0; status = TrioFormat(&info, 0, TrioOutStreamStringDynamic, format, args, NULL); if (status < 0) { *result = NULL; return status; } if (info.length == 0) { info.buffer = (char *)malloc(sizeof(char)); if (info.buffer == NULL) { *result = NULL; return TRIO_ERROR_RETURN(TRIO_ENOMEM, 0); } } info.buffer[info.length] = NIL; /* we terminate this with a zero byte */ *result = info.buffer; return status; } /************************************************************************* * * @CALLBACK * ************************************************************************/ /************************************************************************* * trio_register [public] */ void * trio_register(trio_callback_t callback, const char *name) { userdef_T *def; userdef_T *prev = NULL; if (callback == NULL) return NULL; if (name) { /* Bail out if namespace is too long */ if (StrLength(name) >= MAX_USER_NAME) return NULL; /* Bail out if namespace already is registered */ def = TrioFindNamespace(name, &prev); if (def) return NULL; } def = (userdef_T *)malloc(sizeof(userdef_T)); if (def) { if (name) { /* Link into internal list */ if (prev == NULL) internalUserDef = def; else prev->next = def; } /* Initialize */ def->callback = callback; def->name = (name == NULL) ? NULL : StrDuplicate(name); def->next = NULL; } return def; } /************************************************************************* * trio_unregister [public] */ void trio_unregister(void *handle) { userdef_T *self = (userdef_T *)handle; userdef_T *def; userdef_T *prev = NULL; assert(VALID(self)); if (self->name) { def = TrioFindNamespace(self->name, &prev); if (def) { if (prev == NULL) internalUserDef = NULL; else prev->next = def->next; } StrFree(self->name); } free(self); } /************************************************************************* * trio_get_format [public] */ const char * trio_get_format(void *ref) { assert(((reference_T *)ref)->parameter->type == FORMAT_USER_DEFINED); return (((reference_T *)ref)->parameter->user_data); } /************************************************************************* * trio_get_argument [public] */ void * trio_get_argument(void *ref) { assert(((reference_T *)ref)->parameter->type == FORMAT_USER_DEFINED); return ((reference_T *)ref)->parameter->data.pointer; } /************************************************************************* * trio_get_width / trio_set_width [public] */ int trio_get_width(void *ref) { return ((reference_T *)ref)->parameter->width; } void trio_set_width(void *ref, int width) { ((reference_T *)ref)->parameter->width = width; } /************************************************************************* * trio_get_precision / trio_set_precision [public] */ int trio_get_precision(void *ref) { return (((reference_T *)ref)->parameter->precision); } void trio_set_precision(void *ref, int precision) { ((reference_T *)ref)->parameter->precision = precision; } /************************************************************************* * trio_get_base / trio_set_base [public] */ int trio_get_base(void *ref) { return (((reference_T *)ref)->parameter->base); } void trio_set_base(void *ref, int base) { ((reference_T *)ref)->parameter->base = base; } /************************************************************************* * trio_get_long / trio_set_long [public] */ int trio_get_long(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_LONG); } void trio_set_long(void *ref, int is_long) { if (is_long) ((reference_T *)ref)->parameter->flags |= FLAGS_LONG; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_LONG; } /************************************************************************* * trio_get_longlong / trio_set_longlong [public] */ int trio_get_longlong(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_QUAD); } void trio_set_longlong(void *ref, int is_longlong) { if (is_longlong) ((reference_T *)ref)->parameter->flags |= FLAGS_QUAD; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_QUAD; } /************************************************************************* * trio_get_longdouble / trio_set_longdouble [public] */ int trio_get_longdouble(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_LONGDOUBLE); } void trio_set_longdouble(void *ref, int is_longdouble) { if (is_longdouble) ((reference_T *)ref)->parameter->flags |= FLAGS_LONGDOUBLE; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_LONGDOUBLE; } /************************************************************************* * trio_get_short / trio_set_short [public] */ int trio_get_short(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_SHORT); } void trio_set_short(void *ref, int is_short) { if (is_short) ((reference_T *)ref)->parameter->flags |= FLAGS_SHORT; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_SHORT; } /************************************************************************* * trio_get_shortshort / trio_set_shortshort [public] */ int trio_get_shortshort(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_SHORTSHORT); } void trio_set_shortshort(void *ref, int is_shortshort) { if (is_shortshort) ((reference_T *)ref)->parameter->flags |= FLAGS_SHORTSHORT; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_SHORTSHORT; } /************************************************************************* * trio_get_alternative / trio_set_alternative [public] */ int trio_get_alternative(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_ALTERNATIVE); } void trio_set_alternative(void *ref, int is_alternative) { if (is_alternative) ((reference_T *)ref)->parameter->flags |= FLAGS_ALTERNATIVE; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_ALTERNATIVE; } /************************************************************************* * trio_get_alignment / trio_set_alignment [public] */ int trio_get_alignment(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_LEFTADJUST); } void trio_set_alignment(void *ref, int is_leftaligned) { if (is_leftaligned) ((reference_T *)ref)->parameter->flags |= FLAGS_LEFTADJUST; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_LEFTADJUST; } /************************************************************************* * trio_get_spacing /trio_set_spacing [public] */ int trio_get_spacing(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_SPACE); } void trio_set_spacing(void *ref, int is_space) { if (is_space) ((reference_T *)ref)->parameter->flags |= FLAGS_SPACE; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_SPACE; } /************************************************************************* * trio_get_sign / trio_set_sign [public] */ int trio_get_sign(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_SHOWSIGN); } void trio_set_sign(void *ref, int is_sign) { if (is_sign) ((reference_T *)ref)->parameter->flags |= FLAGS_SHOWSIGN; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_SHOWSIGN; } /************************************************************************* * trio_get_padding / trio_set_padding [public] */ int trio_get_padding(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_NILPADDING); } void trio_set_padding(void *ref, int is_padding) { if (is_padding) ((reference_T *)ref)->parameter->flags |= FLAGS_NILPADDING; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_NILPADDING; } /************************************************************************* * trio_get_quote / trio_set_quote [public] */ int trio_get_quote(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_QUOTE); } void trio_set_quote(void *ref, int is_quote) { if (is_quote) ((reference_T *)ref)->parameter->flags |= FLAGS_QUOTE; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_QUOTE; } /************************************************************************* * trio_get_upper / trio_set_upper [public] */ int trio_get_upper(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_UPPER); } void trio_set_upper(void *ref, int is_upper) { if (is_upper) ((reference_T *)ref)->parameter->flags |= FLAGS_UPPER; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_UPPER; } /************************************************************************* * trio_get_largest / trio_set_largest [public] */ #if defined(TRIO_C99) int trio_get_largest(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_INTMAX_T); } void trio_set_largest(void *ref, int is_largest) { if (is_largest) ((reference_T *)ref)->parameter->flags |= FLAGS_INTMAX_T; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_INTMAX_T; } #endif /************************************************************************* * trio_get_ptrdiff / trio_set_ptrdiff [public] */ #if defined(TRIO_C99) int trio_get_ptrdiff(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_PTRDIFF_T); } void trio_set_ptrdiff(void *ref, int is_ptrdiff) { if (is_ptrdiff) ((reference_T *)ref)->parameter->flags |= FLAGS_PTRDIFF_T; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_PTRDIFF_T; } #endif /************************************************************************* * trio_get_size / trio_set_size [public] */ #if defined(TRIO_C99) int trio_get_size(void *ref) { return (((reference_T *)ref)->parameter->flags & FLAGS_SIZE_T); } void trio_set_size(void *ref, int is_size) { if (is_size) ((reference_T *)ref)->parameter->flags |= FLAGS_SIZE_T; else ((reference_T *)ref)->parameter->flags &= ~FLAGS_SIZE_T; } #endif /************************************************************************* * trio_print_int [public] */ void trio_print_int(void *ref, int number) { reference_T *self = (reference_T *)ref; TrioWriteNumber(self->data, (SLONGEST)number, self->parameter->flags, self->parameter->width, self->parameter->precision, self->parameter->base); } /************************************************************************* * trio_print_uint [public] */ void trio_print_uint(void *ref, unsigned int number) { reference_T *self = (reference_T *)ref; TrioWriteNumber(self->data, (SLONGEST)number, self->parameter->flags | FLAGS_UNSIGNED, self->parameter->width, self->parameter->precision, self->parameter->base); } /************************************************************************* * trio_print_double [public] */ void trio_print_double(void *ref, double number) { reference_T *self = (reference_T *)ref; TrioWriteDouble(self->data, number, self->parameter->flags, self->parameter->width, self->parameter->precision, self->parameter->base); } /************************************************************************* * trio_print_string [public] */ void trio_print_string(void *ref, char *string) { reference_T *self = (reference_T *)ref; TrioWriteString(self->data, string, self->parameter->flags, self->parameter->width, self->parameter->precision); } /************************************************************************* * trio_print_pointer [public] */ void trio_print_pointer(void *ref, void *pointer) { reference_T *self = (reference_T *)ref; unsigned long flags; LONGLONG number; if (NULL == pointer) { const char *string = null; while (*string) self->data->OutStream(self->data, *string++); } else { /* * The subtraction of the null pointer is a workaround * to avoid a compiler warning. The performance overhead * is negligible (and likely to be removed by an * optimising compiler). The (char *) casting is done * to please ANSI C++. */ number = (ULONGLONG)((char *)pointer - (char *)0); /* Shrink to size of pointer */ number &= (ULONGLONG)-1; flags = self->parameter->flags; flags |= (FLAGS_UNSIGNED | FLAGS_ALTERNATIVE | FLAGS_NILPADDING); TrioWriteNumber(self->data, number, flags, POINTER_WIDTH, NO_PRECISION, BASE_HEX); } } /************************************************************************* * trio_print_ref [public] */ int trio_print_ref(void *ref, const char *format, ...) { int status; va_list arglist; assert(VALID(format)); va_start(arglist, format); status = TrioFormatRef((reference_T *)ref, format, arglist, NULL); va_end(arglist); return status; } /************************************************************************* * trio_vprint_ref [public] */ int trio_vprint_ref(void *ref, const char *format, va_list arglist) { assert(VALID(format)); return TrioFormatRef((reference_T *)ref, format, arglist, NULL); } /************************************************************************* * trio_printv_ref [public] */ int trio_printv_ref(void *ref, const char *format, void **argarray) { assert(VALID(format)); return TrioFormatRef((reference_T *)ref, format, NULL, argarray); } /************************************************************************* * * @SCANNING * ************************************************************************/ /************************************************************************* * TrioSkipWhitespaces [private] */ static int TrioSkipWhitespaces(trio_T *self) { int ch; ch = self->current; while (isspace(ch)) { self->InStream(self, &ch); } return ch; } /************************************************************************* * TrioGetCharacterClass [private] * * FIXME: * multibyte */ static int TrioGetCharacterClass(const char *format, int *indexPointer, int *flagsPointer, int *characterclass) { int index = *indexPointer; int i; char ch; char range_begin; char range_end; *flagsPointer &= ~FLAGS_EXCLUDE; if (format[index] == QUALIFIER_CIRCUMFLEX) { *flagsPointer |= FLAGS_EXCLUDE; index++; } /* * If the ungroup character is at the beginning of the scanlist, * it will be part of the class, and a second ungroup character * must follow to end the group. */ if (format[index] == SPECIFIER_UNGROUP) { characterclass[(int)SPECIFIER_UNGROUP]++; index++; } /* * Minus is used to specify ranges. To include minus in the class, * it must be at the beginning of the list */ if (format[index] == QUALIFIER_MINUS) { characterclass[(int)QUALIFIER_MINUS]++; index++; } /* Collect characters */ for (ch = format[index]; ch != SPECIFIER_UNGROUP && ch != NIL; ch = format[++index]) { switch (ch) { case QUALIFIER_MINUS: /* Scanlist ranges */ /* * Both C99 and UNIX98 describes ranges as implementation- * defined. * * We support the following behaviour (although this may * change as we become wiser) * - only increasing ranges, ie. [a-b] but not [b-a] * - transitive ranges, ie. [a-b-c] == [a-c] * - trailing minus, ie. [a-] is interpreted as an 'a' * and a '-' * - duplicates (although we can easily convert these * into errors) */ range_begin = format[index - 1]; range_end = format[++index]; if (range_end == SPECIFIER_UNGROUP) { /* Trailing minus is included */ characterclass[(int)ch]++; ch = range_end; break; /* for */ } if (range_end == NIL) return TRIO_ERROR_RETURN(TRIO_EINVAL, index); if (range_begin > range_end) return TRIO_ERROR_RETURN(TRIO_ERANGE, index); for (i = (int)range_begin; i <= (int)range_end; i++) characterclass[i]++; ch = range_end; break; case QUALIFIER_COLON: /* Character class expressions */ if (StrEqualMax(CLASS_ALNUM, sizeof(CLASS_ALNUM) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isalnum(i)) characterclass[i]++; index += sizeof(CLASS_ALNUM) - 1; } else if (StrEqualMax(CLASS_ALPHA, sizeof(CLASS_ALPHA) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isalpha(i)) characterclass[i]++; index += sizeof(CLASS_ALPHA) - 1; } else if (StrEqualMax(CLASS_CNTRL, sizeof(CLASS_CNTRL) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (iscntrl(i)) characterclass[i]++; index += sizeof(CLASS_CNTRL) - 1; } else if (StrEqualMax(CLASS_DIGIT, sizeof(CLASS_DIGIT) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isdigit(i)) characterclass[i]++; index += sizeof(CLASS_DIGIT) - 1; } else if (StrEqualMax(CLASS_GRAPH, sizeof(CLASS_GRAPH) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isgraph(i)) characterclass[i]++; index += sizeof(CLASS_GRAPH) - 1; } else if (StrEqualMax(CLASS_LOWER, sizeof(CLASS_LOWER) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (islower(i)) characterclass[i]++; index += sizeof(CLASS_LOWER) - 1; } else if (StrEqualMax(CLASS_PRINT, sizeof(CLASS_PRINT) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isprint(i)) characterclass[i]++; index += sizeof(CLASS_PRINT) - 1; } else if (StrEqualMax(CLASS_PUNCT, sizeof(CLASS_PUNCT) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (ispunct(i)) characterclass[i]++; index += sizeof(CLASS_PUNCT) - 1; } else if (StrEqualMax(CLASS_SPACE, sizeof(CLASS_SPACE) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isspace(i)) characterclass[i]++; index += sizeof(CLASS_SPACE) - 1; } else if (StrEqualMax(CLASS_UPPER, sizeof(CLASS_UPPER) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isupper(i)) characterclass[i]++; index += sizeof(CLASS_UPPER) - 1; } else if (StrEqualMax(CLASS_XDIGIT, sizeof(CLASS_XDIGIT) - 1, &format[index])) { for (i = 0; i < MAX_CHARACTER_CLASS; i++) if (isxdigit(i)) characterclass[i]++; index += sizeof(CLASS_XDIGIT) - 1; } else { characterclass[(int)ch]++; } break; default: characterclass[(int)ch]++; break; } } return 0; } /************************************************************************* * TrioReadNumber [private] * * We implement our own number conversion in preference of strtol and * strtoul, because we must handle 'long long' and thousand separators. */ static BOOLEAN_T TrioReadNumber(trio_T *self, LONGEST *target, int flags, int width, int base) { LONGEST number = 0; int digit; int count; BOOLEAN_T isNegative = FALSE; int j; assert(VALID(self)); assert(VALID(self->InStream)); assert((base >= MIN_BASE && base <= MAX_BASE) || (base == NO_BASE)); TrioSkipWhitespaces(self); if (!(flags & FLAGS_UNSIGNED)) { /* Leading sign */ if (self->current == '+') { self->InStream(self, NULL); } else if (self->current == '-') { self->InStream(self, NULL); isNegative = TRUE; } } count = self->processed; if (flags & FLAGS_ALTERNATIVE) { switch (base) { case NO_BASE: case BASE_OCTAL: case BASE_HEX: case BASE_BINARY: if (self->current == '0') { self->InStream(self, NULL); if (self->current) { if ((base == BASE_HEX) && (toupper(self->current) == 'X')) { self->InStream(self, NULL); } else if ((base == BASE_BINARY) && (toupper(self->current) == 'B')) { self->InStream(self, NULL); } } } else return FALSE; break; default: break; } } while (((width == NO_WIDTH) || (self->processed - count < width)) && (! ((self->current == EOF) || isspace(self->current)))) { if (isascii(self->current)) { digit = internalDigitArray[self->current]; /* Abort if digit is not allowed in the specified base */ if ((digit == -1) || (digit >= base)) break; } else if (flags & FLAGS_QUOTE) { /* Compare with thousands separator */ for (j = 0; internalThousandSeparator[j] && self->current; j++) { if (internalThousandSeparator[j] != self->current) break; self->InStream(self, NULL); } if (internalThousandSeparator[j]) break; /* Mismatch */ else continue; /* Match */ } else break; number *= base; number += digit; self->InStream(self, NULL); } /* Was anything read at all? */ if (self->processed == count) return FALSE; if (target) *target = (isNegative) ? -number : number; return TRUE; } /************************************************************************* * TrioReadChar [private] */ static BOOLEAN_T TrioReadChar(trio_T *self, char *target, int width) { int i; assert(VALID(self)); assert(VALID(self->InStream)); for (i = 0; (self->current != EOF) && (i < width); i++) { if (target) target[i] = self->current; self->InStream(self, NULL); } return TRUE; } /************************************************************************* * TrioReadString [private] */ static BOOLEAN_T TrioReadString(trio_T *self, char *target, int flags, int width) { int i; char ch; LONGEST number; assert(VALID(self)); assert(VALID(self->InStream)); TrioSkipWhitespaces(self); /* * Continue until end of string is reached, a whitespace is encountered, * or width is exceeded */ for (i = 0; ((width == NO_WIDTH) || (i < width)) && (! ((self->current == EOF) || isspace(self->current))); i++) { ch = self->current; if ((flags & FLAGS_ALTERNATIVE) && (ch == CHAR_BACKSLASH)) { self->InStream(self, NULL); switch (self->current) { case '\\': ch = '\\'; break; case 'a': ch = '\a'; break; case 'b': ch = '\b'; break; case 'f': ch = '\f'; break; case 'n': ch = '\n'; break; case 'r': ch = '\r'; break; case 't': ch = '\t'; break; case 'v': ch = '\v'; break; default: if (isdigit(self->current)) { /* Read octal number */ if (!TrioReadNumber(self, &number, 0, 3, BASE_OCTAL)) return FALSE; ch = (char)number; } else if (toupper(self->current) == 'X') { /* Read hexadecimal number */ self->InStream(self, NULL); if (!TrioReadNumber(self, &number, 0, 2, BASE_HEX)) return FALSE; ch = (char)number; } else { ch = self->current; } break; } } if (target) target[i] = ch; self->InStream(self, NULL); } if (target) target[i] = NIL; return TRUE; } /************************************************************************* * TrioReadGroup [private] * * FIXME: characterclass does not work with multibyte characters */ static BOOLEAN_T TrioReadGroup(trio_T *self, char *target, int *characterclass, int flags, int width) { int ch; int i; assert(VALID(self)); assert(VALID(self->InStream)); ch = self->current; for (i = 0; ((width == NO_WIDTH) || (i < width)) && (! ((ch == EOF) || (((flags & FLAGS_EXCLUDE) != 0) ^ (characterclass[ch] == 0)))); i++) { if (target) target[i] = (char)ch; self->InStream(self, &ch); } if (target) target[i] = NIL; return TRUE; } /************************************************************************* * TrioReadDouble [private] * * FIXME: * add hex-float format * add long double */ static BOOLEAN_T TrioReadDouble(trio_T *self, double *target, int flags, int width) { int ch; char doubleString[512] = ""; int index = 0; int start; int j; if ((width == NO_WIDTH) || (width > (int)sizeof(doubleString) - 1)) width = sizeof(doubleString) - 1; TrioSkipWhitespaces(self); /* * Read entire double number from stream. StrToDouble requires a * string as input, but InStream can be anything, so we have to * collect all characters. */ ch = self->current; if ((ch == '+') || (ch == '-')) { doubleString[index++] = ch; self->InStream(self, &ch); width--; } start = index; #if defined(USE_NON_NUMBERS) switch (ch) { case 'n': case 'N': /* Not-a-number */ if (index != 0) break; /* FALLTHROUGH */ case 'i': case 'I': /* Infinity */ while (isalpha(ch) && (index - start < width)) { doubleString[index++] = ch; self->InStream(self, &ch); } doubleString[index] = NIL; /* Case insensitive string comparison */ if (StrEqual(&doubleString[start], INFINITE_UPPER) || StrEqual(&doubleString[start], LONG_INFINITE_UPPER)) { *target = ((start == 1 && doubleString[0] == '-')) ? -HUGE_VAL : HUGE_VAL; return TRUE; } if (StrEqual(doubleString, NAN_LOWER)) { /* NaN must not have a preceeding + nor - */ *target = NAN; return TRUE; } return FALSE; default: break; } #endif /* defined(USE_NON_NUMBERS) */ while ((ch != EOF) && (index - start < width)) { /* Integer part */ if (isdigit(ch)) { doubleString[index++] = ch; self->InStream(self, &ch); } else if (flags & FLAGS_QUOTE) { /* Compare with thousands separator */ for (j = 0; internalThousandSeparator[j] && self->current; j++) { if (internalThousandSeparator[j] != self->current) break; self->InStream(self, &ch); } if (internalThousandSeparator[j]) break; /* Mismatch */ else continue; /* Match */ } else break; /* while */ } if (ch == '.') { /* Decimal part */ doubleString[index++] = ch; self->InStream(self, &ch); while (isdigit(ch) && (index - start < width)) { doubleString[index++] = ch; self->InStream(self, &ch); } if ((ch == 'e') || (ch == 'E')) { /* Exponent */ doubleString[index++] = ch; self->InStream(self, &ch); if ((ch == '+') || (ch == '-')) { doubleString[index++] = ch; self->InStream(self, &ch); } while (isdigit(ch) && (index - start < width)) { doubleString[index++] = ch; self->InStream(self, &ch); } } } if ((index == start) || (*doubleString == NIL)) return FALSE; if (flags & FLAGS_LONGDOUBLE) /* *longdoublePointer = StrToLongDouble()*/; else { *target = StrToDouble(doubleString, NULL); } return TRUE; } /************************************************************************* * TrioReadPointer [private] */ static BOOLEAN_T TrioReadPointer(trio_T *self, void **target, int flags) { LONGEST number; char buffer[sizeof(null)]; flags |= (FLAGS_UNSIGNED | FLAGS_ALTERNATIVE | FLAGS_NILPADDING); if (TrioReadNumber(self, &number, flags, POINTER_WIDTH, BASE_HEX)) { /* * The strange assignment of number is a workaround for a compiler * warning */ if (target) *target = (char *)0 + number; return TRUE; } else if (TrioReadString(self, (flags & FLAGS_IGNORE) ? NULL : buffer, 0, sizeof(null) - 1)) { if (StrEqualCase(buffer, null)) { if (target) *target = NULL; return TRUE; } } return FALSE; } /************************************************************************* * TrioScan [private] */ static int TrioScan(const void *source, size_t sourceSize, void (*InStream)(trio_T *, int *), const char *format, va_list arglist, void **argarray) { #if defined(USE_MULTIBYTE) int charlen; #endif int status; int assignment; parameter_T parameters[MAX_PARAMETERS]; trio_T internalData; trio_T *data; int ch; int cnt; int index; /* Index of format string */ int i; /* Index of current parameter */ int flags; int width; int base; void *pointer; assert(VALID(InStream)); assert(VALID(format)); assert(VALID(arglist) || VALID(argarray)); memset(&internalData, 0, sizeof(internalData)); data = &internalData; data->InStream = InStream; data->location = source; data->max = sourceSize; #if defined(USE_LOCALE) if (NULL == internalLocaleValues) { TrioSetLocale(); } #endif if (internalDigitsUnconverted) { memset(internalDigitArray, -1, sizeof(internalDigitArray)); for (i = 0; i < (int)sizeof(internalDigitsLower) - 1; i++) { internalDigitArray[(int)internalDigitsLower[i]] = i; internalDigitArray[(int)internalDigitsUpper[i]] = i; } internalDigitsUnconverted = FALSE; } status = TrioPreprocess(TYPE_SCAN, format, parameters, arglist, argarray); if (status < 0) return status; assignment = 0; i = 0; index = 0; data->InStream(data, &ch); #if defined(USE_MULTIBYTE) mblen(NULL, 0); #endif while (format[index]) { #if defined(USE_MULTIBYTE) if (! isascii(format[index])) { charlen = mblen(&format[index], MB_LEN_MAX); /* Compare multibyte characters in format string */ for (cnt = 0; cnt < charlen - 1; cnt++) { if (ch != format[index + cnt]) { return TRIO_ERROR_RETURN(TRIO_EINVAL, index); } data->InStream(data, &ch); } continue; /* while */ } #endif /* defined(USE_MULTIBYTE) */ if (EOF == ch) return EOF; if (CHAR_IDENTIFIER == format[index]) { if (CHAR_IDENTIFIER == format[index + 1]) { /* Two % in format matches one % in input stream */ if (CHAR_IDENTIFIER == ch) { data->InStream(data, &ch); index += 2; continue; /* while format chars left */ } else return TRIO_ERROR_RETURN(TRIO_EINVAL, index); } /* Skip the parameter entries */ while (parameters[i].type == FORMAT_PARAMETER) i++; flags = parameters[i].flags; /* Find width */ width = parameters[i].width; if (flags & FLAGS_WIDTH_PARAMETER) { /* Get width from parameter list */ width = (int)parameters[width].data.number.as_signed; } /* Find base */ base = parameters[i].base; if (flags & FLAGS_BASE_PARAMETER) { /* Get base from parameter list */ base = (int)parameters[base].data.number.as_signed; } switch (parameters[i].type) { case FORMAT_INT: { LONGEST number; if (0 == base) base = BASE_DECIMAL; if (!TrioReadNumber(data, &number, flags, width, base)) return assignment; assignment++; if (!(flags & FLAGS_IGNORE)) { pointer = parameters[i].data.pointer; #if defined(QUALIFIER_SIZE_T) || defined(QUALIFIER_SIZE_T_UPPER) if (flags & FLAGS_SIZE_T) *(size_t *)pointer = (size_t)number; else #endif #if defined(QUALIFIER_PTRDIFF_T) if (flags & FLAGS_PTRDIFF_T) *(ptrdiff_t *)pointer = (ptrdiff_t)number; else #endif #if defined(QUALIFIER_INTMAX_T) if (flags & FLAGS_INTMAX_T) *(intmax_t *)pointer = (intmax_t)number; else #endif if (flags & FLAGS_QUAD) *(ULONGLONG int *)pointer = (ULONGLONG)number; else if (flags & FLAGS_LONG) *(long int *)pointer = (long int)number; else if (flags & FLAGS_SHORT) *(short int *)pointer = (short int)number; else *(int *)pointer = (int)number; } } break; /* FORMAT_INT */ case FORMAT_STRING: if (!TrioReadString(data, (flags & FLAGS_IGNORE) ? NULL : parameters[i].data.string, flags, width)) return assignment; assignment++; break; /* FORMAT_STRING */ case FORMAT_DOUBLE: if (!TrioReadDouble(data, (flags & FLAGS_IGNORE) ? NULL : parameters[i].data.doublePointer, flags, width)) return assignment; assignment++; break; /* FORMAT_DOUBLE */ case FORMAT_GROUP: { int characterclass[MAX_CHARACTER_CLASS + 1]; int rc; index += 2; memset(characterclass, 0, sizeof(characterclass)); rc = TrioGetCharacterClass(format, &index, &flags, characterclass); if (rc < 0) return rc; if (!TrioReadGroup(data, (flags & FLAGS_IGNORE) ? NULL : parameters[i].data.string, characterclass, flags, parameters[i].width)) return assignment; assignment++; } break; /* FORMAT_GROUP */ case FORMAT_COUNT: pointer = parameters[i].data.pointer; if (NULL != pointer) { #if defined(QUALIFIER_SIZE_T) || defined(QUALIFIER_SIZE_T_UPPER) if (flags & FLAGS_SIZE_T) *(size_t *)pointer = (size_t)data->committed; else #endif #if defined(QUALIFIER_PTRDIFF_T) if (flags & FLAGS_PTRDIFF_T) *(ptrdiff_t *)pointer = (ptrdiff_t)data->committed; else #endif #if defined(QUALIFIER_INTMAX_T) if (flags & FLAGS_INTMAX_T) *(intmax_t *)pointer = (intmax_t)data->committed; else #endif if (flags & FLAGS_QUAD) { *(ULONGLONG int *)pointer = (ULONGLONG)data->committed; } else if (flags & FLAGS_LONG) { *(long int *)pointer = (long int)data->committed; } else if (flags & FLAGS_SHORT) { *(short int *)pointer = (short int)data->committed; } else { *(int *)pointer = (int)data->committed; } } break; /* FORMAT_COUNT */ case FORMAT_CHAR: if (!TrioReadChar(data, (flags & FLAGS_IGNORE) ? NULL : parameters[i].data.string, (width == NO_WIDTH) ? 1 : width)) return assignment; assignment++; break; /* FORMAT_CHAR */ case FORMAT_POINTER: if (!TrioReadPointer(data, (flags & FLAGS_IGNORE) ? NULL : (void **)parameters[i].data.pointer, flags)) return assignment; assignment++; break; /* FORMAT_POINTER */ case FORMAT_PARAMETER: break; /* FORMAT_PARAMETER */ default: return TRIO_ERROR_RETURN(TRIO_EINVAL, index); } ch = data->current; index = parameters[i].indexAfterSpecifier; i++; } else /* Not an % identifier */ { if (isspace((int)format[index])) { /* Whitespaces may match any amount of whitespaces */ ch = TrioSkipWhitespaces(data); } else if (ch == format[index]) { data->InStream(data, &ch); } else return TRIO_ERROR_RETURN(TRIO_EINVAL, index); index++; } } return assignment; } /************************************************************************* * TrioInStreamFile [private] */ static void TrioInStreamFile(trio_T *self, int *intPointer) { FILE *file = (FILE *)self->location; assert(VALID(self)); assert(VALID(file)); self->current = fgetc(file); self->processed++; self->committed++; if (VALID(intPointer)) { *intPointer = self->current; } } /************************************************************************* * TrioInStreamFileDescriptor [private] */ static void TrioInStreamFileDescriptor(trio_T *self, int *intPointer) { int fd = *((int *)self->location); int size; unsigned char input; assert(VALID(self)); size = read(fd, &input, sizeof(char)); self->current = (size == 0) ? EOF : input; self->processed++; self->committed++; if (VALID(intPointer)) { *intPointer = self->current; } } /************************************************************************* * TrioInStreamString [private] */ static void TrioInStreamString(trio_T *self, int *intPointer) { unsigned char **buffer; assert(VALID(self)); assert(VALID(self->InStream)); assert(VALID(self->location)); buffer = (unsigned char **)self->location; self->current = (*buffer)[0]; if (self->current == NIL) self->current = EOF; (*buffer)++; self->processed++; self->committed++; if (VALID(intPointer)) { *intPointer = self->current; } } /************************************************************************* * scanf */ int trio_scanf(const char *format, ...) { int status; va_list args; assert(VALID(format)); va_start(args, format); status = TrioScan(stdin, 0, TrioInStreamFile, format, args, NULL); va_end(args); return status; } int trio_vscanf(const char *format, va_list args) { assert(VALID(format)); assert(VALID(args)); return TrioScan(stdin, 0, TrioInStreamFile, format, args, NULL); } int trio_scanfv(const char *format, void **args) { assert(VALID(format)); assert(VALID(args)); return TrioScan(stdin, 0, TrioInStreamFile, format, NULL, args); } /************************************************************************* * fscanf */ int trio_fscanf(FILE *file, const char *format, ...) { int status; va_list args; assert(VALID(file)); assert(VALID(format)); va_start(args, format); status = TrioScan(file, 0, TrioInStreamFile, format, args, NULL); va_end(args); return status; } int trio_vfscanf(FILE *file, const char *format, va_list args) { assert(VALID(file)); assert(VALID(format)); assert(VALID(args)); return TrioScan(file, 0, TrioInStreamFile, format, args, NULL); } int trio_fscanfv(FILE *file, const char *format, void **args) { assert(VALID(file)); assert(VALID(format)); assert(VALID(args)); return TrioScan(file, 0, TrioInStreamFile, format, NULL, args); } /************************************************************************* * dscanf */ int trio_dscanf(int fd, const char *format, ...) { int status; va_list args; assert(VALID(format)); va_start(args, format); status = TrioScan(&fd, 0, TrioInStreamFileDescriptor, format, args, NULL); va_end(args); return status; } int trio_vdscanf(int fd, const char *format, va_list args) { assert(VALID(format)); assert(VALID(args)); return TrioScan(&fd, 0, TrioInStreamFileDescriptor, format, args, NULL); } int trio_dscanfv(int fd, const char *format, void **args) { assert(VALID(format)); assert(VALID(args)); return TrioScan(&fd, 0, TrioInStreamFileDescriptor, format, NULL, args); } /************************************************************************* * sscanf */ int trio_sscanf(const char *buffer, const char *format, ...) { int status; va_list args; assert(VALID(buffer)); assert(VALID(format)); va_start(args, format); status = TrioScan(&buffer, 0, TrioInStreamString, format, args, NULL); va_end(args); return status; } int trio_vsscanf(const char *buffer, const char *format, va_list args) { assert(VALID(buffer)); assert(VALID(format)); assert(VALID(args)); return TrioScan(&buffer, 0, TrioInStreamString, format, args, NULL); } int trio_sscanfv(const char *buffer, const char *format, void **args) { assert(VALID(buffer)); assert(VALID(format)); assert(VALID(args)); return TrioScan(&buffer, 0, TrioInStreamString, format, NULL, args); } libwmf-0.2.8.4/src/extra/trio/strio.c0000644000077100007710000002711607307634746016725 0ustar fjffjf00000000000000/************************************************************************* * * $Id: strio.c,v 1.1 2001/06/07 08:23:02 fjfranklin Exp $ * * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************/ /* * TODO * - StrToLongDouble */ static const char rcsid[] = "@(#)$Id: strio.c,v 1.1 2001/06/07 08:23:02 fjfranklin Exp $"; #if defined(unix) || defined(__xlC__) # define PLATFORM_UNIX #elif defined(WIN32) || defined(_WIN32) # define PLATFORM_WIN32 #elif defined(AMIGA) && defined(__GNUC__) # define PLATFORM_UNIX #endif #if defined(__STDC__) && (__STDC_VERSION__ >= 199901L) # define TRIO_C99 #endif #include "strio.h" #include #include #include #include #include #ifndef DEBUG # define NDEBUG #endif #include #ifndef NULL # define NULL 0 #endif #define NIL ((char)0) #ifndef FALSE # define FALSE (1 == 0) # define TRUE (! FALSE) #endif #define VALID(x) (NULL != (x)) #define INVALID(x) (NULL == (x)) #if defined(PLATFORM_UNIX) # define USE_STRCASECMP # define USE_STRNCASECMP # define USE_STRERROR #elif defined(PLATFORM_WIN32) # define USE_STRCMPI #endif /************************************************************************* * StrAppendMax */ char *StrAppendMax(char *target, size_t max, const char *source) { assert(VALID(target)); assert(VALID(source)); assert(max > 0); max -= StrLength(target) + 1; return (max > 0) ? strncat(target, source, max) : target; } /************************************************************************* * StrCopyMax */ char *StrCopyMax(char *target, size_t max, const char *source) { assert(VALID(target)); assert(VALID(source)); assert(max > 0); /* Includes != 0 */ target = strncpy(target, source, max - 1); target[max - 1] = (char)0; return target; } /************************************************************************* * StrDuplicate */ char *StrDuplicate(const char *source) { char *target; assert(VALID(source)); target = (char *)malloc(StrLength(source) + 1); if (target) { StrCopy(target, source); } return target; } /************************************************************************* * StrDuplicateMax */ char *StrDuplicateMax(const char *source, size_t max) { char *target; size_t len; assert(VALID(source)); assert(max > 0); /* Make room for string plus a terminating zero */ len = StrLength(source) + 1; if (len > max) { len = max; } target = (char *)malloc(len); if (target) { StrCopyMax(target, len, source); } return target; } /************************************************************************* * StrEqual */ int StrEqual(const char *first, const char *second) { assert(VALID(first)); assert(VALID(second)); if (VALID(first) && VALID(second)) { #if defined(USE_STRCASECMP) return (0 == strcasecmp(first, second)); #elif defined(USE_STRCMPI) return (0 == strcmpi(first, second)); #else while ((*first != NIL) && (*second != NIL)) { if (toupper(*first) != toupper(*second)) { break; } first++; second++; } return ((*first == NIL) && (*second == NIL)); #endif } return FALSE; } /************************************************************************* * StrEqualCase */ int StrEqualCase(const char *first, const char *second) { assert(VALID(first)); assert(VALID(second)); if (VALID(first) && VALID(second)) { return (0 == strcmp(first, second)); } return FALSE; } /************************************************************************* * StrEqualCaseMax */ int StrEqualCaseMax(const char *first, size_t max, const char *second) { assert(VALID(first)); assert(VALID(second)); if (VALID(first) && VALID(second)) { return (0 == strncmp(first, second, max)); } return FALSE; } /************************************************************************* * StrEqualMax */ int StrEqualMax(const char *first, size_t max, const char *second) { assert(VALID(first)); assert(VALID(second)); if (VALID(first) && VALID(second)) { #if defined(USE_STRNCASECMP) return (0 == strncasecmp(first, second, max)); #else /* Not adequately tested yet */ size_t cnt = 0; while ((*first != NIL) && (*second != NIL) && (cnt <= max)) { if (toupper(*first) != toupper(*second)) { break; } first++; second++; cnt++; } return ((cnt == max) || ((*first == NIL) && (*second == NIL))); #endif } return FALSE; } /************************************************************************* * StrError */ const char *StrError(int errorNumber) { #if defined(USE_STRERROR) return strerror(errorNumber); #else return "unknown"; #endif } /************************************************************************* * StrFormatDate */ size_t StrFormatDateMax(char *target, size_t max, const char *format, const struct tm *datetime) { assert(VALID(target)); assert(VALID(format)); assert(VALID(datetime)); assert(max > 0); return strftime(target, max, format, datetime); } /************************************************************************* * StrHash */ unsigned long StrHash(const char *string, int type) { unsigned long value = 0L; char ch; assert(VALID(string)); switch (type) { case STRIO_HASH_PLAIN: while ( (ch = *string++) != NIL ) { value *= 31; value += (unsigned long)ch; } break; default: assert(FALSE); break; } return value; } /************************************************************************* * StrMatch */ int StrMatch(char *string, char *pattern) { assert(VALID(string)); assert(VALID(pattern)); for (; ('*' != *pattern); ++pattern, ++string) { if (NIL == *string) { return (NIL == *pattern); } if ((toupper(*string) != toupper(*pattern)) && ('?' != *pattern)) { return FALSE; } } /* two-line patch to prevent *too* much recursiveness: */ while ('*' == pattern[1]) pattern++; do { if ( StrMatch(string, &pattern[1]) ) { return TRUE; } } while (*string++); return FALSE; } /************************************************************************* * StrMatchCase */ int StrMatchCase(char *string, char *pattern) { assert(VALID(string)); assert(VALID(pattern)); for (; ('*' != *pattern); ++pattern, ++string) { if (NIL == *string) { return (NIL == *pattern); } if ((*string != *pattern) && ('?' != *pattern)) { return FALSE; } } /* two-line patch to prevent *too* much recursiveness: */ while ('*' == pattern[1]) pattern++; do { if ( StrMatchCase(string, &pattern[1]) ) { return TRUE; } } while (*string++); return FALSE; } /************************************************************************* * StrSpanFunction * * Untested */ size_t StrSpanFunction(char *source, int (*Function)(int)) { size_t count = 0; assert(VALID(source)); assert(VALID(Function)); while (*source != NIL) { if (Function(*source)) break; /* while */ source++; count++; } return count; } /************************************************************************* * StrSubstringMax */ char *StrSubstringMax(const char *string, size_t max, const char *find) { size_t count; size_t size; char *result = NULL; assert(VALID(string)); assert(VALID(find)); size = StrLength(find); if (size <= max) { for (count = 0; count <= max - size; count++) { if (StrEqualMax(find, size, &string[count])) { result = (char *)&string[count]; break; } } } return result; } /************************************************************************* * StrToDouble * * double ::= [ ] * ( | * | * ) * [ [ ] ] * number ::= 1*( ) * digit ::= ( '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ) * exponential ::= ( 'e' | 'E' ) * sign ::= ( '-' | '+' ) * decimal_point ::= '.' */ double StrToDouble(const char *source, const char **endp) { #if defined(TRIO_C99) return strtod(source, endp); #else /* Preliminary code */ int isNegative = FALSE; int isExponentNegative = FALSE; unsigned long integer = 0; unsigned long fraction = 0; unsigned long fracdiv = 1; unsigned long exponent = 0; double value = 0.0; /* First try hex-floats */ if ((source[0] == '0') && ((source[1] == 'x') || (source[1] == 'X'))) { source += 2; while (isxdigit((int)*source)) { integer *= 16; integer += (isdigit((int)*source) ? (*source - '0') : (isupper((int)*source) ? (*source - 'A') : (*source - 'a'))); source++; } if (*source == '.') { source++; while (isxdigit((int)*source)) { fraction *= 16; fraction += (isdigit((int)*source) ? (*source - '0') : (isupper((int)*source) ? (*source - 'A') : (*source - 'a'))); fracdiv *= 16; source++; } if ((*source == 'p') || (*source == 'P')) { source++; if ((*source == '+') || (*source == '-')) { isExponentNegative = (*source == '-'); source++; } while (isdigit((int)*source)) { exponent *= 10; exponent += (*source - '0'); source++; } } } } else /* Then try normal decimal floats */ { isNegative = (*source == '-'); /* Skip sign */ if ((*source == '+') || (*source == '-')) source++; /* Integer part */ while (isdigit((int)*source)) { integer *= 10; integer += (*source - '0'); source++; } if (*source == '.') { source++; /* skip decimal point */ while (isdigit((int)*source)) { fraction *= 10; fraction += (*source - '0'); fracdiv *= 10; source++; } } if ((*source == 'e') || (*source == 'E')) { source++; /* Skip exponential indicator */ isExponentNegative = (*source == '-'); if ((*source == '+') || (*source == '-')) source++; while (isdigit((int)*source)) { exponent *= 10; exponent += (*source - '0'); source++; } } } value = (double)integer; if (fraction != 0) { value += (double)fraction / (double)fracdiv; } if (exponent != 0) { if (isExponentNegative) value /= pow((double)10, (double)exponent); else value *= pow((double)10, (double)exponent); } if (isNegative) value = -value; if (endp) *endp = source; return value; #endif } /************************************************************************* * StrToFloat */ float StrToFloat(const char *source, const char **endp) { #if defined(TRIO_C99) return strtof(source, endp); #else return (float)StrToDouble(source, endp); #endif } /************************************************************************* * StrToUpper */ int StrToUpper(char *target) { int i = 0; assert(VALID(target)); while (NIL != *target) { *target = toupper(*target); target++; i++; } return i; } libwmf-0.2.8.4/src/extra/trio/trio.h0000644000077100007710000001264307365251534016540 0ustar fjffjf00000000000000/************************************************************************* * * $Id: trio.h,v 1.2 2001/10/23 11:24:12 fjfranklin Exp $ * * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************/ #ifndef TRIO_TRIO_H #define TRIO_TRIO_H #include #include #include /* * Use autoconf defines if present. Packages using trio must define * HAVE_CONFIG_H as a compiler option themselves. */ #if defined(HAVE_CONFIG_H) # include #endif #if !defined(WITHOUT_TRIO) /* * Error codes. * * Remember to add a textual description to trio_strerror. */ enum { TRIO_EOF = 1, TRIO_EINVAL = 2, TRIO_ETOOMANY = 3, TRIO_EDBLREF = 4, TRIO_EGAP = 5, TRIO_ENOMEM = 6, TRIO_ERANGE = 7, }; /* Error macros */ #define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF) #define TRIO_ERROR_POSITION(x) ((-(x)) >> 8) #define TRIO_ERROR_NAME(x) trio_strerror(x) const char *trio_strerror(int); /************************************************************************* * Print Functions */ int trio_printf(const char *format, ...); int trio_vprintf(const char *format, va_list args); int trio_printfv(const char *format, void **args); int trio_fprintf(FILE *file, const char *format, ...); int trio_vfprintf(FILE *file, const char *format, va_list args); int trio_fprintfv(FILE *file, const char *format, void **args); int trio_dprintf(int fd, const char *format, ...); int trio_vdprintf(int fd, const char *format, va_list args); int trio_dprintfv(int fd, const char *format, void **args); /* trio_sprintf(target, format, ...) * trio_snprintf(target, maxsize, format, ...) * * Build 'target' according to 'format' and succesive * arguments. This is equal to the sprintf() and * snprintf() functions. */ int trio_sprintf(char *buffer, const char *format, ...); int trio_vsprintf(char *buffer, const char *format, va_list args); int trio_sprintfv(char *buffer, const char *format, void **args); int trio_snprintf(char *buffer, size_t max, const char *format, ...); int trio_vsnprintf(char *buffer, size_t bufferSize, const char *format, va_list args); int trio_snprintfv(char *buffer, size_t bufferSize, const char *format, void **args); int trio_snprintfcat(char *buffer, size_t max, const char *format, ...); int trio_vsnprintfcat(char *buffer, size_t bufferSize, const char *format, va_list args); char *trio_aprintf(const char *format, ...); char *trio_vaprintf(const char *format, va_list args); int trio_asprintf(char **ret, const char *format, ...); int trio_vasprintf(char **ret, const char *format, va_list args); /************************************************************************* * Scan Functions */ int trio_scanf(const char *format, ...); int trio_vscanf(const char *format, va_list args); int trio_scanfv(const char *format, void **args); int trio_fscanf(FILE *file, const char *format, ...); int trio_vfscanf(FILE *file, const char *format, va_list args); int trio_fscanfv(FILE *file, const char *format, void **args); int trio_dscanf(int fd, const char *format, ...); int trio_vdscanf(int fd, const char *format, va_list args); int trio_dscanfv(int fd, const char *format, void **args); int trio_sscanf(const char *buffer, const char *format, ...); int trio_vsscanf(const char *buffer, const char *format, va_list args); int trio_sscanfv(const char *buffer, const char *format, void **args); /************************************************************************* * Renaming */ #ifdef TRIO_REPLACE_STDIO /* Replace the functions */ #ifndef HAVE_PRINTF # define printf trio_printf #endif #ifndef HAVE_VPRINTF # define vprintf trio_vprintf #endif #ifndef HAVE_FPRINTF # define fprintf trio_fprintf #endif #ifndef HAVE_VFPRINTF # define vfprintf trio_vfprintf #endif #ifndef HAVE_SPRINTF # define sprintf trio_sprintf #endif #ifndef HAVE_VSPRINTF # define vsprintf trio_vsprintf #endif #ifndef HAVE_SNPRINTF # define snprintf trio_snprintf #endif #ifndef HAVE_VSNPRINTF # define vsnprintf trio_vsnprintf #endif #ifndef HAVE_SCANF # define scanf trio_scanf #endif #ifndef HAVE_VSCANF # define vscanf trio_vscanf #endif #ifndef HAVE_FSCANF # define fscanf trio_fscanf #endif #ifndef HAVE_VFSCANF # define vfscanf trio_vfscanf #endif #ifndef HAVE_SSCANF # define sscanf trio_sscanf #endif #ifndef HAVE_VSSCANF # define vsscanf trio_vsscanf #endif /* These aren't stdio functions, but we make them look similar */ #define dprintf trio_dprintf #define vdprintf trio_vdprintf #define aprintf trio_aprintf #define vaprintf trio_vaprintf #define asprintf trio_asprintf #define vasprintf trio_vasprintf #define dscanf trio_dscanf #define vdscanf trio_vdscanf #endif /* strio compatible names */ #define StrScan trio_sscanf #define StrFormat trio_sprintf #define StrFormatMax trio_snprintf #define StrFormatAlloc trio_aprintf #define StrFormatAppendMax trio_snprintfcat #endif /* TRIO_IGNORE */ #endif /* TRIO_TRIO_H */ libwmf-0.2.8.4/src/extra/trio/triop.h0000644000077100007710000000731407307634746016725 0ustar fjffjf00000000000000/************************************************************************* * * $Id: triop.h,v 1.1 2001/06/07 08:23:02 fjfranklin Exp $ * * Copyright (C) 2000 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************ * * Private functions, types, etc. used for callback functions. * * The ref pointer is an opaque type and should remain as such. * Private data must only be accessible through the getter and * setter functions. * ************************************************************************/ #ifndef TRIO_TRIOP_H #define TRIO_TRIOP_H #if defined(__STDC__) && (__STDC_VERSION__ >= 199901L) # define TRIO_C99 #endif #define TRIO_BSD #define TRIO_GNU #define TRIO_MISC #define TRIO_UNIX98 #define TRIO_EXTENSION #define TRIO_ERRORS typedef int (*trio_callback_t)(void *ref); void *trio_register(trio_callback_t callback, const char *name); void trio_unregister(void *handle); const char *trio_get_format(void *ref); void *trio_get_argument(void *ref); /* Modifiers */ int trio_get_width(void *ref); void trio_set_width(void *ref, int width); int trio_get_precision(void *ref); void trio_set_precision(void *ref, int precision); int trio_get_base(void *ref); void trio_set_base(void *ref, int base); int trio_get_padding(void *ref); void trio_set_padding(void *ref, int is_padding); int trio_get_short(void *ref); /* h */ void trio_set_shortshort(void *ref, int is_shortshort); int trio_get_shortshort(void *ref); /* hh */ void trio_set_short(void *ref, int is_short); int trio_get_long(void *ref); /* l */ void trio_set_long(void *ref, int is_long); int trio_get_longlong(void *ref); /* ll */ void trio_set_longlong(void *ref, int is_longlong); int trio_get_longdouble(void *ref); /* L */ void trio_set_longdouble(void *ref, int is_longdouble); int trio_get_alternative(void *ref); /* # */ void trio_set_alternative(void *ref, int is_alternative); int trio_get_alignment(void *ref); /* - */ void trio_set_alignment(void *ref, int is_leftaligned); int trio_get_spacing(void *ref); /* (space) */ void trio_set_spacing(void *ref, int is_space); int trio_get_sign(void *ref); /* + */ void trio_set_sign(void *ref, int is_showsign); int trio_get_quote(void *ref); /* ' */ void trio_set_quote(void *ref, int is_quote); int trio_get_upper(void *ref); void trio_set_upper(void *ref, int is_upper); #if defined(TRIO_C99) int trio_get_largest(void *ref); /* j */ void trio_set_largest(void *ref, int is_largest); int trio_get_ptrdiff(void *ref); /* t */ void trio_set_ptrdiff(void *ref, int is_ptrdiff); int trio_get_size(void *ref); /* z / Z */ void trio_set_size(void *ref, int is_size); #endif /* Printing */ int trio_print_ref(void *ref, const char *format, ...); int trio_vprint_ref(void *ref, const char *format, va_list args); int trio_printv_ref(void *ref, const char *format, void **args); void trio_print_int(void *ref, int number); void trio_print_uint(void *ref, unsigned int number); /* void trio_print_long(void *ref, long number); */ /* void trio_print_ulong(void *ref, unsigned long number); */ void trio_print_double(void *ref, double number); void trio_print_string(void *ref, char *string); void trio_print_pointer(void *ref, void *pointer); #endif /* TRIO_TRIOP_H */ libwmf-0.2.8.4/src/extra/trio/strio.h0000644000077100007710000001444207307634746016730 0ustar fjffjf00000000000000/************************************************************************* * * $Id: strio.h,v 1.1 2001/06/07 08:23:02 fjfranklin Exp $ * * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************/ #ifndef TRIO_STRIO_H #define TRIO_STRIO_H #include #include #include #ifndef DEBUG # define NDEBUG #endif #include /* * StrAppend(target, source) * StrAppendMax(target, maxsize, source) * * Append 'source' to 'target' * * target = StrAlloc(size) * * Allocate a new string * * StrContains(target, substring) * * Find out if the string 'substring' is * contained in the string 'target' * * StrCopy(target, source) * StrCopyMax(target, maxsize, source) * * Copy 'source' to 'target' * * target = StrDuplicate(source) * target = StrDuplicateMax(source, maxsize) * * Allocate and copy 'source' to 'target' * * StrEqual(first, second) * StrEqualMax(first, maxsize, second) * * Compare if 'first' is equal to 'second'. * Case-independent. * * StrEqualCase(first, second) * StrEqualCaseMax(first, maxsize, second) * * Compare if 'first' is equal to 'second' * Case-dependent. Please note that the use of the * word 'case' has the opposite meaning as that of * strcasecmp(). * * StrFormat(target, format, ...) * StrFormatMax(target, maxsize, format, ...) * * Build 'target' according to 'format' and succesive * arguments. This is equal to the sprintf() and * snprintf() functions. * * StrFormatDate(target, format, ...) * * StrFree(target) * * De-allocates a string * * StrHash(string, type) * * Calculates the hash value of 'string' based on the * 'type'. * * StrIndex(target, character) * StrIndexLast(target, character) * * Find the first/last occurrence of 'character' in * 'target' * * StrLength(target) * * Return the length of 'target' * * StrMatch(string, pattern) * StrMatchCase(string, pattern) * * Find 'pattern' within 'string'. 'pattern' may contain * wildcards such as * (asterics) and ? (question mark) * which matches zero or more characters and exactly * on character respectively * * StrScan(source, format, ...) * * Equal to sscanf() * * StrSubstring(target, substring) * * Find the first occurrence of the string 'substring' * within the string 'target' * * StrTokenize(target, list) * * Split 'target' into the first token delimited by * one of the characters in 'list'. If 'target' is * NULL then next token will be returned. * * StrToUpper(target) * * Convert all lower case characters in 'target' into * upper case characters. */ enum { STRIO_HASH_NONE = 0, STRIO_HASH_PLAIN, STRIO_HASH_TWOSIGNED }; #if !defined(DEBUG) || defined(__DECC) #define StrAppend(x,y) strcat((x), (y)) #define StrAlloc(n) ((char *)calloc(1, (n))) #define StrContains(x,y) (0 != strstr((x), (y))) #define StrCopy(x,y) strcpy((x), (y)) #define StrFree(x) free((x)) #define StrIndex(x,y) strchr((x), (y)) #define StrIndexLast(x,y) strrchr((x), (y)) #define StrLength(x) strlen((x)) #define StrSubstring(x,y) strstr((x), (y)) #define StrTokenize(x,y) strtok((x), (y)) #define StrToLong(x,y,n) strtol((x), (y), (n)) #define StrToUnsignedLong(x,y,n) strtoul((x), (y), (n)) #else /* DEBUG */ /* * To be able to use these macros everywhere, including in * if() sentences, the assertions are put first in a comma * seperated list. * * Unfortunately the DECC compiler does not seem to like this * so it will use the un-asserted functions above for the * debugging case too. */ #define StrAppend(x,y) \ (assert((x) != NULL),\ assert((y) != NULL),\ strcat((x), (y))) #define StrAlloc(n) \ (assert((n) > 0),\ ((char *)calloc(1, (n)))) #define StrContains(x,y) \ (assert((x) != NULL),\ assert((y) != NULL),\ (0 != strstr((x), (y)))) #define StrCopy(x,y) \ (assert((x) != NULL),\ assert((y) != NULL),\ strcpy((x), (y))) #define StrIndex(x,c) \ (assert((x) != NULL),\ strchr((x), (c))) #define StrIndexLast(x,c) \ (assert((x) != NULL),\ strrchr((x), (c))) #define StrFree(x) \ (assert((x) != NULL),\ free((x))) #define StrLength(x) \ (assert((x) != NULL),\ strlen((x))) #define StrSubstring(x,y) \ (assert((x) != NULL),\ assert((y) != NULL),\ strstr((x), (y))) #define StrTokenize(x,y) \ (assert((y) != NULL),\ strtok((x), (y))) #define StrToLong(x,y,n) \ (assert((x) != NULL),\ assert((y) != NULL),\ assert((n) >= 2 && (n) <= 36),\ strtol((x), (y), (n))) #define StrToUnsignedLong(x,y,n) \ (assert((x) != NULL),\ assert((y) != NULL),\ assert((n) >= 2 && (n) <= 36),\ strtoul((x), (y), (n))) #endif /* DEBUG */ char *StrAppendMax(char *target, size_t max, const char *source); char *StrCopyMax(char *target, size_t max, const char *source); char *StrDuplicate(const char *source); char *StrDuplicateMax(const char *source, size_t max); int StrEqual(const char *first, const char *second); int StrEqualCase(const char *first, const char *second); int StrEqualCaseMax(const char *first, size_t max, const char *second); int StrEqualMax(const char *first, size_t max, const char *second); const char *StrError(int); size_t StrFormatDateMax(char *target, size_t max, const char *format, const struct tm *datetime); unsigned long StrHash(const char *string, int type); int StrMatch(char *string, char *pattern); int StrMatchCase(char *string, char *pattern); size_t StrSpanFunction(char *source, int (*Function)(int)); char *StrSubstringMax(const char *string, size_t max, const char *find); float StrToFloat(const char *source, const char **target); double StrToDouble(const char *source, const char **target); int StrToUpper(char *target); #endif /* TRIO_STRIO_H */ libwmf-0.2.8.4/src/extra/gd/0000755000077100007710000000000010272000331014773 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/extra/gd/gd.h0000644000077100007710000004603607573731147015601 0ustar fjffjf00000000000000#ifndef GD_H #define GD_H 1 #ifdef __cplusplus extern "C" { #endif /* default fontpath for unix systems */ #define DEFAULT_FONTPATH "/usr/share/fonts/truetype" #define PATHSEPARATOR ":" /* gd.h: declarations file for the graphic-draw module. * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation. This software is provided "AS IS." Thomas Boutell and * Boutell.Com, Inc. disclaim all warranties, either express or implied, * including but not limited to implied warranties of merchantability and * fitness for a particular purpose, with respect to this code and accompanying * documentation. */ /* stdio is needed for file I/O. */ #include #include #include /* The maximum number of palette entries in palette-based images. In the wonderful new world of gd 2.0, you can of course have many more colors when using truecolor mode. */ #define gdMaxColors 256 /* Image type. See functions below; you will not need to change the elements directly. Use the provided macros to access sx, sy, the color table, and colorsTotal for read-only purposes. */ /* If 'truecolor' is set true, the image is truecolor; pixels are represented by integers, which must be 32 bits wide or more. True colors are repsented as follows: ARGB Where 'A' (alpha channel) occupies only the LOWER 7 BITS of the MSB. This very small loss of alpha channel resolution allows gd 2.x to keep backwards compatibility by allowing signed integers to be used to represent colors, and negative numbers to represent special cases, just as in gd 1.x. */ #define gdAlphaMax 127 #define gdAlphaOpaque 0 #define gdAlphaTransparent 127 #define gdRedMax 255 #define gdGreenMax 255 #define gdBlueMax 255 #define gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24) #define gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16) #define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8) #define gdTrueColorGetBlue(c) ((c) & 0x0000FF) /* This function accepts truecolor pixel values only. The source color is composited with the destination color based on the alpha channel value of the source color. The resulting color is opaque. */ int gdAlphaBlend(int dest, int src); typedef struct gdImageStruct { /* Palette-based image pixels */ unsigned char ** pixels; int sx; int sy; /* These are valid in palette images only. See also 'alpha', which appears later in the structure to preserve binary backwards compatibility */ int colorsTotal; int red[gdMaxColors]; int green[gdMaxColors]; int blue[gdMaxColors]; int open[gdMaxColors]; /* For backwards compatibility, this is set to the first palette entry with 100% transparency, and is also set and reset by the gdImageColorTransparent function. Newer applications can allocate palette entries with any desired level of transparency; however, bear in mind that many viewers, notably many web browsers, fail to implement full alpha channel for PNG and provide support for full opacity or transparency only. */ int transparent; int *polyInts; int polyAllocated; struct gdImageStruct *brush; struct gdImageStruct *tile; int brushColorMap[gdMaxColors]; int tileColorMap[gdMaxColors]; int styleLength; int stylePos; int *style; int interlace; /* New in 2.0: thickness of line. Initialized to 1. */ int thick; /* New in 2.0: alpha channel for palettes. Note that only Macintosh Internet Explorer and (possibly) Netscape 6 really support multiple levels of transparency in palettes, to my knowledge, as of 2/15/01. Most common browsers will display 100% opaque and 100% transparent correctly, and do something unpredictable and/or undesirable for levels in between. TBB */ int alpha[gdMaxColors]; /* Truecolor flag and pixels. New 2.0 fields appear here at the end to minimize breakage of existing object code. */ int trueColor; int ** tpixels; /* Should alpha channel be copied, or applied, each time a pixel is drawn? This applies to truecolor images only. No attempt is made to alpha-blend in palette images, even if semitransparent palette entries exist. To do that, build your image as a truecolor image, then quantize down to 8 bits. */ int alphaBlendingFlag; /* Should the alpha channel of the image be saved? This affects PNG at the moment; other future formats may also have that capability. JPEG doesn't. */ int saveAlphaFlag; gdClipSet* clip; /* See */ int * _tpixels; /* contiguous pixel array */ } gdImage; typedef gdImage * gdImagePtr; typedef struct { /* # of characters in font */ int nchars; /* First character is numbered... (usually 32 = space) */ int offset; /* Character width and height */ int w; int h; /* Font data; array of characters, one row after another. Easily included in code, also easily loaded from data files. */ char *data; } gdFont; /* Text functions take these. */ typedef gdFont *gdFontPtr; /* For backwards compatibility only. Use gdImageSetStyle() for MUCH more flexible line drawing. Also see gdImageSetBrush(). */ #define gdDashSize 4 /* Special colors. */ #define gdStyled (-2) #define gdBrushed (-3) #define gdStyledBrushed (-4) #define gdTiled (-5) /* NOT the same as the transparent color index. This is used in line styles only. */ #define gdTransparent (-6) /* Functions to manipulate images. */ /* Creates a palette-based image (up to 256 colors). */ gdImagePtr gdImageCreate(int sx, int sy); /* An alternate name for the above (2.0). */ #define gdImageCreatePalette gdImageCreate /* Creates a truecolor image (millions of colors). */ gdImagePtr gdImageCreateTrueColor(int sx, int sy); /* Creates an image from various file types. These functions return a palette or truecolor image based on the nature of the file being loaded. Truecolor PNG stays truecolor; palette PNG stays palette-based; JPEG is always truecolor. */ gdImagePtr gdImageCreateFromPng(FILE *fd); gdImagePtr gdImageCreateFromPngCtx(gdIOCtxPtr in); gdImagePtr gdImageCreateFromWBMP(FILE *inFile); gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile); gdImagePtr gdImageCreateFromJpeg(FILE *infile); gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile); /* ClipSet addition */ void gdClipSetFree(gdImagePtr im); void gdClipSetReset(gdImagePtr im); void gdClipSetAdd(gdImagePtr im,gdClipRectanglePtr rect); /* A custom data source. */ /* The source function must return -1 on error, otherwise the number of bytes fetched. 0 is EOF, not an error! */ /* context will be passed to your source function. */ typedef struct { int (*source) (void *context, char *buffer, int len); void *context; } gdSource, *gdSourcePtr; gdImagePtr gdImageCreateFromPngSource(gdSourcePtr in); gdImagePtr gdImageCreateFromGd(FILE *in); gdImagePtr gdImageCreateFromGdCtx(gdIOCtxPtr in); gdImagePtr gdImageCreateFromGd2(FILE *in); gdImagePtr gdImageCreateFromGd2Ctx(gdIOCtxPtr in); gdImagePtr gdImageCreateFromGd2Part(FILE *in, int srcx, int srcy, int w, int h); gdImagePtr gdImageCreateFromGd2PartCtx(gdIOCtxPtr in, int srcx, int srcy, int w, int h); gdImagePtr gdImageCreateFromXbm(FILE *fd); void gdImageDestroy(gdImagePtr im); /* Replaces or blends with the background depending on the most recent call to gdImageAlphaBlending and the alpha channel value of 'color'; default is to overwrite. Tiling and line styling are also implemented here. All other gd drawing functions pass through this call, allowing for many useful effects. */ void gdImageSetPixel(gdImagePtr im, int x, int y, int color); int gdImageGetPixel(gdImagePtr im, int x, int y); void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color); /* For backwards compatibility only. Use gdImageSetStyle() for much more flexible line drawing. */ void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color); /* Corners specified (not width and height). Upper left first, lower right second. */ void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color); /* Solid bar. Upper left corner first, lower right corner second. */ void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color); int gdImageBoundsSafe(gdImagePtr im, int x, int y); void gdImageChar(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color); void gdImageCharUp(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color); void gdImageString(gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color); void gdImageStringUp(gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color); void gdImageString16(gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color); void gdImageStringUp16(gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color); /* Calls gdImageStringFT. Provided for backwards compatibility only. */ char *gdImageStringTTF(gdImage *im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string); /* FreeType 2 text output */ char *gdImageStringFT(gdImage *im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string); /* Point type for use in polygon drawing. */ typedef struct { int x, y; } gdPoint, *gdPointPtr; void gdImagePolygon(gdImagePtr im, gdPointPtr p, int n, int c); void gdImageFilledPolygon(gdImagePtr im, gdPointPtr p, int n, int c); /* These functions still work with truecolor images, for which they never return error. */ int gdImageColorAllocate(gdImagePtr im, int r, int g, int b); /* gd 2.0: palette entries with non-opaque transparency are permitted. */ int gdImageColorAllocateAlpha(gdImagePtr im, int r, int g, int b, int a); /* Assumes opaque is the preferred alpha channel value */ int gdImageColorClosest(gdImagePtr im, int r, int g, int b); /* Closest match taking all four parameters into account. A slightly different color with the same transparency beats the exact same color with radically different transparency */ int gdImageColorClosestAlpha(gdImagePtr im, int r, int g, int b, int a); /* Returns exact, 100% opaque matches only */ int gdImageColorExact(gdImagePtr im, int r, int g, int b); /* Returns an exact match only, including alpha */ int gdImageColorExactAlpha(gdImagePtr im, int r, int g, int b, int a); /* Opaque only */ int gdImageColorResolve(gdImagePtr im, int r, int g, int b); /* Based on gdImageColorExactAlpha and gdImageColorClosestAlpha */ int gdImageColorResolveAlpha(gdImagePtr im, int r, int g, int b, int a); /* A simpler way to obtain an opaque truecolor value for drawing on a truecolor image. Not for use with palette images! */ #define gdTrueColor(r, g, b) (((r) << 16) + \ ((g) << 8) + \ (b)) /* Returns a truecolor value with an alpha channel component. gdAlphaMax (127, **NOT 255**) is transparent, 0 is completely opaque. */ #define gdTrueColorAlpha(r, g, b, a) (((a) << 24) + \ ((r) << 16) + \ ((g) << 8) + \ (b)) void gdImageColorDeallocate(gdImagePtr im, int color); /* Converts a truecolor image to a palette-based image, using a high-quality two-pass quantization routine which attempts to preserve alpha channel information as well as R/G/B color information when creating a palette. If ditherFlag is set, the image will be dithered to approximate colors better, at the expense of some obvious "speckling." colorsWanted can be anything up to 256. If the original source image includes photographic information or anything that came out of a JPEG, 256 is strongly recommended. Better yet, don't use this function -- write real truecolor PNGs and JPEGs. The disk space gain of conversion to palette is not great (for small images it can be negative) and the quality loss is ugly. */ void gdImageTrueColorToPalette(gdImagePtr im, int ditherFlag, int colorsWanted); /* Specifies a color index (if a palette image) or an RGB color (if a truecolor image) which should be considered 100% transparent. FOR TRUECOLOR IMAGES, THIS IS IGNORED IF AN ALPHA CHANNEL IS BEING SAVED. Use gdImageSaveAlpha(im, 0); to turn off the saving of a full alpha channel in a truecolor image. Note that gdImageColorTransparent is usually compatible with older browsers that do not understand full alpha channels well. TBB */ void gdImageColorTransparent(gdImagePtr im, int color); void gdImagePaletteCopy(gdImagePtr dst, gdImagePtr src); void gdImagePng(gdImagePtr im, FILE *out); void gdImagePngCtx(gdImagePtr im, gdIOCtx *out); void gdImageWBMP(gdImagePtr image, int fg, FILE *out); void gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out); /* Guaranteed to correctly free memory returned by the gdImage*Ptr functions */ void gdFree(void *m); /* Best to free this memory with gdFree(), not free() */ void *gdImageWBMPPtr(gdImagePtr im, int *size, int fg); void gdImageJpeg(gdImagePtr im, FILE *out, int quality); void gdImageJpegCtx(gdImagePtr im, gdIOCtx *out, int quality); /* Best to free this memory with gdFree(), not free() */ void *gdImageJpegPtr(gdImagePtr im, int *size, int quality); /* A custom data sink. For backwards compatibility. Use gdIOCtx instead. */ /* The sink function must return -1 on error, otherwise the number of bytes written, which must be equal to len. */ /* context will be passed to your sink function. */ typedef struct { int (*sink) (void *context, const char *buffer, int len); void *context; } gdSink, *gdSinkPtr; void gdImagePngToSink(gdImagePtr im, gdSinkPtr out); void gdImageGd(gdImagePtr im, FILE *out); void gdImageGd2(gdImagePtr im, FILE *out, int cs, int fmt); /* Best to free this memory with gdFree(), not free() */ void* gdImagePngPtr(gdImagePtr im, int *size); /* Best to free this memory with gdFree(), not free() */ void* gdImageGdPtr(gdImagePtr im, int *size); /* Best to free this memory with gdFree(), not free() */ void* gdImageGd2Ptr(gdImagePtr im, int cs, int fmt, int *size); void gdImageEllipse(gdImagePtr im, int cx, int cy, int w, int h, int color); /* Style is a bitwise OR ( | operator ) of these. gdArc and gdChord are mutually exclusive; gdChord just connects the starting and ending angles with a straight line, while gdArc produces a rounded edge. gdPie is a synonym for gdArc. gdNoFill indicates that the arc or chord should be outlined, not filled. gdEdged, used together with gdNoFill, indicates that the beginning and ending angles should be connected to the center; this is a good way to outline (rather than fill) a 'pie slice'. */ #define gdArc 0 #define gdPie gdArc #define gdChord 1 #define gdNoFill 2 #define gdEdged 4 void gdImageFilledArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color, int style); void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color); void gdImageFilledEllipse(gdImagePtr im, int cx, int cy, int w, int h, int color); void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color); void gdImageFill(gdImagePtr im, int x, int y, int color); void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h); void gdImageCopyMerge(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct); void gdImageCopyMergeGray(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct); /* Stretches or shrinks to fit, as needed. Does NOT attempt to average the entire set of source pixels that scale down onto the destination pixel. */ void gdImageCopyResized(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH); /* gd 2.0: stretches or shrinks to fit, as needed. When called with a truecolor destination image, this function averages the entire set of source pixels that scale down onto the destination pixel, taking into account what portion of the destination pixel each source pixel represents. This is a floating point operation, but this is not a performance issue on modern hardware, except for some embedded devices. If the destination is a palette image, gdImageCopyResized is substituted automatically. */ void gdImageCopyResampled(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH); void gdImageSetBrush(gdImagePtr im, gdImagePtr brush); void gdImageSetTile(gdImagePtr im, gdImagePtr tile); void gdImageSetStyle(gdImagePtr im, int *style, int noOfPixels); /* Line thickness (defaults to 1). Affects lines, ellipses, rectangles, polygons and so forth. */ void gdImageSetThickness(gdImagePtr im, int thickness); /* On or off (1 or 0) for all three of these. */ void gdImageInterlace(gdImagePtr im, int interlaceArg); void gdImageAlphaBlending(gdImagePtr im, int alphaBlendingArg); void gdImageSaveAlpha(gdImagePtr im, int saveAlphaArg); /* Macros to access information about images. */ /* Returns nonzero if the image is a truecolor image, zero for a palette image. */ #define gdImageTrueColor(im) ((im)->trueColor) #define gdImageSX(im) ((im)->sx) #define gdImageSY(im) ((im)->sy) #define gdImageColorsTotal(im) ((im)->colorsTotal) #define gdImageRed(im, c) ((im)->trueColor ? gdTrueColorGetRed(c) : \ (im)->red[(c)]) #define gdImageGreen(im, c) ((im)->trueColor ? gdTrueColorGetGreen(c) : \ (im)->green[(c)]) #define gdImageBlue(im, c) ((im)->trueColor ? gdTrueColorGetBlue(c) : \ (im)->blue[(c)]) #define gdImageAlpha(im, c) ((im)->trueColor ? gdTrueColorGetAlpha(c) : \ (im)->alpha[(c)]) #define gdImageGetTransparent(im) ((im)->transparent) #define gdImageGetInterlaced(im) ((im)->interlace) /* These macros provide direct access to pixels in palette-based and truecolor images, respectively. If you use these macros, you must perform your own bounds checking. Use of the macro for the correct type of image is also your responsibility. */ #define gdImagePalettePixel(im, x, y) (im)->pixels[(y)][(x)] #define gdImageTrueColorPixel(im, x, y) (im)->tpixels[(y)][(x)] /* I/O Support routines. */ gdIOCtx* gdNewFileCtx(FILE*); gdIOCtx* gdNewDynamicCtx(int, void*); gdIOCtx* gdNewSSCtx(gdSourcePtr in, gdSinkPtr out); void* gdDPExtractData(struct gdIOCtx* ctx, int *size); #define GD2_CHUNKSIZE 128 #define GD2_CHUNKSIZE_MIN 64 #define GD2_CHUNKSIZE_MAX 4096 #define GD2_VERS 2 #define GD2_ID "gd2" #define GD2_FMT_RAW 1 #define GD2_FMT_COMPRESSED 2 /* Image comparison definitions */ int gdImageCompare(gdImagePtr im1, gdImagePtr im2); #define GD_CMP_IMAGE 1 /* Actual image IS different */ #define GD_CMP_NUM_COLORS 2 /* Number of Colours in pallette differ */ #define GD_CMP_COLOR 4 /* Image colours differ */ #define GD_CMP_SIZE_X 8 /* Image width differs */ #define GD_CMP_SIZE_Y 16 /* Image heights differ */ #define GD_CMP_TRANSPARENT 32 /* Transparent colour */ #define GD_CMP_BACKGROUND 64 /* Background colour */ #define GD_CMP_INTERLACE 128 /* Interlaced setting */ #define GD_CMP_TRUECOLOR 256 /* Truecolor vs palette differs */ /* resolution affects ttf font rendering, particularly hinting */ #define GD_RESOLUTION 96 /* pixels per inch */ #ifdef __cplusplus } #endif #endif /* GD_H */ libwmf-0.2.8.4/src/extra/gd/gdcache.h0000644000077100007710000000516707340471341016552 0ustar fjffjf00000000000000/* * gdcache.h * * Caches of pointers to user structs in which the least-recently-used * element is replaced in the event of a cache miss after the cache has * reached a given size. * * John Ellson (ellson@lucent.com) Oct 31, 1997 * * Test this with: * gcc -o gdcache -g -Wall -DTEST gdcache.c * * The cache is implemented by a singly-linked list of elements * each containing a pointer to a user struct that is being managed by * the cache. * * The head structure has a pointer to the most-recently-used * element, and elements are moved to this position in the list each * time they are used. The head also contains pointers to three * user defined functions: * - a function to test if a cached userdata matches some keydata * - a function to provide a new userdata struct to the cache * if there has been a cache miss. * - a function to release a userdata struct when it is * no longer being managed by the cache * * In the event of a cache miss the cache is allowed to grow up to * a specified maximum size. After the maximum size is reached then * the least-recently-used element is discarded to make room for the * new. The most-recently-returned value is always left at the * beginning of the list after retrieval. * * In the current implementation the cache is traversed by a linear * search from most-recent to least-recent. This linear search * probably limits the usefulness of this implementation to cache * sizes of a few tens of elements. */ /*********************************************************/ /* header */ /*********************************************************/ /* #include */ #ifndef NULL #define NULL (void *)0 #endif /* user defined function templates */ typedef int (*gdCacheTestFn_t)(void *userdata, void *keydata); typedef void *(*gdCacheFetchFn_t)(char **error, void *keydata); typedef void (*gdCacheReleaseFn_t)(void *userdata); /* element structure */ typedef struct gdCache_element_s gdCache_element_t; struct gdCache_element_s { gdCache_element_t *next; void *userdata; }; /* head structure */ typedef struct gdCache_head_s gdCache_head_t; struct gdCache_head_s { gdCache_element_t *mru; int size; char *error; gdCacheTestFn_t gdCacheTest; gdCacheFetchFn_t gdCacheFetch; gdCacheReleaseFn_t gdCacheRelease; }; /* function templates */ gdCache_head_t * gdCacheCreate( int size, gdCacheTestFn_t gdCacheTest, gdCacheFetchFn_t gdCacheFetch, gdCacheReleaseFn_t gdCacheRelease ); void gdCacheDelete( gdCache_head_t *head ); void * gdCacheGet( gdCache_head_t *head, void *keydata ); libwmf-0.2.8.4/src/extra/gd/gd_clip.h0000644000077100007710000000070107260330332016555 0ustar fjffjf00000000000000#ifndef GD_CLIP_H #define GD_CLIP_H 1 #ifdef __cplusplus extern "C" { #endif /* ClipRectangle type for use as part of ClipSet. */ typedef struct { /* point must lie in range: x_min <= x <= x_max, y_min <= y <= y_max */ int x_min, y_min; int x_max, y_max; } gdClipRectangle, *gdClipRectanglePtr; /* ClipSet type */ typedef struct { int max; int count; gdClipRectangle* list; } gdClipSet; #ifdef __cplusplus } #endif #endif /* GD_CLIP_H */ libwmf-0.2.8.4/src/extra/gd/gd_io.h0000644000077100007710000000162507260330332016243 0ustar fjffjf00000000000000#ifndef GD_IO_H #define GD_IO_H 1 #include typedef struct gdIOCtx { int (*getC)(struct gdIOCtx*); int (*getBuf)(struct gdIOCtx*, void*, int); void (*putC)(struct gdIOCtx*, int); int (*putBuf)(struct gdIOCtx*, const void*, int); int (*seek)(struct gdIOCtx*, const int); long (*tell)(struct gdIOCtx*); void (*free)(struct gdIOCtx*); } gdIOCtx; typedef struct gdIOCtx *gdIOCtxPtr; void Putword(int w, gdIOCtx *ctx); void Putchar(int c, gdIOCtx *ctx); void gdPutC(const unsigned char c, gdIOCtx *ctx); int gdPutBuf(const void *, int, gdIOCtx*); void gdPutWord(int w, gdIOCtx *ctx); void gdPutInt(int w, gdIOCtx *ctx); int gdGetC(gdIOCtx *ctx); int gdGetBuf(void *, int, gdIOCtx*); int gdGetByte(int *result, gdIOCtx *ctx); int gdGetWord(int *result, gdIOCtx *ctx); int gdGetInt(int *result, gdIOCtx *ctx); int gdSeek(gdIOCtx *ctx, const int); long gdTell(gdIOCtx *ctx); #endif libwmf-0.2.8.4/src/extra/gd/gdfontg.h0000644000077100007710000000075207260330332016612 0ustar fjffjf00000000000000 #ifndef _GDFONTG_H_ #define _GDFONTG_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.51 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -Misc-Fixed-Bold-R-Normal-Sans-15-140-75-75-C-90-ISO8859-2 at Mon Jan 26 14:45:58 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gd.h" extern gdFontPtr gdFontGiant; #ifdef __cplusplus } #endif #endif libwmf-0.2.8.4/src/extra/gd/gdfontl.h0000644000077100007710000000075007260330332016615 0ustar fjffjf00000000000000 #ifndef _GDFONTL_H_ #define _GDFONTL_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-medium-r-normal--16-140-75-75-c-80-iso8859-2 at Tue Jan 6 19:39:27 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gd.h" extern gdFontPtr gdFontLarge; #ifdef __cplusplus } #endif #endif libwmf-0.2.8.4/src/extra/gd/gdfontmb.h0000644000077100007710000000070307260330332016756 0ustar fjffjf00000000000000 #ifndef _GDFONTMB_H_ #define _GDFONTMB_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-bold-r-normal-sans-13-94-100-100-c-70-iso8859-2 at Thu Jan 8 13:54:57 1998. No copyright info was found in the original bdf. */ #include "gd.h" extern gdFontPtr gdFontMediumBold; #ifdef __cplusplus } #endif #endif libwmf-0.2.8.4/src/extra/gd/gdfonts.h0000644000077100007710000000070407260330332016623 0ustar fjffjf00000000000000 #ifndef _GDFONTS_H_ #define _GDFONTS_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-medium-r-semicondensed-sans-12-116-75-75-c-60-iso8859-2 at Thu Jan 8 14:13:20 1998. No copyright info was found in the original bdf. */ #include "gd.h" extern gdFontPtr gdFontSmall; #ifdef __cplusplus } #endif #endif libwmf-0.2.8.4/src/extra/gd/gdfontt.h0000644000077100007710000000074407260330332016630 0ustar fjffjf00000000000000 #ifndef _GDFONTT_H_ #define _GDFONTT_H_ 1 #ifdef __cplusplus extern "C" { #endif /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO8859-2 at Thu Jan 8 13:49:54 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gd.h" extern gdFontPtr gdFontTiny; #ifdef __cplusplus } #endif #endif libwmf-0.2.8.4/src/extra/gd/Makefile.am0000644000077100007710000000220407505305527017051 0ustar fjffjf00000000000000INCLUDES = -I$(srcdir) CFLAGS = @CFLAGS@ @WMF_CFLAGS@ LDFLAGS = @LDFLAGS@ DEFS = @DEFS@ @GD_DEFS@ GDHDRS = gd.h gdcache.h gd_clip.h gd_io.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h if LIBWMF_OPT_SYS_GD LIBGD = HDRGDINST = else LIBGD = libgd.la HDRGDINST = $(GDHDRS) endif noinst_LTLIBRARIES = $(LIBGD) libgd_la_SOURCES = gd.c gd_gd.c gd_gd2.c gd_io.c gd_io_dp.c \ gd_io_file.c gd_ss.c gd_io_ss.c gd_png.c gd_jpeg.c gdxpm.c \ gdfontt.c gdfonts.c gdfontmb.c gdfontl.c gdfontg.c \ gdtables.c gdft.c gdcache.c gdkanji.c wbmp.c \ gd_wbmp.c gdhelpers.c gd_topal.c gd_clip.c gddir = $(includedir)/libwmf/gd gd_HEADERS = $(HDRGDINST) GDOTHER = \ Makefile.gd \ Makefile.nt \ README-JPEG.TXT \ Readme.wmf \ alphachanneltest.html \ arc \ bdftogd \ bresenham_ellipse \ errs \ gd2copypal.c \ gdhelpers.h \ gd2time.c \ gd2topng.c \ gd_arc_f_buggy.c \ gddemo.c \ gdparttopng.c \ gdtest.c \ gdtestft.c \ gdtopng.c \ index.html \ install-item \ jisx0208.h \ mathmake.c \ pngtogd.c \ pngtogd2.c \ readme.txt \ tc \ testac.c \ wbmp.h \ webpng.c EXTRA_DIST = Makefile.gd Makefile.nt Readme.wmf $(GDHDRS) $(GDOTHER) libwmf-0.2.8.4/src/extra/gd/Makefile.in0000664000077100007710000004551110272000331017050 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ SOURCES = $(libgd_la_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/extra/gd DIST_COMMON = $(am__gd_HEADERS_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libgd_la_LIBADD = am_libgd_la_OBJECTS = gd.lo gd_gd.lo gd_gd2.lo gd_io.lo gd_io_dp.lo \ gd_io_file.lo gd_ss.lo gd_io_ss.lo gd_png.lo gd_jpeg.lo \ gdxpm.lo gdfontt.lo gdfonts.lo gdfontmb.lo gdfontl.lo \ gdfontg.lo gdtables.lo gdft.lo gdcache.lo gdkanji.lo wbmp.lo \ gd_wbmp.lo gdhelpers.lo gd_topal.lo gd_clip.lo libgd_la_OBJECTS = $(am_libgd_la_OBJECTS) @LIBWMF_OPT_SYS_GD_FALSE@am_libgd_la_rpath = DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libgd_la_SOURCES) DIST_SOURCES = $(libgd_la_SOURCES) am__gd_HEADERS_DIST = gd.h gdcache.h gd_clip.h gd_io.h gdfontg.h \ gdfontl.h gdfontmb.h gdfonts.h gdfontt.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(gddir)" gdHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(gd_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @WMF_CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ @GD_DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = -I$(srcdir) GDHDRS = gd.h gdcache.h gd_clip.h gd_io.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h @LIBWMF_OPT_SYS_GD_FALSE@LIBGD = libgd.la @LIBWMF_OPT_SYS_GD_TRUE@LIBGD = @LIBWMF_OPT_SYS_GD_FALSE@HDRGDINST = $(GDHDRS) @LIBWMF_OPT_SYS_GD_TRUE@HDRGDINST = noinst_LTLIBRARIES = $(LIBGD) libgd_la_SOURCES = gd.c gd_gd.c gd_gd2.c gd_io.c gd_io_dp.c \ gd_io_file.c gd_ss.c gd_io_ss.c gd_png.c gd_jpeg.c gdxpm.c \ gdfontt.c gdfonts.c gdfontmb.c gdfontl.c gdfontg.c \ gdtables.c gdft.c gdcache.c gdkanji.c wbmp.c \ gd_wbmp.c gdhelpers.c gd_topal.c gd_clip.c gddir = $(includedir)/libwmf/gd gd_HEADERS = $(HDRGDINST) GDOTHER = \ Makefile.gd \ Makefile.nt \ README-JPEG.TXT \ Readme.wmf \ alphachanneltest.html \ arc \ bdftogd \ bresenham_ellipse \ errs \ gd2copypal.c \ gdhelpers.h \ gd2time.c \ gd2topng.c \ gd_arc_f_buggy.c \ gddemo.c \ gdparttopng.c \ gdtest.c \ gdtestft.c \ gdtopng.c \ index.html \ install-item \ jisx0208.h \ mathmake.c \ pngtogd.c \ pngtogd2.c \ readme.txt \ tc \ testac.c \ wbmp.h \ webpng.c EXTRA_DIST = Makefile.gd Makefile.nt Readme.wmf $(GDHDRS) $(GDOTHER) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/extra/gd/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/extra/gd/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libgd.la: $(libgd_la_OBJECTS) $(libgd_la_DEPENDENCIES) $(LINK) $(am_libgd_la_rpath) $(libgd_la_LDFLAGS) $(libgd_la_OBJECTS) $(libgd_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_clip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_gd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_gd2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io_dp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io_file.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io_ss.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_jpeg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_png.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_ss.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_topal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_wbmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdcache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontmb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfonts.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdft.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdhelpers.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkanji.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdtables.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdxpm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wbmp.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-gdHEADERS: $(gd_HEADERS) @$(NORMAL_INSTALL) test -z "$(gddir)" || $(mkdir_p) "$(DESTDIR)$(gddir)" @list='$(gd_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(gdHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(gddir)/$$f'"; \ $(gdHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(gddir)/$$f"; \ done uninstall-gdHEADERS: @$(NORMAL_UNINSTALL) @list='$(gd_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(gddir)/$$f'"; \ rm -f "$(DESTDIR)$(gddir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(gddir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-gdHEADERS install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-gdHEADERS uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-exec \ install-exec-am install-gdHEADERS install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-gdHEADERS uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/src/extra/gd/gd.c0000644000077100007710000014444210271767771015575 0ustar fjffjf00000000000000#include #include #include #include #include #include "gd.h" #include "gdhelpers.h" #ifdef _OSD_POSIX /* BS2000 uses the EBCDIC char set instead of ASCII */ #define CHARSET_EBCDIC #define __attribute__(any) /*nothing */ #endif /*_OSD_POSIX*/ #ifndef CHARSET_EBCDIC #define ASC(ch) ch #else /*CHARSET_EBCDIC */ #define ASC(ch) gd_toascii[(unsigned char)ch] static const unsigned char gd_toascii[256] = { /*00 */ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f, 0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /*................ */ /*10 */ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97, 0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /*................ */ /*20 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /*................ */ /*30 */ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /*................ */ /*40 */ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, 0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* .........`.<(+| */ /*50 */ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f, /*&.........!$*);. */ /*60 */ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, 0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /*-/........^,%_>?*/ /*70 */ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /*..........:#@'=" */ /*80 */ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /*.abcdefghi...... */ /*90 */ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /*.jklmnopqr...... */ /*a0 */ 0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /*..stuvwxyz...... */ /*b0 */ 0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, 0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7, /*...........[\].. */ /*c0 */ 0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /*.ABCDEFGHI...... */ /*d0 */ 0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff, /*.JKLMNOPQR...... */ /*e0 */ 0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /*..STUVWXYZ...... */ /*f0 */ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e /*0123456789.{.}.~ */ }; #endif /*CHARSET_EBCDIC */ extern int gdCosT[]; extern int gdSinT[]; static void gdImageBrushApply (gdImagePtr im, int x, int y); static void gdImageTileApply (gdImagePtr im, int x, int y); gdImagePtr gdImageCreate (int sx, int sy) { int i; gdImagePtr im; im = (gdImage *) gdMalloc (sizeof (gdImage)); memset (im, 0, sizeof (gdImage)); /* Row-major ever since gd 1.3 */ im->pixels = (unsigned char **) gdMalloc (sizeof (unsigned char *) * sy); im->polyInts = 0; im->polyAllocated = 0; im->brush = 0; im->tile = 0; im->style = 0; for (i = 0; (i < sy); i++) { /* Row-major ever since gd 1.3 */ im->pixels[i] = (unsigned char *) gdCalloc ( sx, sizeof (unsigned char)); } im->sx = sx; im->sy = sy; im->colorsTotal = 0; im->transparent = (-1); im->interlace = 0; im->thick = 1; for (i = 0; (i < gdMaxColors); i++) { im->open[i] = 1; im->red[i] = 0; im->green[i] = 0; im->blue[i] = 0; }; im->trueColor = 0; im->tpixels = 0; im->clip = 0; return im; } gdImagePtr gdImageCreateTrueColor (int sx, int sy) { int i; gdImagePtr im; unsigned long cpa_size; im = (gdImage *) gdMalloc (sizeof (gdImage)); if (im == 0) return 0; memset (im, 0, sizeof (gdImage)); cpa_size = sizeof (int) * (unsigned long) sx * (unsigned long) sy; im->_tpixels = (int *) gdMalloc (cpa_size); if (im->_tpixels == 0) { gdFree (im); return 0; } memset (im->_tpixels, 0, cpa_size); im->tpixels = (int **) gdMalloc (sizeof (int *) * sy); if (im->tpixels == 0) { gdFree (im->_tpixels); gdFree (im); return 0; } for (i = 0; i < sy; i++) im->tpixels[i] = im->_tpixels + (i * sx); im->polyInts = 0; im->polyAllocated = 0; im->brush = 0; im->tile = 0; im->style = 0; im->sx = sx; im->sy = sy; im->transparent = (-1); im->interlace = 0; im->trueColor = 1; im->saveAlphaFlag = 1; im->alphaBlendingFlag = 0; im->thick = 1; im->clip = 0; return im; } void gdImageDestroy (gdImagePtr im) { int i; if (im->pixels) { for (i = 0; (i < im->sy); i++) { gdFree (im->pixels[i]); } gdFree (im->pixels); } if (im->tpixels) { gdFree (im->_tpixels); gdFree (im->tpixels); } if (im->polyInts) { gdFree (im->polyInts); } if (im->style) { gdFree (im->style); } if (im->clip) { gdClipSetFree (im); } gdFree (im); } int gdImageColorClosest (gdImagePtr im, int r, int g, int b) { return gdImageColorClosestAlpha (im, r, g, b, gdAlphaOpaque); } int gdImageColorClosestAlpha (gdImagePtr im, int r, int g, int b, int a) { int i; long rd, gd, bd, ad; int ct = (-1); int first = 1; long mindist = 0; if (im->trueColor) { return gdTrueColorAlpha (r, g, b, a); } for (i = 0; (i < (im->colorsTotal)); i++) { long dist; if (im->open[i]) { continue; } rd = (im->red[i] - r); gd = (im->green[i] - g); bd = (im->blue[i] - b); ad = (im->blue[i] - b); dist = rd * rd + gd * gd + bd * bd + ad * ad; if (first || (dist < mindist)) { mindist = dist; ct = i; first = 0; } } return ct; } /* This code is taken from http://www.acm.org/jgt/papers/SmithLyons96/hwb_rgb.html, an article * on colour conversion to/from RBG and HWB colour systems. * It has been modified to return the converted value as a * parameter. */ #define RETURN_HWB(h, w, b) {HWB->H = h; HWB->W = w; HWB->B = b; return HWB;} #define RETURN_RGB(r, g, b) {RGB->R = r; RGB->G = g; RGB->B = b; return RGB;} #define HWB_UNDEFINED -1 #define SETUP_RGB(s, r, g, b) {s.R = r/255.0; s.G = g/255.0; s.B = b/255.0;} #define MIN(a,b) ((a)<(b)?(a):(b)) #define MIN3(a,b,c) ((a)<(b)?(MIN(a,c)):(MIN(b,c))) #define MAX(a,b) ((a)<(b)?(b):(a)) #define MAX3(a,b,c) ((a)<(b)?(MAX(b,c)):(MAX(a,c))) /* * Theoretically, hue 0 (pure red) is identical to hue 6 in these transforms. Pure * red always maps to 6 in this implementation. Therefore UNDEFINED can be * defined as 0 in situations where only unsigned numbers are desired. */ typedef struct { float R, G, B; } RGBType; typedef struct { float H, W, B; } HWBType; static HWBType * RGB_to_HWB (RGBType RGB, HWBType * HWB) { /* * RGB are each on [0, 1]. W and B are returned on [0, 1] and H is * returned on [0, 6]. Exception: H is returned UNDEFINED if W == 1 - B. */ float R = RGB.R, G = RGB.G, B = RGB.B, w, v, b, f; int i; w = MIN3 (R, G, B); v = MAX3 (R, G, B); b = 1 - v; if (v == w) RETURN_HWB (HWB_UNDEFINED, w, b); f = (R == w) ? G - B : ((G == w) ? B - R : R - G); i = (R == w) ? 3 : ((G == w) ? 5 : 1); RETURN_HWB (i - f / (v - w), w, b); } static float HWB_Diff (int r1, int g1, int b1, int r2, int g2, int b2) { RGBType RGB1, RGB2; HWBType HWB1, HWB2; float diff; SETUP_RGB (RGB1, r1, g1, b1); SETUP_RGB (RGB2, r2, g2, b2); RGB_to_HWB (RGB1, &HWB1); RGB_to_HWB (RGB2, &HWB2); /* * I made this bit up; it seems to produce OK results, and it is certainly * more visually correct than the current RGB metric. (PJW) */ if ((HWB1.H == HWB_UNDEFINED) || (HWB2.H == HWB_UNDEFINED)) { diff = 0; /* Undefined hues always match... */ } else { diff = abs (HWB1.H - HWB2.H); if (diff > 3) { diff = 6 - diff; /* Remember, it's a colour circle */ } } diff = diff * diff + (HWB1.W - HWB2.W) * (HWB1.W - HWB2.W) + (HWB1.B - HWB2.B) * (HWB1.B - HWB2.B); return diff; } #if 0 /* * This is not actually used, but is here for completeness, in case someone wants to * use the HWB stuff for anything else... */ static RGBType * HWB_to_RGB (HWBType HWB, RGBType * RGB) { /* * H is given on [0, 6] or UNDEFINED. W and B are given on [0, 1]. * RGB are each returned on [0, 1]. */ float h = HWB.H, w = HWB.W, b = HWB.B, v, n, f; int i; v = 1 - b; if (h == HWB_UNDEFINED) RETURN_RGB (v, v, v); i = floor (h); f = h - i; if (i & 1) f = 1 - f; /* if i is odd */ n = w + f * (v - w); /* linear interpolation between w and v */ switch (i) { case 6: case 0: RETURN_RGB (v, n, w); case 1: RETURN_RGB (n, v, w); case 2: RETURN_RGB (w, v, n); case 3: RETURN_RGB (w, n, v); case 4: RETURN_RGB (n, w, v); case 5: RETURN_RGB (v, w, n); } return RGB; } #endif int gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b) { int i; /* long rd, gd, bd; */ int ct = (-1); int first = 1; float mindist = 0; if (im->trueColor) { return gdTrueColor (r, g, b); } for (i = 0; (i < (im->colorsTotal)); i++) { float dist; if (im->open[i]) { continue; } dist = HWB_Diff (im->red[i], im->green[i], im->blue[i], r, g, b); if (first || (dist < mindist)) { mindist = dist; ct = i; first = 0; } } return ct; } int gdImageColorExact (gdImagePtr im, int r, int g, int b) { return gdImageColorExactAlpha (im, r, g, b, gdAlphaOpaque); } int gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int a) { int i; if (im->trueColor) { return gdTrueColorAlpha (r, g, b, a); } for (i = 0; (i < (im->colorsTotal)); i++) { if (im->open[i]) { continue; } if ((im->red[i] == r) && (im->green[i] == g) && (im->blue[i] == b) && (im->alpha[i] == a)) { return i; } } return -1; } int gdImageColorAllocate (gdImagePtr im, int r, int g, int b) { return gdImageColorAllocateAlpha (im, r, g, b, gdAlphaOpaque); } int gdImageColorAllocateAlpha (gdImagePtr im, int r, int g, int b, int a) { int i; int ct = (-1); if (im->trueColor) { return gdTrueColorAlpha (r, g, b, a); } for (i = 0; (i < (im->colorsTotal)); i++) { if (im->open[i]) { ct = i; break; } } if (ct == (-1)) { ct = im->colorsTotal; if (ct == gdMaxColors) { return -1; } im->colorsTotal++; } im->red[ct] = r; im->green[ct] = g; im->blue[ct] = b; im->alpha[ct] = a; im->open[ct] = 0; return ct; } /* * gdImageColorResolve is an alternative for the code fragment: * * if ((color=gdImageColorExact(im,R,G,B)) < 0) * if ((color=gdImageColorAllocate(im,R,G,B)) < 0) * color=gdImageColorClosest(im,R,G,B); * * in a single function. Its advantage is that it is guaranteed to * return a color index in one search over the color table. */ int gdImageColorResolve (gdImagePtr im, int r, int g, int b) { return gdImageColorResolveAlpha (im, r, g, b, gdAlphaOpaque); } int gdImageColorResolveAlpha (gdImagePtr im, int r, int g, int b, int a) { int c; int ct = -1; int op = -1; long rd, gd, bd, ad, dist; long mindist = 4 * 255 * 255; /* init to max poss dist */ if (im->trueColor) { return gdTrueColorAlpha (r, g, b, a); } for (c = 0; c < im->colorsTotal; c++) { if (im->open[c]) { op = c; /* Save open slot */ continue; /* Color not in use */ } rd = (long) (im->red[c] - r); gd = (long) (im->green[c] - g); bd = (long) (im->blue[c] - b); ad = (long) (im->alpha[c] - a); dist = rd * rd + gd * gd + bd * bd + ad * ad; if (dist < mindist) { if (dist == 0) { return c; /* Return exact match color */ } mindist = dist; ct = c; } } /* no exact match. We now know closest, but first try to allocate exact */ if (op == -1) { op = im->colorsTotal; if (op == gdMaxColors) { /* No room for more colors */ return ct; /* Return closest available color */ } im->colorsTotal++; } im->red[op] = r; im->green[op] = g; im->blue[op] = b; im->alpha[op] = a; im->open[op] = 0; return op; /* Return newly allocated color */ } void gdImageColorDeallocate (gdImagePtr im, int color) { if (im->trueColor) { return; } /* Mark it open. */ im->open[color] = 1; } void gdImageColorTransparent (gdImagePtr im, int color) { if (!im->trueColor) { if (im->transparent != -1) { im->alpha[im->transparent] = gdAlphaOpaque; } if (color != -1) { im->alpha[color] = gdAlphaTransparent; } } im->transparent = color; } void gdImagePaletteCopy (gdImagePtr to, gdImagePtr from) { int i; int x, y, p; int xlate[256]; if (to->trueColor) { return; } if (from->trueColor) { return; } for (i = 0; i < 256; i++) { xlate[i] = -1; }; for (x = 0; x < (to->sx); x++) { for (y = 0; y < (to->sy); y++) { p = gdImageGetPixel (to, x, y); if (xlate[p] == -1) { /* This ought to use HWB, but we don't have an alpha-aware version of that yet. */ xlate[p] = gdImageColorClosestAlpha (from, to->red[p], to->green[p], to->blue[p], to->alpha[p]); /*printf("Mapping %d (%d, %d, %d, %d) to %d (%d, %d, %d, %d)\n", */ /* p, to->red[p], to->green[p], to->blue[p], to->alpha[p], */ /* xlate[p], from->red[xlate[p]], from->green[xlate[p]], from->blue[xlate[p]], from->alpha[xlate[p]]); */ }; gdImageSetPixel (to, x, y, xlate[p]); }; }; for (i = 0; (i < (from->colorsTotal)); i++) { /*printf("Copying color %d (%d, %d, %d, %d)\n", i, from->red[i], from->blue[i], from->green[i], from->alpha[i]); */ to->red[i] = from->red[i]; to->blue[i] = from->blue[i]; to->green[i] = from->green[i]; to->alpha[i] = from->alpha[i]; to->open[i] = 0; }; for (i = from->colorsTotal; (i < to->colorsTotal); i++) { to->open[i] = 1; }; to->colorsTotal = from->colorsTotal; } void gdImageSetPixel (gdImagePtr im, int x, int y, int color) { int p; switch (color) { case gdStyled: if (!im->style) { /* Refuse to draw if no style is set. */ return; } else { p = im->style[im->stylePos++]; } if (p != (gdTransparent)) { gdImageSetPixel (im, x, y, p); } im->stylePos = im->stylePos % im->styleLength; break; case gdStyledBrushed: if (!im->style) { /* Refuse to draw if no style is set. */ return; } p = im->style[im->stylePos++]; if ((p != gdTransparent) && (p != 0)) { gdImageSetPixel (im, x, y, gdBrushed); } im->stylePos = im->stylePos % im->styleLength; break; case gdBrushed: gdImageBrushApply (im, x, y); break; case gdTiled: gdImageTileApply (im, x, y); break; default: if (gdImageBoundsSafe (im, x, y)) { if (im->trueColor) { if (im->alphaBlendingFlag) { im->tpixels[y][x] = gdAlphaBlend (im->tpixels[y][x], color); } else { im->tpixels[y][x] = color; } } else { im->pixels[y][x] = color; } } break; } } int gdImageGetTrueColorPixel (gdImagePtr im, int x, int y) { int p = gdImageGetPixel (im, x, y); if (!im->trueColor) { return gdTrueColorAlpha (im->red[p], im->green[p], im->blue[p], (im->transparent == p) ? gdAlphaTransparent : gdAlphaOpaque); } else { return p; } } static void gdImageBrushApply (gdImagePtr im, int x, int y) { int lx, ly; int hy; int hx; int x1, y1, x2, y2; int srcx, srcy; if (!im->brush) { return; } hy = gdImageSY (im->brush) / 2; y1 = y - hy; y2 = y1 + gdImageSY (im->brush); hx = gdImageSX (im->brush) / 2; x1 = x - hx; x2 = x1 + gdImageSX (im->brush); srcy = 0; if (im->trueColor) { for (ly = y1; (ly < y2); ly++) { srcx = 0; for (lx = x1; (lx < x2); lx++) { int p; p = gdImageGetTrueColorPixel ( im->brush, srcx, srcy); gdImageSetPixel (im, lx, ly, p); srcx++; } srcy++; } } else { for (ly = y1; (ly < y2); ly++) { srcx = 0; for (lx = x1; (lx < x2); lx++) { int p; p = gdImageGetPixel (im->brush, srcx, srcy); /* Allow for non-square brushes! */ if (p != gdImageGetTransparent (im->brush)) { /* Truecolor brush. Very slow on a palette destination. */ if (im->brush->trueColor) { gdImageSetPixel (im, lx, ly, gdImageColorResolveAlpha ( im, gdTrueColorGetRed (p), gdTrueColorGetGreen (p), gdTrueColorGetBlue (p), gdTrueColorGetAlpha (p))); } else { gdImageSetPixel (im, lx, ly, im->brushColorMap[p]); } } srcx++; } srcy++; } } } static void gdImageTileApply (gdImagePtr im, int x, int y) { int srcx, srcy; int p=0; if (!im->tile) { return; } srcx = x % gdImageSX (im->tile); srcy = y % gdImageSY (im->tile); if (im->trueColor) { p = gdImageGetTrueColorPixel (im->tile, srcx, srcy); gdImageSetPixel (im, x, y, p); } else { /* Allow for transparency */ if (p != gdImageGetTransparent (im->tile)) { if (im->tile->trueColor) { /* Truecolor tile. Very slow on a palette destination. */ gdImageSetPixel (im, x, y, gdImageColorResolveAlpha ( im, gdTrueColorGetRed (p), gdTrueColorGetGreen (p), gdTrueColorGetBlue (p), gdTrueColorGetAlpha (p))); } else { gdImageSetPixel (im, x, y, im->tileColorMap[p]); } } } } int gdImageGetPixel (gdImagePtr im, int x, int y) { if (gdImageBoundsSafe (im, x, y)) { if (im->trueColor) { return im->tpixels[y][x]; } else { return im->pixels[y][x]; } } else { return 0; } } /* Bresenham as presented in Foley & Van Dam */ void gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color) { int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag; int wid; int w, wstart; int thick = im->thick; dx = abs (x2 - x1); dy = abs (y2 - y1); if (dy <= dx) { /* More-or-less horizontal. use wid for vertical stroke */ wid = thick * cos (atan2 (dy, dx)); if (wid == 0) wid = 1; d = 2 * dy - dx; incr1 = 2 * dy; incr2 = 2 * (dy - dx); if (x1 > x2) { x = x2; y = y2; ydirflag = (-1); xend = x1; } else { x = x1; y = y1; ydirflag = 1; xend = x2; } /* Set up line thickness */ wstart = y - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, x, w, color); if (((y2 - y1) * ydirflag) > 0) { while (x < xend) { x++; if (d < 0) { d += incr1; } else { y++; d += incr2; } wstart = y - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, x, w, color); } } else { while (x < xend) { x++; if (d < 0) { d += incr1; } else { y--; d += incr2; } wstart = y - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, x, w, color); } } } else { /* More-or-less vertical. use wid for horizontal stroke */ wid = thick * sin (atan2 (dy, dx)); if (wid == 0) wid = 1; d = 2 * dx - dy; incr1 = 2 * dx; incr2 = 2 * (dx - dy); if (y1 > y2) { y = y2; x = x2; yend = y1; xdirflag = (-1); } else { y = y1; x = x1; yend = y2; xdirflag = 1; } /* Set up line thickness */ wstart = x - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, w, y, color); if (((x2 - x1) * xdirflag) > 0) { while (y < yend) { y++; if (d < 0) { d += incr1; } else { x++; d += incr2; } wstart = x - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, w, y, color); } } else { while (y < yend) { y++; if (d < 0) { d += incr1; } else { x--; d += incr2; } wstart = x - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, w, y, color); } } } } static void dashedSet (gdImagePtr im, int x, int y, int color, int *onP, int *dashStepP, int wid, int vert); void gdImageDashedLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color) { int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag; int dashStep = 0; int on = 1; int wid; int vert; int thick = im->thick; dx = abs (x2 - x1); dy = abs (y2 - y1); if (dy <= dx) { /* More-or-less horizontal. use wid for vertical stroke */ wid = thick * sin (atan2 (dy, dx)); vert = 1; d = 2 * dy - dx; incr1 = 2 * dy; incr2 = 2 * (dy - dx); if (x1 > x2) { x = x2; y = y2; ydirflag = (-1); xend = x1; } else { x = x1; y = y1; ydirflag = 1; xend = x2; } dashedSet (im, x, y, color, &on, &dashStep, wid, vert); if (((y2 - y1) * ydirflag) > 0) { while (x < xend) { x++; if (d < 0) { d += incr1; } else { y++; d += incr2; } dashedSet (im, x, y, color, &on, &dashStep, wid, vert); } } else { while (x < xend) { x++; if (d < 0) { d += incr1; } else { y--; d += incr2; } dashedSet (im, x, y, color, &on, &dashStep, wid, vert); } } } else { /* More-or-less vertical. use wid for horizontal stroke */ wid = thick * sin (atan2 (dy, dx)); vert = 0; d = 2 * dx - dy; incr1 = 2 * dx; incr2 = 2 * (dx - dy); if (y1 > y2) { y = y2; x = x2; yend = y1; xdirflag = (-1); } else { y = y1; x = x1; yend = y2; xdirflag = 1; } dashedSet (im, x, y, color, &on, &dashStep, wid, vert); if (((x2 - x1) * xdirflag) > 0) { while (y < yend) { y++; if (d < 0) { d += incr1; } else { x++; d += incr2; } dashedSet (im, x, y, color, &on, &dashStep, wid, vert); } } else { while (y < yend) { y++; if (d < 0) { d += incr1; } else { x--; d += incr2; } dashedSet (im, x, y, color, &on, &dashStep, wid, vert); } } } } static void dashedSet (gdImagePtr im, int x, int y, int color, int *onP, int *dashStepP, int wid, int vert) { int dashStep = *dashStepP; int on = *onP; int w, wstart; dashStep++; if (dashStep == gdDashSize) { dashStep = 0; on = !on; } if (on) { if (vert) { wstart = y - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, x, w, color); } else { wstart = x - wid / 2; for (w = wstart; w < wstart + wid; w++) gdImageSetPixel (im, w, y, color); } } *dashStepP = dashStep; *onP = on; } #ifdef ORIGINAL_BOUNDS_SAFE int gdImageBoundsSafe (gdImagePtr im, int x, int y) { return (!(((y < 0) || (y >= im->sy)) || ((x < 0) || (x >= im->sx)))); } #endif /* ORIGINAL_BOUNDS_SAFE */ void gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color) { int cx, cy; int px, py; int fline; cx = 0; cy = 0; #ifdef CHARSET_EBCDIC c = ASC (c); #endif /*CHARSET_EBCDIC */ if ((c < f->offset) || (c >= (f->offset + f->nchars))) { return; } fline = (c - f->offset) * f->h * f->w; for (py = y; (py < (y + f->h)); py++) { for (px = x; (px < (x + f->w)); px++) { if (f->data[fline + cy * f->w + cx]) { gdImageSetPixel (im, px, py, color); } cx++; } cx = 0; cy++; } } void gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color) { int cx, cy; int px, py; int fline; cx = 0; cy = 0; #ifdef CHARSET_EBCDIC c = ASC (c); #endif /*CHARSET_EBCDIC */ if ((c < f->offset) || (c >= (f->offset + f->nchars))) { return; } fline = (c - f->offset) * f->h * f->w; for (py = y; (py > (y - f->w)); py--) { for (px = x; (px < (x + f->h)); px++) { if (f->data[fline + cy * f->w + cx]) { gdImageSetPixel (im, px, py, color); } cy++; } cy = 0; cx++; } } void gdImageString (gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color) { int i; int l; l = strlen ((char *) s); for (i = 0; (i < l); i++) { gdImageChar (im, f, x, y, s[i], color); x += f->w; } } void gdImageStringUp (gdImagePtr im, gdFontPtr f, int x, int y, unsigned char *s, int color) { int i; int l; l = strlen ((char *) s); for (i = 0; (i < l); i++) { gdImageCharUp (im, f, x, y, s[i], color); y -= f->w; } } static int strlen16 (unsigned short *s); void gdImageString16 (gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color) { int i; int l; l = strlen16 (s); for (i = 0; (i < l); i++) { gdImageChar (im, f, x, y, s[i], color); x += f->w; } } void gdImageStringUp16 (gdImagePtr im, gdFontPtr f, int x, int y, unsigned short *s, int color) { int i; int l; l = strlen16 (s); for (i = 0; (i < l); i++) { gdImageCharUp (im, f, x, y, s[i], color); y -= f->w; } } static int strlen16 (unsigned short *s) { int len = 0; while (*s) { s++; len++; } return len; } #ifndef HAVE_LSQRT /* If you don't have a nice square root function for longs, you can use ** this hack */ long lsqrt (long n) { long result = (long) sqrt ((double) n); return result; } #endif /* s and e are integers modulo 360 (degrees), with 0 degrees being the rightmost extreme and degrees changing clockwise. cx and cy are the center in pixels; w and h are the horizontal and vertical diameter in pixels. Nice interface, but slow. See gd_arc_f_buggy.c for a better version that doesn't seem to be bug-free yet. */ void gdImageArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) { gdImageFilledArc (im, cx, cy, w, h, s, e, color, gdNoFill); } void gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color, int style) { gdPoint pts[3]; int i; int lx = 0, ly = 0; int fx=0, fy=0; int w2, h2; w2 = w / 2; h2 = h / 2; while (e < s) { e += 360; } for (i = s; (i <= e); i++) { int x, y; x = ((long) gdCosT[i % 360] * (long) w2 / 1024) + cx; y = ((long) gdSinT[i % 360] * (long) h2 / 1024) + cy; if (i != s) { if (!(style & gdChord)) { if (style & gdNoFill) { gdImageLine (im, lx, ly, x, y, color); } else { /* This is expensive! */ pts[0].x = lx; pts[0].y = ly; pts[1].x = x; pts[1].y = y; pts[2].x = cx; pts[2].y = cy; gdImageFilledPolygon (im, pts, 3, color); } } } else { fx = x; fy = y; } lx = x; ly = y; } if (style & gdChord) { if (style & gdNoFill) { if (style & gdEdged) { gdImageLine (im, cx, cy, lx, ly, color); gdImageLine (im, cx, cy, fx, fy, color); } gdImageLine (im, fx, fy, lx, ly, color); } else { pts[0].x = fx; pts[0].y = fy; pts[1].x = lx; pts[1].y = ly; pts[2].x = cx; pts[2].y = cy; gdImageFilledPolygon (im, pts, 3, color); } } else { if (style & gdNoFill) { if (style & gdEdged) { gdImageLine (im, cx, cy, lx, ly, color); gdImageLine (im, cx, cy, fx, fy, color); } } } } void gdImageFilledEllipse (gdImagePtr im, int cx, int cy, int w, int h, int color) { gdImageFilledArc (im, cx, cy, w, h, 0, 360, color, gdPie); } void gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color) { int lastBorder; /* Seek left */ int leftLimit, rightLimit; int i; if (!gdImageBoundsSafe (im, x, y)) return; leftLimit = (-1); if (border < 0) { /* Refuse to fill to a non-solid border */ return; } for (i = x; (i >= 0); i--) { if (gdImageGetPixel (im, i, y) == border) { break; } gdImageSetPixel (im, i, y, color); leftLimit = i; } if (leftLimit == (-1)) { return; } /* Seek right */ rightLimit = x; for (i = (x + 1); (i < im->sx); i++) { if (gdImageGetPixel (im, i, y) == border) { break; } gdImageSetPixel (im, i, y, color); rightLimit = i; } /* Look at lines above and below and start paints */ /* Above */ if (y > 0) { lastBorder = 1; for (i = leftLimit; (i <= rightLimit); i++) { int c; c = gdImageGetPixel (im, i, y - 1); if (lastBorder) { if ((c != border) && (c != color)) { gdImageFillToBorder (im, i, y - 1, border, color); lastBorder = 0; } } else if ((c == border) || (c == color)) { lastBorder = 1; } } } /* Below */ if (y < ((im->sy) - 1)) { lastBorder = 1; for (i = leftLimit; (i <= rightLimit); i++) { int c; c = gdImageGetPixel (im, i, y + 1); if (lastBorder) { if ((c != border) && (c != color)) { gdImageFillToBorder (im, i, y + 1, border, color); lastBorder = 0; } } else if ((c == border) || (c == color)) { lastBorder = 1; } } } } void gdImageFill (gdImagePtr im, int x, int y, int color) { int lastBorder; int old; int leftLimit, rightLimit; int i; if (!gdImageBoundsSafe (im, x, y)) return; old = gdImageGetPixel (im, x, y); if (color == gdTiled) { /* Tile fill -- got to watch out! */ int p, tileColor; int srcx, srcy; if (!im->tile) { return; } /* Refuse to flood-fill with a transparent pattern -- I can't do it without allocating another image */ if (gdImageGetTransparent (im->tile) != (-1)) { return; } srcx = x % gdImageSX (im->tile); srcy = y % gdImageSY (im->tile); p = gdImageGetPixel (im->tile, srcx, srcy); if (im->trueColor) { tileColor = p; } else { if (im->tile->trueColor) { tileColor = gdImageColorResolveAlpha (im, gdTrueColorGetRed (p), gdTrueColorGetGreen (p), gdTrueColorGetBlue (p), gdTrueColorGetAlpha (p)); } else { tileColor = im->tileColorMap[p]; } } if (old == tileColor) { /* Nothing to be done */ return; } } else { if (old == color) { /* Nothing to be done */ return; } } /* Seek left */ leftLimit = (-1); for (i = x; (i >= 0); i--) { if (gdImageGetPixel (im, i, y) != old) { break; } gdImageSetPixel (im, i, y, color); leftLimit = i; } if (leftLimit == (-1)) { return; } /* Seek right */ rightLimit = x; for (i = (x + 1); (i < im->sx); i++) { if (gdImageGetPixel (im, i, y) != old) { break; } gdImageSetPixel (im, i, y, color); rightLimit = i; } /* Look at lines above and below and start paints */ /* Above */ if (y > 0) { lastBorder = 1; for (i = leftLimit; (i <= rightLimit); i++) { int c; c = gdImageGetPixel (im, i, y - 1); if (lastBorder) { if (c == old) { gdImageFill (im, i, y - 1, color); lastBorder = 0; } } else if (c != old) { lastBorder = 1; } } } /* Below */ if (y < ((im->sy) - 1)) { lastBorder = 1; for (i = leftLimit; (i <= rightLimit); i++) { int c; c = gdImageGetPixel (im, i, y + 1); if (lastBorder) { if (c == old) { gdImageFill (im, i, y + 1, color); lastBorder = 0; } } else if (c != old) { lastBorder = 1; } } } } void gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color) { int x1h = x1, x1v = x1, y1h = y1, y1v = y1, x2h = x2, x2v = x2, y2h = y2, y2v = y2; int thick = im->thick; if (thick > 1) { int half = thick / 2; int half1 = thick - half; if (y1 < y2) { y1v = y1h - half; y2v = y2h + half1 - 1; } else { y1v = y1h + half1 - 1; y2v = y2h - half; } } gdImageLine (im, x1h, y1h, x2h, y1h, color); gdImageLine (im, x1h, y2h, x2h, y2h, color); gdImageLine (im, x1v, y1v, x1v, y2v, color); gdImageLine (im, x2v, y1v, x2v, y2v, color); } void gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color) { int x, y; for (y = y1; (y <= y2); y++) { for (x = x1; (x <= x2); x++) { gdImageSetPixel (im, x, y, color); } } } void gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h) { int c; int x, y; int tox, toy; int i; int colorMap[gdMaxColors]; if (dst->trueColor) { /* 2.0: much easier when the destination is truecolor. */ for (y = 0; (y < h); y++) { for (x = 0; (x < w); x++) { int c = gdImageGetTrueColorPixel (src, srcX + x, srcY + y); if (c != src->transparent) { gdImageSetPixel (dst, dstX + x, dstY + y, c); } } } return; } for (i = 0; (i < gdMaxColors); i++) { colorMap[i] = (-1); } toy = dstY; for (y = srcY; (y < (srcY + h)); y++) { tox = dstX; for (x = srcX; (x < (srcX + w)); x++) { int nc; c = gdImageGetPixel (src, x, y); /* Added 7/24/95: support transparent copies */ if (gdImageGetTransparent (src) == c) { tox++; continue; } /* Have we established a mapping for this color? */ if (colorMap[c] == (-1)) { /* If it's the same image, mapping is trivial */ if (dst == src) { nc = c; } else { /* Get best match possible. This function never returns error. */ nc = gdImageColorResolveAlpha ( dst, src->red[c], src->green[c], src->blue[c], src->alpha[c]); } colorMap[c] = nc; } gdImageSetPixel (dst, tox, toy, colorMap[c]); tox++; } toy++; } } /* This function is a substitute for real alpha channel operations, so it doesn't pay attention to the alpha channel. */ void gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) { int c, dc; int x, y; int tox, toy; int ncR, ncG, ncB; toy = dstY; for (y = srcY; (y < (srcY + h)); y++) { tox = dstX; for (x = srcX; (x < (srcX + w)); x++) { int nc; c = gdImageGetPixel (src, x, y); /* Added 7/24/95: support transparent copies */ if (gdImageGetTransparent (src) == c) { tox++; continue; } /* If it's the same image, mapping is trivial */ if (dst == src) { nc = c; } else { dc = gdImageGetPixel (dst, tox, toy); ncR = gdImageRed (src, c) * (pct / 100.0) + gdImageRed (dst, dc) * ((100 - pct) / 100.0); ncG = gdImageGreen (src, c) * (pct / 100.0) + gdImageGreen (dst, dc) * ((100 - pct) / 100.0); ncB = gdImageBlue (src, c) * (pct / 100.0) + gdImageBlue (dst, dc) * ((100 - pct) / 100.0); /* Find a reasonable color */ nc = gdImageColorResolve (dst, ncR, ncG, ncB); } gdImageSetPixel (dst, tox, toy, nc); tox++; } toy++; } } /* This function is a substitute for real alpha channel operations, so it doesn't pay attention to the alpha channel. */ void gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) { int c, dc; int x, y; int tox, toy; int ncR, ncG, ncB; float g; toy = dstY; for (y = srcY; (y < (srcY + h)); y++) { tox = dstX; for (x = srcX; (x < (srcX + w)); x++) { int nc; c = gdImageGetPixel (src, x, y); /* Added 7/24/95: support transparent copies */ if (gdImageGetTransparent (src) == c) { tox++; continue; } /* If it's the same image, mapping is trivial */ if (dst == src) { nc = c; } else { dc = gdImageGetPixel (dst, tox, toy); g = 0.29900 * dst->red[dc] + 0.58700 * dst->green[dc] + 0.11400 * dst->blue[dc]; ncR = gdImageRed (src, c) * (pct / 100.0) + gdImageRed (dst, dc) * g * ((100 - pct) / 100.0); ncG = gdImageGreen (src, c) * (pct / 100.0) + gdImageGreen (dst, dc) * g * ((100 - pct) / 100.0); ncB = gdImageBlue (src, c) * (pct / 100.0) + gdImageBlue (dst, dc) * g * ((100 - pct) / 100.0); /* First look for an exact match */ nc = gdImageColorExact (dst, ncR, ncG, ncB); if (nc == (-1)) { /* No, so try to allocate it */ nc = gdImageColorAllocate (dst, ncR, ncG, ncB); /* If we're out of colors, go for the closest color */ if (nc == (-1)) { nc = gdImageColorClosest (dst, ncR, ncG, ncB); } } } gdImageSetPixel (dst, tox, toy, nc); tox++; } toy++; } } void gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH) { int c; int x, y; int tox, toy; int ydest; int i; int colorMap[gdMaxColors]; /* Stretch vectors */ int *stx; int *sty; /* We only need to use floating point to determine the correct stretch vector for one line's worth. */ double accum; stx = (int *) gdMalloc (sizeof (int) * srcW); sty = (int *) gdMalloc (sizeof (int) * srcH); accum = 0; for (i = 0; (i < srcW); i++) { int got; accum += (double) dstW / (double) srcW; got = (int) floor (accum); stx[i] = got; accum -= got; } accum = 0; for (i = 0; (i < srcH); i++) { int got; accum += (double) dstH / (double) srcH; got = (int) floor (accum); sty[i] = got; accum -= got; } for (i = 0; (i < gdMaxColors); i++) { colorMap[i] = (-1); } toy = dstY; for (y = srcY; (y < (srcY + srcH)); y++) { for (ydest = 0; (ydest < sty[y - srcY]); ydest++) { tox = dstX; for (x = srcX; (x < (srcX + srcW)); x++) { int nc=0; int mapTo; if (!stx[x - srcX]) { continue; } if (dst->trueColor) { mapTo = gdImageGetTrueColorPixel (src, x, y); /* Added 7/24/95: support transparent copies */ if (gdImageGetTransparent (src) == mapTo) { tox++; continue; } } else { c = gdImageGetPixel (src, x, y); /* Added 7/24/95: support transparent copies */ if (gdImageGetTransparent (src) == c) { tox += stx[x - srcX]; continue; } if (src->trueColor) { /* Remap to the palette available in the destination image. This is slow and works badly. */ mapTo = gdImageColorResolveAlpha (dst, gdTrueColorGetRed (c), gdTrueColorGetGreen (c), gdTrueColorGetBlue (c), gdTrueColorGetAlpha (c)); } else { /* Have we established a mapping for this color? */ if (colorMap[c] == (-1)) { /* If it's the same image, mapping is trivial */ if (dst == src) { nc = c; } else { /* Find or create the best match */ mapTo = gdImageColorResolveAlpha (dst, gdTrueColorGetRed (c), gdTrueColorGetGreen (c), gdTrueColorGetBlue (c), gdTrueColorGetAlpha (c)); } colorMap[c] = nc; } mapTo = colorMap[c]; } } for (i = 0; (i < stx[x - srcX]); i++) { gdImageSetPixel (dst, tox, toy, mapTo); tox++; } } toy++; } } gdFree (stx); gdFree (sty); } /* When gd 1.x was first created, floating point was to be avoided. These days it is often faster than table lookups or integer arithmetic. The routine below is shamelessly, gloriously floating point. TBB */ void gdImageCopyResampled (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH) { int x, y; if (!dst->trueColor) { gdImageCopyResized ( dst, src, dstX, dstY, srcX, srcY, dstW, dstH, srcW, srcH); return; } for (y = dstY; (y < dstY + dstH); y++) { for (x = dstX; (x < dstX + dstW); x++) { float sy1, sy2, sx1, sx2; float sx, sy; float spixels = 0; float red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0; sy1 = ((float) y - (float) dstY) * (float) srcH / (float) dstH; sy2 = ((float) (y + 1) - (float) dstY) * (float) srcH / (float) dstH; sy = sy1; do { float yportion; if (floor (sy) == floor (sy1)) { yportion = 1.0 - (sy - floor (sy)); if (yportion > sy2 - sy1) { yportion = sy2 - sy1; } sy = floor (sy); } else if (sy == floor (sy2)) { yportion = sy2 - floor (sy2); } else { yportion = 1.0; } sx1 = ((float) x - (float) dstX) * (float) srcW / dstW; sx2 = ((float) (x + 1) - (float) dstX) * (float) srcW / dstW; sx = sx1; do { float xportion; float pcontribution; int p; if (floor (sx) == floor (sx1)) { xportion = 1.0 - (sx - floor (sx)); if (xportion > sx2 - sx1) { xportion = sx2 - sx1; } sx = floor (sx); } else if (sx == floor (sx2)) { xportion = sx2 - floor (sx2); } else { xportion = 1.0; } pcontribution = xportion * yportion; p = gdImageGetTrueColorPixel ( src, (int) sx, (int) sy); red += gdTrueColorGetRed (p) * pcontribution; green += gdTrueColorGetGreen (p) * pcontribution; blue += gdTrueColorGetBlue (p) * pcontribution; alpha += gdTrueColorGetAlpha (p) * pcontribution; spixels += xportion * yportion; sx += 1.0; } while (sx < sx2); sy += 1.0; } while (sy < sy2); if (spixels != 0.0) { red /= spixels; green /= spixels; blue /= spixels; alpha /= spixels; } /* Clamping to allow for rounding errors above */ if (red > 255.0) { red = 255.0; } if (green > 255.0) { green = 255.0; } if (blue > 255.0) { blue = 255.0; } if (alpha > gdAlphaMax) { alpha = gdAlphaMax; } gdImageSetPixel (dst, x, y, gdTrueColorAlpha ((int) red, (int) green, (int) blue, (int) alpha)); } } } gdImagePtr gdImageCreateFromXbm (FILE * fd) { gdImagePtr im; int bit; int w, h; int bytes; int ch; int i, x, y; char *sp; char s[161]; if (!fgets (s, 160, fd)) { return 0; } sp = &s[0]; /* Skip #define */ sp = strchr (sp, ' '); if (!sp) { return 0; } /* Skip width label */ sp++; sp = strchr (sp, ' '); if (!sp) { return 0; } /* Get width */ w = atoi (sp + 1); if (!w) { return 0; } if (!fgets (s, 160, fd)) { return 0; } sp = s; /* Skip #define */ sp = strchr (sp, ' '); if (!sp) { return 0; } /* Skip height label */ sp++; sp = strchr (sp, ' '); if (!sp) { return 0; } /* Get height */ h = atoi (sp + 1); if (!h) { return 0; } /* Skip declaration line */ if (!fgets (s, 160, fd)) { return 0; } bytes = (w * h / 8) + 1; im = gdImageCreate (w, h); gdImageColorAllocate (im, 255, 255, 255); gdImageColorAllocate (im, 0, 0, 0); x = 0; y = 0; for (i = 0; (i < bytes); i++) { char h[3]; int b; /* Skip spaces, commas, CRs, 0x */ while (1) { ch = getc (fd); if (ch == EOF) { goto fail; } if (ch == 'x') { break; } } /* Get hex value */ ch = getc (fd); if (ch == EOF) { goto fail; } h[0] = ch; ch = getc (fd); if (ch == EOF) { goto fail; } h[1] = ch; h[2] = '\0'; sscanf (h, "%x", &b); for (bit = 1; (bit <= 128); (bit = bit << 1)) { gdImageSetPixel (im, x++, y, (b & bit) ? 1 : 0); if (x == im->sx) { x = 0; y++; if (y == im->sy) { return im; } /* Fix 8/8/95 */ break; } } } /* Shouldn't happen */ fprintf (stderr, "Error: bug in gdImageCreateFromXbm!\n"); return 0; fail: gdImageDestroy (im); return 0; } void gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c) { int i; int lx, ly; if (!n) { return; } lx = p->x; ly = p->y; gdImageLine (im, lx, ly, p[n - 1].x, p[n - 1].y, c); for (i = 1; (i < n); i++) { p++; gdImageLine (im, lx, ly, p->x, p->y, c); lx = p->x; ly = p->y; } } int gdCompareInt (const void *a, const void *b); /* THANKS to Kirsten Schulz for the polygon fixes! */ /* The intersection finding technique of this code could be improved */ /* by remembering the previous intertersection, and by using the slope. */ /* That could help to adjust intersections to produce a nice */ /* interior_extrema. */ void gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c) { int i; int y; int miny, maxy; int x1, y1; int x2, y2; int ind1, ind2; int ints; if (!n) { return; } if (!im->polyAllocated) { im->polyInts = (int *) gdMalloc (sizeof (int) * n); im->polyAllocated = n; } if (im->polyAllocated < n) { while (im->polyAllocated < n) { im->polyAllocated *= 2; } im->polyInts = (int *) gdRealloc (im->polyInts, sizeof (int) * im->polyAllocated); } miny = p[0].y; maxy = p[0].y; for (i = 1; (i < n); i++) { if (p[i].y < miny) { miny = p[i].y; } if (p[i].y > maxy) { maxy = p[i].y; } } /* Fix in 1.3: count a vertex only once */ for (y = miny; (y <= maxy); y++) { /*1.4 int interLast = 0; */ /* int dirLast = 0; */ /* int interFirst = 1; */ ints = 0; for (i = 0; (i < n); i++) { if (!i) { ind1 = n - 1; ind2 = 0; } else { ind1 = i - 1; ind2 = i; } y1 = p[ind1].y; y2 = p[ind2].y; if (y1 < y2) { x1 = p[ind1].x; x2 = p[ind2].x; } else if (y1 > y2) { y2 = p[ind1].y; y1 = p[ind2].y; x2 = p[ind1].x; x1 = p[ind2].x; } else { continue; } if ((y >= y1) && (y < y2)) { im->polyInts[ints++] = (y - y1) * (x2 - x1) / (y2 - y1) + x1; } else if ((y == maxy) && (y > y1) && (y <= y2)) { im->polyInts[ints++] = (y - y1) * (x2 - x1) / (y2 - y1) + x1; } } qsort (im->polyInts, ints, sizeof (int), gdCompareInt); for (i = 0; (i < (ints)); i += 2) { gdImageLine (im, im->polyInts[i], y, im->polyInts[i + 1], y, c); } } } int gdCompareInt (const void *a, const void *b) { return (*(const int *) a) - (*(const int *) b); } void gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels) { if (im->style) { gdFree (im->style); } im->style = (int *) gdMalloc (sizeof (int) * noOfPixels); memcpy (im->style, style, sizeof (int) * noOfPixels); im->styleLength = noOfPixels; im->stylePos = 0; } void gdImageSetThickness (gdImagePtr im, int thickness) { im->thick = thickness; } void gdImageSetBrush (gdImagePtr im, gdImagePtr brush) { int i; im->brush = brush; if ((!im->trueColor) && (!im->brush->trueColor)) { for (i = 0; (i < gdImageColorsTotal (brush)); i++) { int index; index = gdImageColorResolveAlpha (im, gdImageRed (brush, i), gdImageGreen (brush, i), gdImageBlue (brush, i), gdImageAlpha (brush, i)); im->brushColorMap[i] = index; } } } void gdImageSetTile (gdImagePtr im, gdImagePtr tile) { int i; im->tile = tile; if ((!im->trueColor) && (!im->tile->trueColor)) { for (i = 0; (i < gdImageColorsTotal (tile)); i++) { int index; index = gdImageColorResolveAlpha (im, gdImageRed (tile, i), gdImageGreen (tile, i), gdImageBlue (tile, i), gdImageAlpha (tile, i)); im->tileColorMap[i] = index; } } } void gdImageInterlace (gdImagePtr im, int interlaceArg) { im->interlace = interlaceArg; } int gdImageCompare (gdImagePtr im1, gdImagePtr im2) { int x, y; int p1, p2; int cmpStatus = 0; int sx, sy; if (im1->interlace != im2->interlace) { cmpStatus |= GD_CMP_INTERLACE; } if (im1->transparent != im2->transparent) { cmpStatus |= GD_CMP_TRANSPARENT; } if (im1->trueColor != im2->trueColor) { cmpStatus |= GD_CMP_TRUECOLOR; } sx = im1->sx; if (im1->sx != im2->sx) { cmpStatus |= GD_CMP_SIZE_X + GD_CMP_IMAGE; if (im2->sx < im1->sx) { sx = im2->sx; } } sy = im1->sy; if (im1->sy != im2->sy) { cmpStatus |= GD_CMP_SIZE_Y + GD_CMP_IMAGE; if (im2->sy < im1->sy) { sy = im2->sy; } } if (im1->colorsTotal != im2->colorsTotal) { cmpStatus |= GD_CMP_NUM_COLORS; } for (y = 0; (y < sy); y++) { for (x = 0; (x < sx); x++) { p1 = im1->pixels[y][x]; p2 = im2->pixels[y][x]; if (gdImageRed (im1, p1) != gdImageRed (im2, p2)) { cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE; break; } if (gdImageGreen (im1, p1) != gdImageGreen (im2, p2)) { cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE; break; } if (gdImageBlue (im1, p1) != gdImageBlue (im2, p2)) { cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE; break; } #if 0 /* Soon we'll add alpha channel to palettes */ if (gdImageAlpha (im1, p1) != gdImageAlpha (im2, p2)) { cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE; break; } #endif } if (cmpStatus & GD_CMP_COLOR) { break; }; } return cmpStatus; } int gdAlphaBlend (int dst, int src) { return (((((gdAlphaTransparent - gdTrueColorGetAlpha (src)) * gdTrueColorGetRed (src) / gdAlphaMax) + (gdTrueColorGetAlpha (src) * gdTrueColorGetRed (dst)) / gdAlphaMax) << 16) + ((((gdAlphaTransparent - gdTrueColorGetAlpha (src)) * gdTrueColorGetGreen (src) / gdAlphaMax) + (gdTrueColorGetAlpha (src) * gdTrueColorGetGreen (dst)) / gdAlphaMax) << 8) + (((gdAlphaTransparent - gdTrueColorGetAlpha (src)) * gdTrueColorGetBlue (src) / gdAlphaMax) + (gdTrueColorGetAlpha (src) * gdTrueColorGetBlue (dst)) / gdAlphaMax)); } void gdImageAlphaBlending (gdImagePtr im, int alphaBlendingArg) { im->alphaBlendingFlag = alphaBlendingArg; } void gdImageSaveAlpha (gdImagePtr im, int saveAlphaArg) { im->saveAlphaFlag = saveAlphaArg; } libwmf-0.2.8.4/src/extra/gd/gd_gd.c0000644000077100007710000001057710271767771016250 0ustar fjffjf00000000000000 #include #include #include #include #include "gd.h" #define TRUE 1 #define FALSE 0 /* Exported functions: */ extern void gdImageGd (gdImagePtr im, FILE * out); /* Use this for commenting out debug-print statements. */ /* Just use the first '#define' to allow all the prints... */ /*#define GD2_DBG(s) (s) */ #define GD2_DBG(s) /* */ /* Shared code to read color tables from gd file. */ /* */ int _gdGetColors (gdIOCtx * in, gdImagePtr im, int gd2xFlag) { int i; if (gd2xFlag) { if (!gdGetByte (&im->trueColor, in)) { goto fail1; } /* This should have been a word all along */ if (!im->trueColor) { if (!gdGetWord (&im->colorsTotal, in)) { goto fail1; } } /* Int to accommodate truecolor single-color transparency */ if (!gdGetInt (&im->transparent, in)) { goto fail1; } } else { if (!gdGetByte (&im->colorsTotal, in)) { goto fail1; } if (!gdGetWord (&im->transparent, in)) { goto fail1; } if (im->transparent == 257) { im->transparent = (-1); } } GD2_DBG (printf ("Pallette had %d colours (T=%d)\n", im->colorsTotal, im->transparent)); for (i = 0; (i < gdMaxColors); i++) { if (!gdGetByte (&im->red[i], in)) { goto fail1; } if (!gdGetByte (&im->green[i], in)) { goto fail1; } if (!gdGetByte (&im->blue[i], in)) { goto fail1; } if (gd2xFlag) { if (!gdGetByte (&im->alpha[i], in)) { goto fail1; } } } for (i = 0; (i < im->colorsTotal); i++) { im->open[i] = 0; }; return TRUE; fail1: return FALSE; } /* */ /* Use the common basic header info to make the image object. */ /* This is also called from _gd2CreateFromFile */ /* */ static gdImagePtr _gdCreateFromFile (gdIOCtx * in, int *sx, int *sy) { gdImagePtr im; int gd2xFlag = 0; if (!gdGetWord (sx, in)) { goto fail1; } if (*sx == 65535) { /* This is a gd 2.0 .gd file */ gd2xFlag = 1; if (!gdGetWord (sx, in)) { goto fail1; } } if (!gdGetWord (sy, in)) { goto fail1; } GD2_DBG (printf ("Image is %dx%d\n", *sx, *sy)); im = gdImageCreate (*sx, *sy); if (!_gdGetColors (in, im, gd2xFlag)) { goto fail2; } return im; fail2: gdImageDestroy (im); fail1: return 0; } gdImagePtr gdImageCreateFromGd (FILE * inFile) { gdImagePtr im; gdIOCtx *in; in = gdNewFileCtx (inFile); im = gdImageCreateFromGdCtx (in); in->free (in); return im; } gdImagePtr gdImageCreateFromGdCtx (gdIOCtxPtr in) { int sx, sy; int x, y; gdImagePtr im; /* Read the header */ im = _gdCreateFromFile (in, &sx, &sy); if (im == NULL) { goto fail1; }; /* Then the data... */ for (y = 0; (y < sy); y++) { for (x = 0; (x < sx); x++) { int ch; ch = gdGetC (in); if (ch == EOF) { goto fail2; } /* ROW-MAJOR IN GD 1.3 */ im->pixels[y][x] = ch; } } return im; fail2: gdImageDestroy (im); fail1: return 0; } void _gdPutColors (gdImagePtr im, gdIOCtx * out) { int i; gdPutC (im->trueColor, out); if (!im->trueColor) { gdPutWord (im->colorsTotal, out); } gdPutInt (im->transparent, out); if (!im->trueColor) { for (i = 0; (i < gdMaxColors); i++) { gdPutC ((unsigned char) im->red[i], out); gdPutC ((unsigned char) im->green[i], out); gdPutC ((unsigned char) im->blue[i], out); gdPutC ((unsigned char) im->alpha[i], out); } } } static void _gdPutHeader (gdImagePtr im, gdIOCtx * out) { /* 65535 indicates this is a gd 2.x .gd file. */ gdPutWord (65535, out); gdPutWord (im->sx, out); gdPutWord (im->sy, out); _gdPutColors (im, out); } static void _gdImageGd (gdImagePtr im, gdIOCtx * out) { int x, y; _gdPutHeader (im, out); for (y = 0; (y < im->sy); y++) { for (x = 0; (x < im->sx); x++) { /* ROW-MAJOR IN GD 1.3 */ if (im->trueColor) { gdPutInt (im->tpixels[y][x], out); } else { gdPutC ((unsigned char) im->pixels[y][x], out); } } } } void gdImageGd (gdImagePtr im, FILE * outFile) { gdIOCtx *out = gdNewFileCtx (outFile); _gdImageGd (im, out); out->free (out); } void * gdImageGdPtr (gdImagePtr im, int *size) { void *rv; gdIOCtx *out = gdNewDynamicCtx (2048, NULL); _gdImageGd (im, out); rv = gdDPExtractData (out, size); out->free (out); return rv; } libwmf-0.2.8.4/src/extra/gd/gd_gd2.c0000644000077100007710000004652510271767771016334 0ustar fjffjf00000000000000/* * gd_gd2.c * * Implements the I/O and support for the GD2 format. * * Changing the definition of GD2_DBG (below) will cause copious messages * to be displayed while it processes requests. * * Designed, Written & Copyright 1999, Philip Warner. * */ #include #include #include #include #include #include #include "gd.h" #include "gdhelpers.h" #define TRUE 1 #define FALSE 0 /* Use this for commenting out debug-print statements. */ /* Just use the first '#define' to allow all the prints... */ /*#define GD2_DBG(s) (s) */ #define GD2_DBG(s) typedef struct { int offset; int size; } t_chunk_info; extern int _gdGetColors (gdIOCtx * in, gdImagePtr im, int gd2xFlag); extern void _gdPutColors (gdImagePtr im, gdIOCtx * out); /* */ /* Read the extra info in the gd2 header. */ /* */ static int _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy, int *cs, int *vers, int *fmt, int *ncx, int *ncy, t_chunk_info ** chunkIdx) { int i; int ch; char id[5]; t_chunk_info *cidx; int sidx; int nc; GD2_DBG (printf ("Reading gd2 header info\n")); for (i = 0; i < 4; i++) { ch = gdGetC (in); if (ch == EOF) { goto fail1; }; id[i] = ch; }; id[4] = 0; GD2_DBG (printf ("Got file code: %s\n", id)); /* Equiv. of 'magick'. */ if (strcmp (id, GD2_ID) != 0) { GD2_DBG (printf ("Not a valid gd2 file\n")); goto fail1; }; /* Version */ if (gdGetWord (vers, in) != 1) { goto fail1; }; GD2_DBG (printf ("Version: %d\n", *vers)); if ((*vers != 1) && (*vers != 2)) { GD2_DBG (printf ("Bad version: %d\n", *vers)); goto fail1; }; /* Image Size */ if (!gdGetWord (sx, in)) { GD2_DBG (printf ("Could not get x-size\n")); goto fail1; } if (!gdGetWord (sy, in)) { GD2_DBG (printf ("Could not get y-size\n")); goto fail1; } GD2_DBG (printf ("Image is %dx%d\n", *sx, *sy)); /* Chunk Size (pixels, not bytes!) */ if (gdGetWord (cs, in) != 1) { goto fail1; }; GD2_DBG (printf ("ChunkSize: %d\n", *cs)); if ((*cs < GD2_CHUNKSIZE_MIN) || (*cs > GD2_CHUNKSIZE_MAX)) { GD2_DBG (printf ("Bad chunk size: %d\n", *cs)); goto fail1; }; /* Data Format */ if (gdGetWord (fmt, in) != 1) { goto fail1; }; GD2_DBG (printf ("Format: %d\n", *fmt)); if ((*fmt != GD2_FMT_RAW) && (*fmt != GD2_FMT_COMPRESSED)) { GD2_DBG (printf ("Bad data format: %d\n", *fmt)); goto fail1; }; /* # of chunks wide */ if (gdGetWord (ncx, in) != 1) { goto fail1; }; GD2_DBG (printf ("%d Chunks Wide\n", *ncx)); /* # of chunks high */ if (gdGetWord (ncy, in) != 1) { goto fail1; }; GD2_DBG (printf ("%d Chunks vertically\n", *ncy)); if ((*fmt) == GD2_FMT_COMPRESSED) { nc = (*ncx) * (*ncy); GD2_DBG (printf ("Reading %d chunk index entries\n", nc)); sidx = sizeof (t_chunk_info) * nc; cidx = gdCalloc (sidx, 1); for (i = 0; i < nc; i++) { if (gdGetInt (&cidx[i].offset, in) != 1) { goto fail1; }; if (gdGetInt (&cidx[i].size, in) != 1) { goto fail1; }; }; *chunkIdx = cidx; }; GD2_DBG (printf ("gd2 header complete\n")); return 1; fail1: return 0; } static gdImagePtr _gd2CreateFromFile (gdIOCtxPtr in, int *sx, int *sy, int *cs, int *vers, int *fmt, int *ncx, int *ncy, t_chunk_info ** cidx) { gdImagePtr im; if (_gd2GetHeader (in, sx, sy, cs, vers, fmt, ncx, ncy, cidx) != 1) { GD2_DBG (printf ("Bad GD2 header\n")); goto fail1; } im = gdImageCreate (*sx, *sy); if (im == NULL) { GD2_DBG (printf ("Could not create gdImage\n")); goto fail1; }; if (!_gdGetColors (in, im, (*vers) == 2)) { GD2_DBG (printf ("Could not read color palette\n")); goto fail2; } GD2_DBG (printf ("Image palette completed: %d colours\n", im->colorsTotal)); return im; fail2: gdImageDestroy (im); return 0; fail1: return 0; } static int _gd2ReadChunk (int offset, char *compBuf, int compSize, char *chunkBuf, uLongf * chunkLen, gdIOCtx * in) { int zerr; if (gdTell (in) != offset) { GD2_DBG (printf ("Positioning in file to %d\n", offset)); gdSeek (in, offset); } else { GD2_DBG (printf ("Already Positioned in file to %d\n", offset)); }; /* Read and uncompress an entire chunk. */ GD2_DBG (printf ("Reading file\n")); if (gdGetBuf (compBuf, compSize, in) != compSize) { return FALSE; }; GD2_DBG (printf ("Got %d bytes. Uncompressing into buffer of %d bytes\n", compSize, *chunkLen)); zerr = uncompress ((unsigned char *) chunkBuf, chunkLen, (unsigned char *) compBuf, compSize); if (zerr != Z_OK) { GD2_DBG (printf ("Error %d from uncompress\n", zerr)); return FALSE; }; GD2_DBG (printf ("Got chunk\n")); return TRUE; } gdImagePtr gdImageCreateFromGd2 (FILE * inFile) { gdIOCtx *in = gdNewFileCtx (inFile); gdImagePtr im; im = gdImageCreateFromGd2Ctx (in); in->free (in); return im; } gdImagePtr gdImageCreateFromGd2Ctx (gdIOCtxPtr in) { int sx, sy; int i; int ncx, ncy, nc, cs, cx, cy; int x, y, ylo, yhi, xlo, xhi; int vers, fmt; t_chunk_info *chunkIdx = NULL; /* So we can gdFree it with impunity. */ unsigned char *chunkBuf = NULL; /* So we can gdFree it with impunity. */ int chunkNum = 0; int chunkMax=0; uLongf chunkLen; int chunkPos=0; int compMax; int bytesPerPixel; char *compBuf = NULL; /* So we can gdFree it with impunity. */ gdImagePtr im; /* Get the header */ im = _gd2CreateFromFile (in, &sx, &sy, &cs, &vers, &fmt, &ncx, &ncy, &chunkIdx); if (im == NULL) { return 0; }; bytesPerPixel = im->trueColor ? 4 : 1; nc = ncx * ncy; if (fmt == GD2_FMT_COMPRESSED) { /* Find the maximum compressed chunk size. */ compMax = 0; for (i = 0; (i < nc); i++) { if (chunkIdx[i].size > compMax) { compMax = chunkIdx[i].size; }; }; compMax++; /* Allocate buffers */ chunkMax = cs * bytesPerPixel * cs; chunkBuf = gdCalloc (chunkMax, 1); compBuf = gdCalloc (compMax, 1); GD2_DBG (printf ("Largest compressed chunk is %d bytes\n", compMax)); }; /* if ( (ncx != sx / cs) || (ncy != sy / cs)) { */ /* goto fail2; */ /* }; */ /* Read the data... */ for (cy = 0; (cy < ncy); cy++) { for (cx = 0; (cx < ncx); cx++) { ylo = cy * cs; yhi = ylo + cs; if (yhi > im->sy) { yhi = im->sy; }; GD2_DBG (printf ("Processing Chunk %d (%d, %d), y from %d to %d\n", chunkNum, cx, cy, ylo, yhi)); if (fmt == GD2_FMT_COMPRESSED) { chunkLen = chunkMax; if (!_gd2ReadChunk (chunkIdx[chunkNum].offset, compBuf, chunkIdx[chunkNum].size, chunkBuf, &chunkLen, in)) { GD2_DBG (printf ("Error reading comproessed chunk\n")); goto fail2; }; chunkPos = 0; }; for (y = ylo; (y < yhi); y++) { xlo = cx * cs; xhi = xlo + cs; if (xhi > im->sx) { xhi = im->sx; }; /*GD2_DBG(printf("y=%d: ",y)); */ if (fmt == GD2_FMT_RAW) { for (x = xlo; x < xhi; x++) { if (im->trueColor) { if (!gdGetInt (&im->tpixels[y][x], in)) { /*printf("EOF while reading\n"); */ /*gdImageDestroy(im); */ /*return 0; */ im->tpixels[y][x] = 0; } } else { int ch; if (!gdGetByte (&ch, in)) { /*printf("EOF while reading\n"); */ /*gdImageDestroy(im); */ /*return 0; */ ch = 0; } im->pixels[y][x] = ch; } } } else { for (x = xlo; x < xhi; x++) { if (im->trueColor) { /* 2.0.1: work around a gcc bug by being verbose. TBB */ int a = chunkBuf[chunkPos++] << 24; int r = chunkBuf[chunkPos++] << 16; int g = chunkBuf[chunkPos++] << 8; int b = chunkBuf[chunkPos++]; im->pixels[y][x] = a + r + g + b; } else { im->pixels[y][x] = chunkBuf[chunkPos++]; } }; }; /*GD2_DBG(printf("\n")); */ }; chunkNum++; }; }; GD2_DBG (printf ("Freeing memory\n")); gdFree (chunkBuf); gdFree (compBuf); gdFree (chunkIdx); GD2_DBG (printf ("Done\n")); return im; fail2: gdImageDestroy (im); gdFree (chunkBuf); gdFree (compBuf); gdFree (chunkIdx); return 0; } gdImagePtr gdImageCreateFromGd2Part (FILE * inFile, int srcx, int srcy, int w, int h) { gdImagePtr im; gdIOCtx *in = gdNewFileCtx (inFile); im = gdImageCreateFromGd2PartCtx (in, srcx, srcy, w, h); in->free (in); return im; } gdImagePtr gdImageCreateFromGd2PartCtx (gdIOCtx * in, int srcx, int srcy, int w, int h) { int scx, scy, ecx, ecy, fsx, fsy; int nc, ncx, ncy, cs, cx, cy; int x, y, ylo, yhi, xlo, xhi; int dstart, dpos; int i; int ch, vers, fmt; t_chunk_info *chunkIdx = NULL; char *chunkBuf = NULL; int chunkNum; int chunkMax=0; uLongf chunkLen; int chunkPos=0; int compMax; char *compBuf = NULL; gdImagePtr im; /* */ /* The next few lines are basically copied from gd2CreateFromFile */ /* - we change the file size, so don't want to use the code directly. */ /* but we do need to know the file size. */ /* */ if (_gd2GetHeader (in, &fsx, &fsy, &cs, &vers, &fmt, &ncx, &ncy, &chunkIdx) != 1) { goto fail1; } GD2_DBG (printf ("File size is %dx%d\n", fsx, fsy)); /* This is the difference - make a file based on size of chunks. */ im = gdImageCreate (w, h); if (im == NULL) { goto fail1; }; if (!_gdGetColors (in, im, vers == 2)) { goto fail2; } GD2_DBG (printf ("Image palette completed: %d colours\n", im->colorsTotal)); /* Process the header info */ nc = ncx * ncy; if (fmt == GD2_FMT_COMPRESSED) { /* Find the maximum compressed chunk size. */ compMax = 0; for (i = 0; (i < nc); i++) { if (chunkIdx[i].size > compMax) { compMax = chunkIdx[i].size; }; }; compMax++; if (im->trueColor) { chunkMax = cs * cs * 4; } else { chunkMax = cs * cs; } chunkBuf = gdCalloc (chunkMax, 1); compBuf = gdCalloc (compMax, 1); }; /* Don't bother with this... */ /* if ( (ncx != sx / cs) || (ncy != sy / cs)) { */ /* goto fail2; */ /* }; */ /* Work out start/end chunks */ scx = srcx / cs; scy = srcy / cs; if (scx < 0) { scx = 0; }; if (scy < 0) { scy = 0; }; ecx = (srcx + w) / cs; ecy = (srcy + h) / cs; if (ecx >= ncx) { ecx = ncx - 1; }; if (ecy >= ncy) { ecy = ncy - 1; }; /* Remember file position of image data. */ dstart = gdTell (in); GD2_DBG (printf ("Data starts at %d\n", dstart)); /* Loop through the chunks. */ for (cy = scy; (cy <= ecy); cy++) { ylo = cy * cs; yhi = ylo + cs; if (yhi > fsy) { yhi = fsy; }; for (cx = scx; (cx <= ecx); cx++) { xlo = cx * cs; xhi = xlo + cs; if (xhi > fsx) { xhi = fsx; }; GD2_DBG (printf ("Processing Chunk (%d, %d), from %d to %d\n", cx, cy, ylo, yhi)); if (fmt == GD2_FMT_RAW) { GD2_DBG (printf ("Using raw format data\n")); if (im->trueColor) { dpos = (cy * (cs * fsx) + cx * cs * (yhi - ylo) * 4) + dstart; } else { dpos = cy * (cs * fsx) + cx * cs * (yhi - ylo) + dstart; } if (gdSeek (in, dpos) != 0) { printf ("Error from seek: %d\n", errno); goto fail2; }; GD2_DBG (printf ("Reading (%d, %d) from position %d\n", cx, cy, dpos - dstart)); } else { chunkNum = cx + cy * ncx; chunkLen = chunkMax; if (!_gd2ReadChunk (chunkIdx[chunkNum].offset, compBuf, chunkIdx[chunkNum].size, chunkBuf, &chunkLen, in)) { printf ("Error reading comproessed chunk\n"); goto fail2; }; chunkPos = 0; GD2_DBG (printf ("Reading (%d, %d) from chunk %d\n", cx, cy, chunkNum)); }; GD2_DBG (printf (" into (%d, %d) - (%d, %d)\n", xlo, ylo, xhi, yhi)); for (y = ylo; (y < yhi); y++) { for (x = xlo; x < xhi; x++) { if (fmt == GD2_FMT_RAW) { if (im->trueColor) { if (!gdGetInt (&ch, in)) { ch = 0; /*printf("EOF while reading file\n"); */ /*goto fail2; */ } } else { ch = gdGetC (in); if (ch == EOF) { ch = 0; /*printf("EOF while reading file\n"); */ /*goto fail2; */ } } } else { if (im->trueColor) { ch = (chunkBuf[chunkPos] << 24) + (chunkBuf[chunkPos+1] << 16) + (chunkBuf[chunkPos+2] << 8) + (chunkBuf[chunkPos+3]); chunkPos+=4; } else { ch = chunkBuf[chunkPos++]; } }; /* Only use a point that is in the image. */ if ((x >= srcx) && (x < (srcx + w)) && (x < fsx) && (x >= 0) && (y >= srcy) && (y < (srcy + h)) && (y < fsy) && (y >= 0) ) { im->pixels[y - srcy][x - srcx] = ch; } }; }; }; }; gdFree (chunkBuf); gdFree (compBuf); gdFree (chunkIdx); return im; fail2: gdImageDestroy (im); fail1: gdFree (chunkBuf); gdFree (compBuf); gdFree (chunkIdx); return 0; } static void _gd2PutHeader (gdImagePtr im, gdIOCtx * out, int cs, int fmt, int cx, int cy) { int i; /* Send the gd2 id, to verify file format. */ for (i = 0; i < 4; i++) { gdPutC ((unsigned char) (GD2_ID[i]), out); }; /* */ /* We put the version info first, so future versions can easily change header info. */ /* */ gdPutWord (GD2_VERS, out); gdPutWord (im->sx, out); gdPutWord (im->sy, out); gdPutWord (cs, out); gdPutWord (fmt, out); gdPutWord (cx, out); gdPutWord (cy, out); } static void _gdImageGd2 (gdImagePtr im, gdIOCtx * out, int cs, int fmt) { int ncx, ncy, cx, cy; int x, y, ylo, yhi, xlo, xhi; int chunkLen; int chunkNum = 0; char *chunkData = NULL; /* So we can gdFree it with impunity. */ char *compData = NULL; /* So we can gdFree it with impunity. */ uLongf compLen; int idxPos=0; int idxSize; t_chunk_info *chunkIdx = NULL; int posSave; int bytesPerPixel = im->trueColor ? 4 : 1; int compMax=0; /*printf("Trying to write GD2 file\n"); */ /* */ /* Force fmt to a valid value since we don't return anything. */ /* */ if ((fmt == 0) || ((fmt != GD2_FMT_RAW) && (fmt != GD2_FMT_COMPRESSED))) { fmt = GD2_FMT_COMPRESSED; }; /* */ /* Make sure chunk size is valid. These are arbitrary values; 64 because it seems */ /* a little silly to expect performance improvements on a 64x64 bit scale, and */ /* 4096 because we buffer one chunk, and a 16MB buffer seems a little largei - it may be */ /* OK for one user, but for another to read it, they require the buffer. */ /* */ if (cs == 0) { cs = GD2_CHUNKSIZE; } else if (cs < GD2_CHUNKSIZE_MIN) { cs = GD2_CHUNKSIZE_MIN; } else if (cs > GD2_CHUNKSIZE_MAX) { cs = GD2_CHUNKSIZE_MAX; }; /* Work out number of chunks. */ ncx = im->sx / cs + 1; ncy = im->sy / cs + 1; /* Write the standard header. */ _gd2PutHeader (im, out, cs, fmt, ncx, ncy); if (fmt == GD2_FMT_COMPRESSED) { /* */ /* Work out size of buffer for compressed data, If CHUNKSIZE is large, */ /* then these will be large! */ /* */ /* The zlib notes say output buffer size should be (input size) * 1.01 * 12 */ /* - we'll use 1.02 to be paranoid. */ /* */ compMax = cs * bytesPerPixel * cs * 1.02 + 12; /* */ /* Allocate the buffers. */ /* */ chunkData = gdCalloc (cs * bytesPerPixel * cs, 1); compData = gdCalloc (compMax, 1); /* */ /* Save the file position of chunk index, and allocate enough space for */ /* each chunk_info block . */ /* */ idxPos = gdTell (out); idxSize = ncx * ncy * sizeof (t_chunk_info); GD2_DBG (printf ("Index size is %d\n", idxSize)); gdSeek (out, idxPos + idxSize); chunkIdx = gdCalloc (idxSize * sizeof (t_chunk_info), 1); }; _gdPutColors (im, out); GD2_DBG (printf ("Size: %dx%d\n", im->sx, im->sy)); GD2_DBG (printf ("Chunks: %dx%d\n", ncx, ncy)); for (cy = 0; (cy < ncy); cy++) { for (cx = 0; (cx < ncx); cx++) { ylo = cy * cs; yhi = ylo + cs; if (yhi > im->sy) { yhi = im->sy; }; GD2_DBG (printf ("Processing Chunk (%dx%d), y from %d to %d\n", cx, cy, ylo, yhi)); chunkLen = 0; for (y = ylo; (y < yhi); y++) { /*GD2_DBG(printf("y=%d: ",y)); */ xlo = cx * cs; xhi = xlo + cs; if (xhi > im->sx) { xhi = im->sx; }; if (fmt == GD2_FMT_COMPRESSED) { for (x = xlo; x < xhi; x++) { int p = im->pixels[y][x]; /*GD2_DBG(printf("%d...",x)); */ if (im->trueColor) { chunkData[chunkLen++] = gdTrueColorGetAlpha (p); chunkData[chunkLen++] = gdTrueColorGetRed (p); chunkData[chunkLen++] = gdTrueColorGetGreen (p); chunkData[chunkLen++] = gdTrueColorGetBlue (p); } else { chunkData[chunkLen++] = p; } }; } else { for (x = xlo; x < xhi; x++) { /*GD2_DBG(printf("%d, ",x)); */ if (im->trueColor) { gdPutInt (im->tpixels[y][x], out); } else { gdPutC ((unsigned char) im->pixels[y][x], out); } }; }; /*GD2_DBG(printf("y=%d done.\n",y)); */ }; if (fmt == GD2_FMT_COMPRESSED) { compLen = compMax; if (compress ((unsigned char *) &compData[0], &compLen, (unsigned char *) &chunkData[0], chunkLen) != Z_OK) { printf ("Error from compressing\n"); } else { chunkIdx[chunkNum].offset = gdTell (out); chunkIdx[chunkNum++].size = compLen; GD2_DBG (printf ("Chunk %d size %d offset %d\n", chunkNum, chunkIdx[chunkNum - 1].size, chunkIdx[chunkNum - 1].offset)); if (gdPutBuf (compData, compLen, out) <= 0) { /* Any alternate suggestions for handling this? */ printf ("Error %d on write\n", errno); }; }; }; }; }; if (fmt == GD2_FMT_COMPRESSED) { /* Save the position, write the index, restore position (paranoia). */ GD2_DBG (printf ("Seeking %d to write index\n", idxPos)); posSave = gdTell (out); gdSeek (out, idxPos); GD2_DBG (printf ("Writing index\n")); for (x = 0; x < chunkNum; x++) { GD2_DBG (printf ("Chunk %d size %d offset %d\n", x, chunkIdx[x].size, chunkIdx[x].offset)); gdPutInt (chunkIdx[x].offset, out); gdPutInt (chunkIdx[x].size, out); }; /* We don't use fwrite for *endian reasons. */ /*fwrite(chunkIdx, sizeof(int)*2, chunkNum, out); */ gdSeek (out, posSave); }; GD2_DBG (printf ("Freeing memory\n")); gdFree (chunkData); gdFree (compData); gdFree (chunkIdx); GD2_DBG (printf ("Done\n")); /*printf("Memory block size is %d\n",gdTell(out)); */ } void gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt) { gdIOCtx *out = gdNewFileCtx (outFile); _gdImageGd2 (im, out, cs, fmt); out->free (out); } void * gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size) { void *rv; gdIOCtx *out = gdNewDynamicCtx (2048, NULL); _gdImageGd2 (im, out, cs, fmt); rv = gdDPExtractData (out, size); out->free (out); return rv; } libwmf-0.2.8.4/src/extra/gd/gd_io.c0000644000077100007710000000545707301470216016247 0ustar fjffjf00000000000000 /* * io.c * * Implements the imple I/O 'helper' routines. * * Not really essential, but these routines were used extensively in GD, * so they were moved here. They also make IOCtx calls look better... * * Written (or, at least, moved) 1999, Philip Warner. * */ #include #include #include #include "gd.h" /* Use this for commenting out debug-print statements. */ /* Just use the first '#define' to allow all the prints... */ /*#define IO_DBG(s) (s) */ #define IO_DBG(s) /* * Write out a word to the I/O context pointer */ void Putword (int w, gdIOCtx * ctx) { unsigned char buf[2]; buf[0] = w & 0xff; buf[1] = (w / 256) & 0xff; (ctx->putBuf) (ctx, (char *) buf, 2); } void Putchar (int c, gdIOCtx * ctx) { (ctx->putC) (ctx, c & 0xff); } void gdPutC (const unsigned char c, gdIOCtx * ctx) { (ctx->putC) (ctx, c); } void gdPutWord (int w, gdIOCtx * ctx) { IO_DBG (printf ("Putting word...\n")); (ctx->putC) (ctx, (unsigned char) (w >> 8)); (ctx->putC) (ctx, (unsigned char) (w & 0xFF)); IO_DBG (printf ("put.\n")); } void gdPutInt (int w, gdIOCtx * ctx) { IO_DBG (printf ("Putting int...\n")); (ctx->putC) (ctx, (unsigned char) (w >> 24)); (ctx->putC) (ctx, (unsigned char) ((w >> 16) & 0xFF)); (ctx->putC) (ctx, (unsigned char) ((w >> 8) & 0xFF)); (ctx->putC) (ctx, (unsigned char) (w & 0xFF)); IO_DBG (printf ("put.\n")); } int gdGetC (gdIOCtx * ctx) { return ((ctx->getC) (ctx)); } int gdGetByte (int *result, gdIOCtx * ctx) { int r; r = (ctx->getC) (ctx); if (r == EOF) { return 0; } *result = r; return 1; } int gdGetWord (int *result, gdIOCtx * ctx) { int r; r = (ctx->getC) (ctx); if (r == EOF) { return 0; } *result = r << 8; r = (ctx->getC) (ctx); if (r == EOF) { return 0; } *result += r; return 1; } int gdGetInt (int *result, gdIOCtx * ctx) { int r; r = (ctx->getC) (ctx); if (r == EOF) { return 0; } *result = r << 24; r = (ctx->getC) (ctx); if (r == EOF) { return 0; } *result += r << 16; r = (ctx->getC) (ctx); if (r == EOF) { return 0; } *result += r << 8; r = (ctx->getC) (ctx); if (r == EOF) { return 0; } *result += r; return 1; } int gdPutBuf (const void *buf, int size, gdIOCtx * ctx) { IO_DBG (printf ("Putting buf...\n")); return (ctx->putBuf) (ctx, buf, size); IO_DBG (printf ("put.\n")); } int gdGetBuf (void *buf, int size, gdIOCtx * ctx) { return (ctx->getBuf) (ctx, buf, size); } int gdSeek (gdIOCtx * ctx, const int pos) { IO_DBG (printf ("Seeking...\n")); return ((ctx->seek) (ctx, pos)); IO_DBG (printf ("Done.\n")); } long gdTell (gdIOCtx * ctx) { IO_DBG (printf ("Telling...\n")); return ((ctx->tell) (ctx)); IO_DBG (printf ("told.\n")); } libwmf-0.2.8.4/src/extra/gd/gd_io_dp.c0000644000077100007710000001670407301470216016727 0ustar fjffjf00000000000000 /* * io_dp.c * * Implements the dynamic pointer interface. * * Based on GD.pm code by Lincoln Stein for interfacing to libgd. * Added support for reading as well as support for 'tell' and 'seek'. * * As will all I/O modules, most functions are for local use only (called * via function pointers in the I/O context). * * gdDPExtractData is the exception to this: it will return the pointer to * the internal data, and reset the internal storage. * * Written/Modified 1999, Philip Warner. * */ #include #include #include #include "gd.h" #include "gdhelpers.h" #define TRUE 1 #define FALSE 0 /* this is used for creating images in main memory */ typedef struct dpStruct { void *data; int logicalSize; int realSize; int dataGood; int pos; } dynamicPtr; typedef struct dpIOCtx { gdIOCtx ctx; dynamicPtr *dp; } dpIOCtx; typedef struct dpIOCtx *dpIOCtxPtr; /* these functions operate on in-memory dynamic pointers */ static int allocDynamic (dynamicPtr * dp, int initialSize, void *data); static int appendDynamic (dynamicPtr * dp, const void *src, int size); static int gdReallocDynamic (dynamicPtr * dp, int required); static int trimDynamic (dynamicPtr * dp); static void gdFreeDynamicCtx (struct gdIOCtx *ctx); static dynamicPtr *newDynamic (int initialSize, void *data); static int dynamicPutbuf (struct gdIOCtx *, const void *, int); static void dynamicPutchar (struct gdIOCtx *, int a); static int dynamicGetbuf (gdIOCtxPtr ctx, void *buf, int len); static int dynamicGetchar (gdIOCtxPtr ctx); static int dynamicSeek (struct gdIOCtx *, const int); static long dynamicTell (struct gdIOCtx *); /* return data as a dynamic pointer */ gdIOCtx * gdNewDynamicCtx (int initialSize, void *data) { dpIOCtx *ctx; dynamicPtr *dp; ctx = (dpIOCtx *) gdMalloc (sizeof (dpIOCtx)); if (ctx == NULL) { return NULL; } dp = newDynamic (initialSize, data); if (!dp) { gdFree (ctx); return NULL; }; ctx->dp = dp; ctx->ctx.getC = dynamicGetchar; ctx->ctx.putC = dynamicPutchar; ctx->ctx.getBuf = dynamicGetbuf; ctx->ctx.putBuf = dynamicPutbuf; ctx->ctx.seek = dynamicSeek; ctx->ctx.tell = dynamicTell; ctx->ctx.free = gdFreeDynamicCtx; return (gdIOCtx *) ctx; } void * gdDPExtractData (struct gdIOCtx *ctx, int *size) { dynamicPtr *dp; dpIOCtx *dctx; void *data; dctx = (dpIOCtx *) ctx; dp = dctx->dp; /* clean up the data block and return it */ if (dp->dataGood) { trimDynamic (dp); *size = dp->logicalSize; data = dp->data; } else { *size = 0; data = NULL; if (dp->data != NULL) { gdFree (dp->data); } } dp->data = NULL; dp->realSize = 0; dp->logicalSize = 0; return data; } static void gdFreeDynamicCtx (struct gdIOCtx *ctx) { dynamicPtr *dp; dpIOCtx *dctx; dctx = (dpIOCtx *) ctx; dp = dctx->dp; gdFree (ctx); /* clean up the data block and return it */ if (dp->data != NULL) { gdFree (dp->data); dp->data = NULL; } dp->realSize = 0; dp->logicalSize = 0; gdFree (dp); } static long dynamicTell (struct gdIOCtx *ctx) { dpIOCtx *dctx; dctx = (dpIOCtx *) ctx; return (dctx->dp->pos); } static int dynamicSeek (struct gdIOCtx *ctx, const int pos) { int bytesNeeded; dynamicPtr *dp; dpIOCtx *dctx; dctx = (dpIOCtx *) ctx; dp = dctx->dp; if (!dp->dataGood) return FALSE; bytesNeeded = pos; if (bytesNeeded > dp->realSize) { if (!gdReallocDynamic (dp, dp->realSize * 2)) { dp->dataGood = FALSE; return FALSE; } } /* if we get here, we can be sure that we have enough bytes to copy safely */ /* Extend the logical size if we seek beyond EOF. */ if (pos > dp->logicalSize) { dp->logicalSize = pos; }; dp->pos = pos; return TRUE; } /* return data as a dynamic pointer */ static dynamicPtr * newDynamic (int initialSize, void *data) { dynamicPtr *dp; dp = (dynamicPtr *) gdMalloc (sizeof (dynamicPtr)); if (dp == NULL) { return NULL; } if (!allocDynamic (dp, initialSize, data)) return NULL; dp->pos = 0; return dp; } static int dynamicPutbuf (struct gdIOCtx *ctx, const void *buf, int size) { dpIOCtx *dctx; dctx = (dpIOCtx *) ctx; appendDynamic (dctx->dp, buf, size); if (dctx->dp->dataGood) { return size; } else { return -1; }; } static void dynamicPutchar (struct gdIOCtx *ctx, int a) { unsigned char b; dpIOCtxPtr dctx; b = a; dctx = (dpIOCtxPtr) ctx; appendDynamic (dctx->dp, &b, 1); } static int dynamicGetbuf (gdIOCtxPtr ctx, void *buf, int len) { int rlen, remain; dpIOCtxPtr dctx; dynamicPtr *dp; dctx = (dpIOCtxPtr) ctx; dp = dctx->dp; remain = dp->logicalSize - dp->pos; if (remain >= len) { rlen = len; } else { if (remain == 0) { return EOF; } rlen = remain; } memcpy (buf, (void *) ((char *) dp->data + dp->pos), rlen); dp->pos += rlen; return rlen; } static int dynamicGetchar (gdIOCtxPtr ctx) { unsigned char b; int rv; rv = dynamicGetbuf (ctx, &b, 1); if (rv != 1) { return EOF; } else { return b; /* (b & 0xff); */ } } /* ********************************************************************* * InitDynamic - Return a dynamically resizable void* * * ********************************************************************* */ static int allocDynamic (dynamicPtr * dp, int initialSize, void *data) { if (data == NULL) { dp->logicalSize = 0; dp->dataGood = FALSE; dp->data = gdMalloc (initialSize); } else { dp->logicalSize = initialSize; dp->dataGood = TRUE; dp->data = data; } if (dp->data != NULL) { dp->realSize = initialSize; dp->dataGood = TRUE; dp->pos = 0; return TRUE; } else { dp->realSize = 0; return FALSE; } } /* append bytes to the end of a dynamic pointer */ static int appendDynamic (dynamicPtr * dp, const void *src, int size) { int bytesNeeded; char *tmp; if (!dp->dataGood) return FALSE; /* bytesNeeded = dp->logicalSize + size; */ bytesNeeded = dp->pos + size; if (bytesNeeded > dp->realSize) { if (!gdReallocDynamic (dp, bytesNeeded * 2)) { dp->dataGood = FALSE; return FALSE; } } /* if we get here, we can be sure that we have enough bytes to copy safely */ /*printf("Mem OK Size: %d, Pos: %d\n", dp->realSize, dp->pos); */ tmp = (char *) dp->data; memcpy ((void *) (tmp + (dp->pos)), src, size); dp->pos += size; if (dp->pos > dp->logicalSize) { dp->logicalSize = dp->pos; }; return TRUE; } /* grow (or shrink) dynamic pointer */ static int gdReallocDynamic (dynamicPtr * dp, int required) { void *newPtr; /* First try gdRealloc(). If that doesn't work, make a new memory block and copy. */ if ((newPtr = gdRealloc (dp->data, required))) { dp->realSize = required; dp->data = newPtr; return TRUE; } /* create a new pointer */ newPtr = gdMalloc (required); if (!newPtr) { dp->dataGood = FALSE; return FALSE; } /* copy the old data into it */ memcpy (newPtr, dp->data, dp->logicalSize); gdFree (dp->data); dp->data = newPtr; dp->realSize = required; return TRUE; } /* trim pointer so that its real and logical sizes match */ static int trimDynamic (dynamicPtr * dp) { return gdReallocDynamic (dp, dp->logicalSize); } libwmf-0.2.8.4/src/extra/gd/gd_io_file.c0000644000077100007710000000470107301470216017235 0ustar fjffjf00000000000000 /* * io_file.c * * Implements the file interface. * * As will all I/O modules, most functions are for local use only (called * via function pointers in the I/O context). * * Most functions are just 'wrappers' for standard file functions. * * Written/Modified 1999, Philip Warner. * */ /* For platforms with incomplete ANSI defines. Fortunately, SEEK_SET is defined to be zero by the standard. */ #ifndef SEEK_SET #define SEEK_SET 0 #endif /* SEEK_SET */ #include #include #include #include "gd.h" #include "gdhelpers.h" /* this is used for creating images in main memory */ typedef struct fileIOCtx { gdIOCtx ctx; FILE *f; } fileIOCtx; struct fileIOCtx *fileIOCtxPtr; gdIOCtx *newFileCtx (FILE * f); static int fileGetbuf (gdIOCtx *, void *, int); static int filePutbuf (gdIOCtx *, const void *, int); static void filePutchar (gdIOCtx *, int); static int fileGetchar (gdIOCtx * ctx); static int fileSeek (struct gdIOCtx *, const int); static long fileTell (struct gdIOCtx *); static void gdFreeFileCtx (gdIOCtx * ctx); /* return data as a dynamic pointer */ gdIOCtx * gdNewFileCtx (FILE * f) { fileIOCtx *ctx; ctx = (fileIOCtx *) gdMalloc (sizeof (fileIOCtx)); if (ctx == NULL) { return NULL; } ctx->f = f; ctx->ctx.getC = fileGetchar; ctx->ctx.putC = filePutchar; ctx->ctx.getBuf = fileGetbuf; ctx->ctx.putBuf = filePutbuf; ctx->ctx.tell = fileTell; ctx->ctx.seek = fileSeek; ctx->ctx.free = gdFreeFileCtx; return (gdIOCtx *) ctx; } static void gdFreeFileCtx (gdIOCtx * ctx) { gdFree (ctx); } static int filePutbuf (gdIOCtx * ctx, const void *buf, int size) { fileIOCtx *fctx; fctx = (fileIOCtx *) ctx; return fwrite (buf, 1, size, fctx->f); } static int fileGetbuf (gdIOCtx * ctx, void *buf, int size) { fileIOCtx *fctx; fctx = (fileIOCtx *) ctx; return (fread (buf, 1, size, fctx->f)); } static void filePutchar (gdIOCtx * ctx, int a) { unsigned char b; fileIOCtx *fctx; fctx = (fileIOCtx *) ctx; b = a; putc (b, fctx->f); } static int fileGetchar (gdIOCtx * ctx) { fileIOCtx *fctx; fctx = (fileIOCtx *) ctx; return getc (fctx->f); } static int fileSeek (struct gdIOCtx *ctx, const int pos) { fileIOCtx *fctx; fctx = (fileIOCtx *) ctx; return (fseek (fctx->f, pos, SEEK_SET) == 0); } static long fileTell (struct gdIOCtx *ctx) { fileIOCtx *fctx; fctx = (fileIOCtx *) ctx; return ftell (fctx->f); } libwmf-0.2.8.4/src/extra/gd/gd_ss.c0000644000077100007710000000144507301470216016256 0ustar fjffjf00000000000000#include #include #include #include #include "gd.h" #define TRUE 1 #define FALSE 0 /* Exported functions: */ extern void gdImagePngToSink (gdImagePtr im, gdSinkPtr out); extern gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource); /* Use this for commenting out debug-print statements. */ /* Just use the first '#define' to allow all the prints... */ /*#define GD_SS_DBG(s) (s) */ #define GD_SS_DBG(s) void gdImagePngToSink (gdImagePtr im, gdSinkPtr outSink) { gdIOCtx *out = gdNewSSCtx (NULL, outSink); gdImagePngCtx (im, out); out->free (out); } gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource) { gdIOCtx *in = gdNewSSCtx (inSource, NULL); gdImagePtr im; im = gdImageCreateFromPngCtx (in); in->free (in); return im; } libwmf-0.2.8.4/src/extra/gd/gd_io_ss.c0000644000077100007710000000553507301470216016751 0ustar fjffjf00000000000000 /* * io_ss.c * * Implements the Source/Sink interface. * * As will all I/O modules, most functions are for local use only (called * via function pointers in the I/O context). * * The Source/Sink model is the primary 'user' interface for alternate data * sources; the IOCtx interface is intended (at least in version 1.5) to be * used internally until it settles down a bit. * * This module just layers the Source/Sink interface on top of the IOCtx; no * support is provided for tell/seek, so GD2 writing is not possible, and * retrieving parts of GD2 files is also not possible. * * A new SS context does not need to be created with both a Source and a Sink. * * Written/Modified 1999, Philip Warner. * */ #include #include #include #include "gd.h" #include "gdhelpers.h" /* this is used for creating images in main memory */ typedef struct ssIOCtx { gdIOCtx ctx; gdSourcePtr src; gdSinkPtr snk; } ssIOCtx; typedef struct ssIOCtx *ssIOCtxPtr; gdIOCtx *gdNewSSCtx (gdSourcePtr src, gdSinkPtr snk); static int sourceGetbuf (gdIOCtx *, void *, int); static int sourceGetchar (gdIOCtx * ctx); static int sinkPutbuf (gdIOCtx * ctx, const void *buf, int size); static void sinkPutchar (gdIOCtx * ctx, int a); static void gdFreeSsCtx (gdIOCtx * ctx); /* return data as a dynamic pointer */ gdIOCtx * gdNewSSCtx (gdSourcePtr src, gdSinkPtr snk) { ssIOCtxPtr ctx; ctx = (ssIOCtxPtr) gdMalloc (sizeof (ssIOCtx)); if (ctx == NULL) { return NULL; } ctx->src = src; ctx->snk = snk; ctx->ctx.getC = sourceGetchar; ctx->ctx.getBuf = sourceGetbuf; ctx->ctx.putC = sinkPutchar; ctx->ctx.putBuf = sinkPutbuf; ctx->ctx.tell = NULL; ctx->ctx.seek = NULL; ctx->ctx.free = gdFreeSsCtx; return (gdIOCtx *) ctx; } static void gdFreeSsCtx (gdIOCtx * ctx) { gdFree (ctx); } static int sourceGetbuf (gdIOCtx * ctx, void *buf, int size) { ssIOCtx *lctx; int res; lctx = (ssIOCtx *) ctx; res = ((lctx->src->source) (lctx->src->context, buf, size)); /* ** Translate the return values from the Source object: ** 0 is EOF, -1 is error */ if (res == 0) { return EOF; } else if (res < 0) { return 0; } else { return res; }; } static int sourceGetchar (gdIOCtx * ctx) { int res; unsigned char buf; res = sourceGetbuf (ctx, &buf, 1); if (res == 1) { return buf; } else { return EOF; }; } static int sinkPutbuf (gdIOCtx * ctx, const void *buf, int size) { ssIOCtxPtr lctx; int res; lctx = (ssIOCtx *) ctx; res = (lctx->snk->sink) (lctx->snk->context, buf, size); if (res <= 0) { return 0; } else { return res; }; } static void sinkPutchar (gdIOCtx * ctx, int a) { unsigned char b; b = a; sinkPutbuf (ctx, &b, 1); } libwmf-0.2.8.4/src/extra/gd/gd_png.c0000644000077100007710000005317610271767772016445 0ustar fjffjf00000000000000 #ifdef HAVE_LIBPNG #include #include #include #include #include "gd.h" #include "gdhelpers.h" #include "png.h" /* includes zlib.h and setjmp.h */ #define TRUE 1 #define FALSE 0 /*--------------------------------------------------------------------------- gd_png.c Copyright 1999 Greg Roelofs and Thomas Boutell The routines in this file, gdImagePng*() and gdImageCreateFromPng*(), are drop-in replacements for gdImageGif*() and gdImageCreateFromGif*(), except that these functions are noisier in the case of errors (comment out all fprintf() statements to disable that). GD 2.0 supports RGBA truecolor and will read and write truecolor PNGs. GD 2.0 supports 8 bits of color resolution per channel and 7 bits of alpha channel resolution. Images with more than 8 bits per channel are reduced to 8 bits. Images with an alpha channel are only able to resolve down to '1/128th opaque' instead of '1/256th', and this conversion is also automatic. I very much doubt you can see it. Both tRNS and true alpha are supported. Gamma is ignored, and there is no support for text annotations. Last updated: 9 February 2001 ---------------------------------------------------------------------------*/ #ifndef PNG_SETJMP_NOT_SUPPORTED typedef struct _jmpbuf_wrapper { jmp_buf jmpbuf; } jmpbuf_wrapper; static jmpbuf_wrapper gdPngJmpbufStruct; static void gdPngErrorHandler (png_structp png_ptr, png_const_charp msg) { jmpbuf_wrapper *jmpbuf_ptr; /* This function, aside from the extra step of retrieving the "error * pointer" (below) and the fact that it exists within the application * rather than within libpng, is essentially identical to libpng's * default error handler. The second point is critical: since both * setjmp() and longjmp() are called from the same code, they are * guaranteed to have compatible notions of how big a jmp_buf is, * regardless of whether _BSD_SOURCE or anything else has (or has not) * been defined. */ fprintf (stderr, "gd-png: fatal libpng error: %s\n", msg); fflush (stderr); jmpbuf_ptr = png_get_error_ptr (png_ptr); if (jmpbuf_ptr == NULL) { /* we are completely hosed now */ fprintf (stderr, "gd-png: EXTREMELY fatal error: jmpbuf unrecoverable; terminating.\n"); fflush (stderr); exit (99); } longjmp (jmpbuf_ptr->jmpbuf, 1); } #endif static void gdPngReadData (png_structp png_ptr, png_bytep data, png_size_t length) { gdGetBuf (data, length, (gdIOCtx *) png_get_io_ptr (png_ptr)); } static void gdPngWriteData (png_structp png_ptr, png_bytep data, png_size_t length) { gdPutBuf (data, length, (gdIOCtx *) png_get_io_ptr (png_ptr)); } static void gdPngFlushData (png_structp png_ptr) { } gdImagePtr gdImageCreateFromPng (FILE * inFile) { gdImagePtr im; gdIOCtx *in = gdNewFileCtx (inFile); im = gdImageCreateFromPngCtx (in); in->free (in); return im; } /* This routine is based in part on the Chapter 13 demo code in "PNG: The * Definitive Guide" (http://www.cdrom.com/pub/png/pngbook.html). */ gdImagePtr gdImageCreateFromPngCtx (gdIOCtx * infile) { png_byte sig[8]; png_structp png_ptr; png_infop info_ptr; png_uint_32 width, height, rowbytes; int bit_depth, color_type, interlace_type; int num_palette, num_trans; png_colorp palette; png_color_16p trans_gray_rgb; png_color_16p trans_color_rgb; png_bytep trans; png_bytep image_data = NULL; png_bytepp row_pointers = NULL; gdImagePtr im = NULL; int i, j, *open=0; volatile int transparent = -1; volatile int palette_allocated = FALSE; /* Make sure the signature can't match by dumb luck -- TBB */ /* GRR: isn't sizeof(infile) equal to the size of the pointer? */ memset (infile, 0, sizeof (infile)); /* first do a quick check that the file really is a PNG image; could * have used slightly more general png_sig_cmp() function instead */ gdGetBuf (sig, 8, infile); if (!png_check_sig (sig, 8)) return NULL; /* bad signature */ #ifndef PNG_SETJMP_NOT_SUPPORTED png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, &gdPngJmpbufStruct, gdPngErrorHandler, NULL); #else png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); #endif if (png_ptr == NULL) { fprintf (stderr, "gd-png error: cannot allocate libpng main struct\n"); return NULL; } info_ptr = png_create_info_struct (png_ptr); if (info_ptr == NULL) { fprintf (stderr, "gd-png error: cannot allocate libpng info struct\n"); png_destroy_read_struct (&png_ptr, NULL, NULL); return NULL; } /* we could create a second info struct here (end_info), but it's only * useful if we want to keep pre- and post-IDAT chunk info separated * (mainly for PNG-aware image editors and converters) */ /* setjmp() must be called in every non-callback function that calls a * PNG-reading libpng function */ #ifndef PNG_SETJMP_NOT_SUPPORTED if (setjmp (gdPngJmpbufStruct.jmpbuf)) { fprintf (stderr, "gd-png error: setjmp returns error condition\n"); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); return NULL; } #endif png_set_sig_bytes (png_ptr, 8); /* we already read the 8 signature bytes */ png_set_read_fn (png_ptr, (void *) infile, gdPngReadData); png_read_info (png_ptr, info_ptr); /* read all PNG info up to image data */ png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); if ((color_type == PNG_COLOR_TYPE_RGB) || (color_type == PNG_COLOR_TYPE_RGB_ALPHA)) { im = gdImageCreateTrueColor ((int) width, (int) height); } else { im = gdImageCreate ((int) width, (int) height); } if (im == NULL) { fprintf (stderr, "gd-png error: cannot allocate gdImage struct\n"); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); gdFree (image_data); gdFree (row_pointers); return NULL; } if (bit_depth == 16) png_set_strip_16 (png_ptr); else if (bit_depth < 8) png_set_packing (png_ptr); /* expand to 1 byte per pixel */ switch (color_type) { case PNG_COLOR_TYPE_PALETTE: png_get_PLTE (png_ptr, info_ptr, &palette, &num_palette); #ifdef DEBUG fprintf (stderr, "gd-png color_type is palette, colors: %d\n", num_palette); #endif /* DEBUG */ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) { /* gd 2.0: we support this rather thoroughly now. Grab the first fully transparent entry, if any, as the value of the simple-transparency index, mostly for backwards binary compatibility. The alpha channel is where it's really at these days. */ int firstZero = 1; png_get_tRNS (png_ptr, info_ptr, &trans, &num_trans, NULL); for (i = 0; i < num_trans; ++i) { im->alpha[i] = gdAlphaMax - (trans[i] >> 1); if ((trans[i] == 0) && (firstZero)) { im->transparent = i; firstZero = 0; } } } break; case PNG_COLOR_TYPE_GRAY: case PNG_COLOR_TYPE_GRAY_ALPHA: /* create a fake palette and check for single-shade transparency */ if ((palette = (png_colorp) gdMalloc (256 * sizeof (png_color))) == NULL) { fprintf (stderr, "gd-png error: cannot allocate gray palette\n"); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); return NULL; } palette_allocated = TRUE; if (bit_depth < 8) { num_palette = 1 << bit_depth; for (i = 0; i < 256; ++i) { j = (255 * i) / (num_palette - 1); palette[i].red = palette[i].green = palette[i].blue = j; } } else { num_palette = 256; for (i = 0; i < 256; ++i) { palette[i].red = palette[i].green = palette[i].blue = i; } } if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) { png_get_tRNS (png_ptr, info_ptr, NULL, NULL, &trans_gray_rgb); if (bit_depth == 16) /* png_set_strip_16() not yet in effect */ transparent = trans_gray_rgb->gray >> 8; else transparent = trans_gray_rgb->gray; /* Note slight error in 16-bit case: up to 256 16-bit shades * may get mapped to a single 8-bit shade, and only one of them * is supposed to be transparent. IOW, both opaque pixels and * transparent pixels will be mapped into the transparent entry. * There is no particularly good way around this in the case * that all 256 8-bit shades are used, but one could write some * custom 16-bit code to handle the case where there are gdFree * palette entries. This error will be extremely rare in * general, though. (Quite possibly there is only one such * image in existence.) */ } break; case PNG_COLOR_TYPE_RGB: case PNG_COLOR_TYPE_RGB_ALPHA: /* gd 2.0: we now support truecolor. See the comment above for a rare situation in which the transparent pixel may not work properly with 16-bit channels. */ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) { png_get_tRNS (png_ptr, info_ptr, NULL, NULL, &trans_color_rgb); if (bit_depth == 16) /* png_set_strip_16() not yet in effect */ transparent = gdTrueColor (trans_color_rgb->red >> 8, trans_color_rgb->green >> 8, trans_color_rgb->blue >> 8); else transparent = gdTrueColor (trans_color_rgb->red, trans_color_rgb->green, trans_color_rgb->blue); } break; } png_read_update_info (png_ptr, info_ptr); /* allocate space for the PNG image data */ rowbytes = png_get_rowbytes (png_ptr, info_ptr); if ((image_data = (png_bytep) gdMalloc (rowbytes * height)) == NULL) { fprintf (stderr, "gd-png error: cannot allocate image data\n"); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); return NULL; } if ((row_pointers = (png_bytepp) gdMalloc (height * sizeof (png_bytep))) == NULL) { fprintf (stderr, "gd-png error: cannot allocate row pointers\n"); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); gdFree (image_data); return NULL; } /* set the individual row_pointers to point at the correct offsets */ for (j = 0; j < height; ++j) { row_pointers[j] = image_data + j * rowbytes; } png_read_image (png_ptr, row_pointers); /* read whole image... */ png_read_end (png_ptr, NULL); /* ...done! */ if (!im->trueColor) { im->colorsTotal = num_palette; im->transparent = transparent; /* load the palette and mark all entries "open" (unused) for now */ open = im->open; for (i = 0; i < num_palette; ++i) { im->red[i] = palette[i].red; im->green[i] = palette[i].green; im->blue[i] = palette[i].blue; open[i] = 1; } for (i = num_palette; i < gdMaxColors; ++i) { open[i] = 1; } } im->interlace = (interlace_type == PNG_INTERLACE_ADAM7); /* can't nuke structs until done with palette */ png_destroy_read_struct (&png_ptr, &info_ptr, NULL); switch (color_type) { case PNG_COLOR_TYPE_RGB: for (j = 0; j < height; j++) { int boffset = 0; for (i = 0; i < width; i++) { register png_byte r = row_pointers[j][boffset++]; register png_byte g = row_pointers[j][boffset++]; register png_byte b = row_pointers[j][boffset++]; im->tpixels[j][i] = gdTrueColor (r, g, b); } } break; case PNG_COLOR_TYPE_RGB_ALPHA: for (j = 0; j < height; j++) { int boffset = 0; for (i = 0; i < width; i++) { register png_byte r = row_pointers[j][boffset++]; register png_byte g = row_pointers[j][boffset++]; register png_byte b = row_pointers[j][boffset++]; /* gd has only 7 bits of alpha channel resolution, and 127 is transparent, 0 opaque. A moment of convenience, a lifetime of compatibility. */ register png_byte a = gdAlphaMax - (row_pointers[j][boffset++] >> 1); im->tpixels[j][i] = gdTrueColorAlpha (r, g, b, a); } } break; default: /* Palette image, or something coerced to be one */ for (j = 0; j < height; ++j) { for (i = 0; i < width; ++i) { register png_byte idx = row_pointers[j][i]; im->pixels[j][i] = idx; open[idx] = 0; } } } #ifdef DEBUG if (!im->trueColor) { for (i = num_palette; i < gdMaxColors; ++i) { if (!open[i]) { fprintf (stderr, "gd-png warning: image data references out-of-range" " color index (%d)\n", i); } } } #endif if (palette_allocated) gdFree (palette); gdFree (image_data); gdFree (row_pointers); return im; } void gdImagePng (gdImagePtr im, FILE * outFile) { gdIOCtx *out = gdNewFileCtx (outFile); gdImagePngCtx (im, out); out->free (out); } void * gdImagePngPtr (gdImagePtr im, int *size) { void *rv; gdIOCtx *out = gdNewDynamicCtx (2048, NULL); gdImagePngCtx (im, out); rv = gdDPExtractData (out, size); out->free (out); return rv; } /* This routine is based in part on code from Dale Lutz (Safe Software Inc.) * and in part on demo code from Chapter 15 of "PNG: The Definitive Guide" * (http://www.cdrom.com/pub/png/pngbook.html). */ void gdImagePngCtx (gdImagePtr im, gdIOCtx * outfile) { int i, j, bit_depth=1, interlace_type; int width = im->sx; int height = im->sy; int colors = im->colorsTotal; int *open = im->open; int mapping[gdMaxColors]; /* mapping[gd_index] == png_index */ png_byte trans_values[256]; png_color_16 trans_rgb_value; png_color palette[gdMaxColors]; png_structp png_ptr; png_infop info_ptr; volatile int transparent = im->transparent; volatile int remap = FALSE; #ifndef PNG_SETJMP_NOT_SUPPORTED png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, &gdPngJmpbufStruct, gdPngErrorHandler, NULL); #else png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); #endif if (png_ptr == NULL) { fprintf (stderr, "gd-png error: cannot allocate libpng main struct\n"); return; } info_ptr = png_create_info_struct (png_ptr); if (info_ptr == NULL) { fprintf (stderr, "gd-png error: cannot allocate libpng info struct\n"); png_destroy_write_struct (&png_ptr, (png_infopp) NULL); return; } #ifndef PNG_SETJMP_NOT_SUPPORTED if (setjmp (gdPngJmpbufStruct.jmpbuf)) { fprintf (stderr, "gd-png error: setjmp returns error condition\n"); png_destroy_write_struct (&png_ptr, &info_ptr); return; } #endif png_set_write_fn (png_ptr, (void *) outfile, gdPngWriteData, gdPngFlushData); /* This is best for palette images, and libpng defaults to it for palette images anyway, so we don't need to do it explicitly. What to ideally do for truecolor images depends, alas, on the image. gd is intentionally imperfect and doesn't spend a lot of time fussing with such things. */ /* png_set_filter(png_ptr, 0, PNG_FILTER_NONE); */ /* may want to force maximum compression, but time penalty is large */ /* png_set_compression_level(png_ptr, Z_BEST_COMPRESSION); */ /* can set this to a smaller value without compromising compression if all * image data is 16K or less; will save some decoder memory [min == 8] */ /* png_set_compression_window_bits(png_ptr, 15); */ if (!im->trueColor) { if (transparent >= im->colorsTotal || (transparent >= 0 && open[transparent])) transparent = -1; } if (!im->trueColor) { for (i = 0; i < gdMaxColors; ++i) mapping[i] = -1; } if (!im->trueColor) { /* count actual number of colors used (colorsTotal == high-water mark) */ colors = 0; for (i = 0; i < im->colorsTotal; ++i) { if (!open[i]) { mapping[i] = colors; ++colors; } } if (colors < im->colorsTotal) { remap = TRUE; } if (colors <= 2) bit_depth = 1; else if (colors <= 4) bit_depth = 2; else if (colors <= 16) bit_depth = 4; else bit_depth = 8; } interlace_type = im->interlace ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE; if (im->trueColor) { if (im->saveAlphaFlag) { png_set_IHDR (png_ptr, info_ptr, width, height, 8, PNG_COLOR_TYPE_RGB_ALPHA, interlace_type, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); } else { png_set_IHDR (png_ptr, info_ptr, width, height, 8, PNG_COLOR_TYPE_RGB, interlace_type, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); } } else { png_set_IHDR (png_ptr, info_ptr, width, height, bit_depth, PNG_COLOR_TYPE_PALETTE, interlace_type, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); } if (im->trueColor && (!im->saveAlphaFlag) && (transparent >= 0)) { trans_rgb_value.red = gdTrueColorGetRed (im->trueColor); trans_rgb_value.green = gdTrueColorGetGreen (im->trueColor); trans_rgb_value.blue = gdTrueColorGetBlue (im->trueColor); png_set_tRNS (png_ptr, info_ptr, 0, 0, &trans_rgb_value); } if (!im->trueColor) { /* Oy veh. Remap the PNG palette to put the entries with interesting alpha channel values first. This minimizes the size of the tRNS chunk and thus the size of the PNG file as a whole. */ int tc = 0; int i; int j; int k; for (i = 0; (i < im->colorsTotal); i++) { if ((!im->open[i]) && (im->alpha[i] != gdAlphaOpaque)) { tc++; } } if (tc) { #if 0 for (i = 0; (i < im->colorsTotal); i++) { trans_values[i] = 255 - ((im->alpha[i] << 1) + (im->alpha[i] >> 7)); } png_set_tRNS (png_ptr, info_ptr, trans_values, 256, NULL); #endif if (!remap) { remap = TRUE; } /* (Semi-)transparent indexes come up from the bottom of the list of real colors; opaque indexes come down from the top */ j = 0; k = colors - 1; for (i = 0; (i < im->colorsTotal); i++) { if (!im->open[i]) { if (im->alpha[i] != gdAlphaOpaque) { trans_values[j] = 255 - ((im->alpha[i] << 1) + (im->alpha[i] >> 7)); mapping[i] = j++; } else { mapping[i] = k--; } } } png_set_tRNS (png_ptr, info_ptr, trans_values, tc, NULL); } } /* convert palette to libpng layout */ if (!im->trueColor) { if (remap) for (i = 0; i < im->colorsTotal; ++i) { if (mapping[i] < 0) continue; palette[mapping[i]].red = im->red[i]; palette[mapping[i]].green = im->green[i]; palette[mapping[i]].blue = im->blue[i]; } else for (i = 0; i < colors; ++i) { palette[i].red = im->red[i]; palette[i].green = im->green[i]; palette[i].blue = im->blue[i]; } png_set_PLTE (png_ptr, info_ptr, palette, colors); } /* write out the PNG header info (everything up to first IDAT) */ png_write_info (png_ptr, info_ptr); /* make sure < 8-bit images are packed into pixels as tightly as possible */ png_set_packing (png_ptr); /* This code allocates a set of row buffers and copies the gd image data * into them only in the case that remapping is necessary; in gd 1.3 and * later, the im->pixels array is laid out identically to libpng's row * pointers and can be passed to png_write_image() function directly. * The remapping case could be accomplished with less memory for non- * interlaced images, but interlacing causes some serious complications. */ if (im->trueColor) { int channels = im->saveAlphaFlag ? 4 : 3; /* Our little 7-bit alpha channel trick costs us a bit here. */ png_bytep *row_pointers; row_pointers = gdMalloc (sizeof (png_bytep) * height); if (row_pointers == NULL) { fprintf (stderr, "gd-png error: unable to allocate row_pointers\n"); } for (j = 0; j < height; ++j) { int bo = 0; if ((row_pointers[j] = (png_bytep) gdMalloc (width * channels)) == NULL) { fprintf (stderr, "gd-png error: unable to allocate rows\n"); for (i = 0; i < j; ++i) gdFree (row_pointers[i]); return; } for (i = 0; i < width; ++i) { unsigned char a; row_pointers[j][bo++] = gdTrueColorGetRed (im->tpixels[j][i]); row_pointers[j][bo++] = gdTrueColorGetGreen (im->tpixels[j][i]); row_pointers[j][bo++] = gdTrueColorGetBlue (im->tpixels[j][i]); if (im->saveAlphaFlag) { /* convert the 7-bit alpha channel to an 8-bit alpha channel. We do a little bit-flipping magic, repeating the MSB as the LSB, to ensure that 0 maps to 0 and 127 maps to 255. We also have to invert to match PNG's convention in which 255 is opaque. */ a = gdTrueColorGetAlpha (im->tpixels[j][i]); row_pointers[j][bo++] = 255 - ((a << 1) + (a >> 7)); } } } png_write_image (png_ptr, row_pointers); png_write_end (png_ptr, info_ptr); for (j = 0; j < height; ++j) gdFree (row_pointers[j]); gdFree (row_pointers); } else { if (remap) { png_bytep *row_pointers; row_pointers = gdMalloc (sizeof (png_bytep) * height); if (row_pointers == NULL) { fprintf (stderr, "gd-png error: unable to allocate row_pointers\n"); } for (j = 0; j < height; ++j) { if ((row_pointers[j] = (png_bytep) gdMalloc (width)) == NULL) { fprintf (stderr, "gd-png error: unable to allocate rows\n"); for (i = 0; i < j; ++i) gdFree (row_pointers[i]); return; } for (i = 0; i < width; ++i) row_pointers[j][i] = mapping[im->pixels[j][i]]; } png_write_image (png_ptr, row_pointers); png_write_end (png_ptr, info_ptr); for (j = 0; j < height; ++j) gdFree (row_pointers[j]); gdFree (row_pointers); } else { png_write_image (png_ptr, im->pixels); png_write_end (png_ptr, info_ptr); } } /* 1.6.3: maybe we should give that memory BACK! TBB */ png_destroy_write_struct (&png_ptr, &info_ptr); } #endif /* HAVE_LIBPNG */ libwmf-0.2.8.4/src/extra/gd/gd_jpeg.c0000644000077100007710000006142210271767772016577 0ustar fjffjf00000000000000 /* * gd_jpeg.c: Read and write JPEG (JFIF) format image files using the * gd graphics library (http://www.boutell.com/gd/). * * This software is based in part on the work of the Independent JPEG * Group. For more information on the IJG JPEG software (and JPEG * documentation, etc.), see ftp://ftp.uu.net/graphics/jpeg/. * * NOTE: IJG 12-bit JSAMPLE (BITS_IN_JSAMPLE == 12) mode is not * supported at all on read in gd 2.0, and is not supported on write * except for palette images, which is sort of pointless (TBB). Even that * has never been tested according to DB. * * Copyright 2000 Doug Becker, mailto:thebeckers@home.com * * Modification 4/18/00 TBB: JPEG_DEBUG rather than just DEBUG, * so VC++ builds don't spew to standard output, causing * major CGI brain damage */ /* TBB: move this up so include files are not brought in */ #ifdef HAVE_LIBJPEG #include #include #include #include #include /* 1.8.1: remove dependency on jinclude.h */ #include "jpeglib.h" #include "jerror.h" #include "gd.h" #include "gdhelpers.h" static const char *const GD_JPEG_VERSION = "1.0"; typedef struct _jmpbuf_wrapper { jmp_buf jmpbuf; } jmpbuf_wrapper; /* Called by the IJG JPEG library upon encountering a fatal error */ static void fatal_jpeg_error (j_common_ptr cinfo) { jmpbuf_wrapper *jmpbufw; fprintf (stderr, "gd-jpeg: JPEG library reports unrecoverable error: "); (*cinfo->err->output_message) (cinfo); fflush (stderr); jmpbufw = (jmpbuf_wrapper *) cinfo->client_data; jpeg_destroy (cinfo); if (jmpbufw != 0) { longjmp (jmpbufw->jmpbuf, 1); fprintf (stderr, "gd-jpeg: EXTREMELY fatal error: longjmp" " returned control; terminating\n"); } else { fprintf (stderr, "gd-jpeg: EXTREMELY fatal error: jmpbuf" " unrecoverable; terminating\n"); } fflush (stderr); exit (99); } /* * Write IM to OUTFILE as a JFIF-formatted JPEG image, using quality * QUALITY. If QUALITY is in the range 0-100, increasing values * represent higher quality but also larger image size. If QUALITY is * negative, the IJG JPEG library's default quality is used (which * should be near optimal for many applications). See the IJG JPEG * library documentation for more details. */ void gdImageJpeg (gdImagePtr im, FILE * outFile, int quality) { gdIOCtx *out = gdNewFileCtx (outFile); gdImageJpegCtx (im, out, quality); out->free (out); } void * gdImageJpegPtr (gdImagePtr im, int *size, int quality) { void *rv; gdIOCtx *out = gdNewDynamicCtx (2048, NULL); gdImageJpegCtx (im, out, quality); rv = gdDPExtractData (out, size); out->free (out); return rv; } void jpeg_gdIOCtx_dest (j_compress_ptr cinfo, gdIOCtx * outfile); void gdImageJpegCtx (gdImagePtr im, gdIOCtx * outfile, int quality) { struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; int i, j, jidx; /* volatile so we can gdFree it on return from longjmp */ volatile JSAMPROW row = 0; JSAMPROW rowptr[1]; jmpbuf_wrapper jmpbufw; JDIMENSION nlines; char comment[255]; #ifdef JPEG_DEBUG printf ("gd-jpeg: gd JPEG version %s\n", GD_JPEG_VERSION); printf ("gd-jpeg: JPEG library version %d, %d-bit sample values\n", JPEG_LIB_VERSION, BITS_IN_JSAMPLE); if (!im->trueColor) { for (i = 0; i < im->colorsTotal; i++) { if (!im->open[i]) printf ("gd-jpeg: gd colormap index %d: (%d, %d, %d)\n", i, im->red[i], im->green[i], im->blue[i]); } } #endif /* JPEG_DEBUG */ memset (&cinfo, 0, sizeof (cinfo)); memset (&jerr, 0, sizeof (jerr)); cinfo.err = jpeg_std_error (&jerr); cinfo.client_data = &jmpbufw; if (setjmp (jmpbufw.jmpbuf) != 0) { /* we're here courtesy of longjmp */ if (row) gdFree (row); return; } cinfo.err->error_exit = fatal_jpeg_error; jpeg_create_compress (&cinfo); cinfo.image_width = im->sx; cinfo.image_height = im->sy; cinfo.input_components = 3; /* # of color components per pixel */ cinfo.in_color_space = JCS_RGB; /* colorspace of input image */ jpeg_set_defaults (&cinfo); if (quality >= 0) jpeg_set_quality (&cinfo, quality, TRUE); /* If user requests interlace, translate that to progressive JPEG */ if (gdImageGetInterlaced (im)) { #ifdef JPEG_DEBUG printf ("gd-jpeg: interlace set, outputting progressive" " JPEG image\n"); #endif jpeg_simple_progression (&cinfo); } jpeg_gdIOCtx_dest (&cinfo, outfile); row = (JSAMPROW) gdCalloc (1, cinfo.image_width * cinfo.input_components * sizeof (JSAMPLE)); if (row == 0) { fprintf (stderr, "gd-jpeg: error: unable to allocate JPEG row " "structure: gdCalloc returns NULL\n"); jpeg_destroy_compress (&cinfo); return; } rowptr[0] = row; jpeg_start_compress (&cinfo, TRUE); sprintf (comment, "CREATOR: gd-jpeg v%s (using IJG JPEG v%d),", GD_JPEG_VERSION, JPEG_LIB_VERSION); if (quality >= 0) sprintf (comment + strlen (comment), " quality = %d\n", quality); else strcat (comment + strlen (comment), " default quality\n"); jpeg_write_marker (&cinfo, JPEG_COM, (unsigned char *) comment, (unsigned int) strlen (comment)); if (im->trueColor) { #if BITS_IN_JSAMPLE == 12 fprintf (stderr, "gd-jpeg: error: jpeg library was compiled for 12-bit\n" "precision. This is mostly useless, because JPEGs on the web are\n" "8-bit and such versions of the jpeg library won't read or write\n" "them. GD doesn't support these unusual images. Edit your\n" "jmorecfg.h file to specify the correct precision and completely\n" "'make clean' and 'make install' libjpeg again. Sorry.\n"); goto error; #endif /* BITS_IN_JSAMPLE == 12 */ for (i = 0; i < im->sy; i++) { for (jidx = 0, j = 0; j < im->sx; j++) { int val = im->tpixels[i][j]; row[jidx++] = gdTrueColorGetRed (val); row[jidx++] = gdTrueColorGetGreen (val); row[jidx++] = gdTrueColorGetBlue (val); } nlines = jpeg_write_scanlines (&cinfo, rowptr, 1); if (nlines != 1) fprintf (stderr, "gd_jpeg: warning: jpeg_write_scanlines" " returns %u -- expected 1\n", nlines); } } else { for (i = 0; i < im->sy; i++) { for (jidx = 0, j = 0; j < im->sx; j++) { int idx = im->pixels[i][j]; /* * NB: Although gd RGB values are ints, their max value is * 255 (see the documentation for gdImageColorAllocate()) * -- perfect for 8-bit JPEG encoding (which is the norm) */ #if BITS_IN_JSAMPLE == 8 row[jidx++] = im->red[idx]; row[jidx++] = im->green[idx]; row[jidx++] = im->blue[idx]; #elif BITS_IN_JSAMPLE == 12 row[jidx++] = im->red[idx] << 4; row[jidx++] = im->green[idx] << 4; row[jidx++] = im->blue[idx] << 4; #else #error IJG JPEG library BITS_IN_JSAMPLE value must be 8 or 12 #endif } nlines = jpeg_write_scanlines (&cinfo, rowptr, 1); if (nlines != 1) fprintf (stderr, "gd_jpeg: warning: jpeg_write_scanlines" " returns %u -- expected 1\n", nlines); } } jpeg_finish_compress (&cinfo); #if BITS_IN_JSAMPLE == 12 error: #endif jpeg_destroy_compress (&cinfo); gdFree (row); } gdImagePtr gdImageCreateFromJpeg (FILE * inFile) { gdImagePtr im; gdIOCtx *in = gdNewFileCtx (inFile); im = gdImageCreateFromJpegCtx (in); in->free (in); return im; } void jpeg_gdIOCtx_src (j_decompress_ptr cinfo, gdIOCtx * infile); /* * Create a gd-format image from the JPEG-format INFILE. Returns the * image, or NULL upon error. */ gdImagePtr gdImageCreateFromJpegCtx (gdIOCtx * infile) { struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; jmpbuf_wrapper jmpbufw; /* volatile so we can gdFree them after longjmp */ volatile JSAMPROW row = 0; volatile gdImagePtr im = 0; JSAMPROW rowptr[1]; int i, j, retval; JDIMENSION nrows; #ifdef JPEG_DEBUG printf ("gd-jpeg: gd JPEG version %s\n", GD_JPEG_VERSION); printf ("gd-jpeg: JPEG library version %d, %d-bit sample values\n", JPEG_LIB_VERSION, BITS_IN_JSAMPLE); #endif memset (&cinfo, 0, sizeof (cinfo)); memset (&jerr, 0, sizeof (jerr)); cinfo.err = jpeg_std_error (&jerr); cinfo.client_data = &jmpbufw; if (setjmp (jmpbufw.jmpbuf) != 0) { /* we're here courtesy of longjmp */ if (row) gdFree (row); if (im) gdImageDestroy (im); return 0; } cinfo.err->error_exit = fatal_jpeg_error; jpeg_create_decompress (&cinfo); jpeg_gdIOCtx_src (&cinfo, infile); retval = jpeg_read_header (&cinfo, TRUE); if (retval != JPEG_HEADER_OK) fprintf (stderr, "gd-jpeg: warning: jpeg_read_header returns" " %d, expected %d\n", retval, JPEG_HEADER_OK); if (cinfo.image_height > INT_MAX) fprintf (stderr, "gd-jpeg: warning: JPEG image height (%u) is" " greater than INT_MAX (%d) (and thus greater than" " gd can handle)", cinfo.image_height, INT_MAX); if (cinfo.image_width > INT_MAX) fprintf (stderr, "gd-jpeg: warning: JPEG image width (%u) is" " greater than INT_MAX (%d) (and thus greater than" " gd can handle)\n", cinfo.image_width, INT_MAX); im = gdImageCreateTrueColor ((int) cinfo.image_width, (int) cinfo.image_height); if (im == 0) { fprintf (stderr, "gd-jpeg error: cannot allocate gdImage" " struct\n"); goto error; } /* * Force the image into RGB colorspace, but don't * reduce the number of colors anymore (GD 2.0) */ cinfo.out_color_space = JCS_RGB; if (jpeg_start_decompress (&cinfo) != TRUE) fprintf (stderr, "gd-jpeg: warning: jpeg_start_decompress" " reports suspended data source\n"); #ifdef JPEG_DEBUG printf ("gd-jpeg: JPEG image information:"); if (cinfo.saw_JFIF_marker) printf (" JFIF version %d.%.2d", (int) cinfo.JFIF_major_version, (int) cinfo.JFIF_minor_version); else if (cinfo.saw_Adobe_marker) printf (" Adobe format"); else printf (" UNKNOWN format"); printf (" %ux%u (raw) / %ux%u (scaled) %d-bit", cinfo.image_width, cinfo.image_height, cinfo.output_width, cinfo.output_height, cinfo.data_precision); printf (" %s", (cinfo.progressive_mode ? "progressive" : "baseline")); printf (" image, %d quantized colors, ", cinfo.actual_number_of_colors); switch (cinfo.jpeg_color_space) { case JCS_GRAYSCALE: printf ("grayscale"); break; case JCS_RGB: printf ("RGB"); break; case JCS_YCbCr: printf ("YCbCr (a.k.a. YUV)"); break; case JCS_CMYK: printf ("CMYK"); break; case JCS_YCCK: printf ("YCbCrK"); break; default: printf ("UNKNOWN (value: %d)", (int) cinfo.jpeg_color_space); break; } printf (" colorspace\n"); fflush (stdout); #endif /* JPEG_DEBUG */ /* REMOVED by TBB 2/12/01. This field of the structure is documented as private, and sure enough it's gone in the latest libjpeg, replaced by something else. Unfortunately there is still no right way to find out if the file was progressive or not; just declare your intent before you write one by calling gdImageInterlace(im, 1) yourself. After all, we're not really supposed to rework JPEGs and write them out again anyway. Lossy compression, remember? */ #if 0 gdImageInterlace (im, cinfo.progressive_mode != 0); #endif if (cinfo.output_components != 3) { fprintf (stderr, "gd-jpeg: error: JPEG color quantization" " request resulted in output_components == %d" " (expected 3)\n", cinfo.output_components); goto error; } #if BITS_IN_JSAMPLE == 12 fprintf (stderr, "gd-jpeg: error: jpeg library was compiled for 12-bit\n" "precision. This is mostly useless, because JPEGs on the web are\n" "8-bit and such versions of the jpeg library won't read or write\n" "them. GD doesn't support these unusual images. Edit your\n" "jmorecfg.h file to specify the correct precision and completely\n" "'make clean' and 'make install' libjpeg again. Sorry.\n"); goto error; #endif /* BITS_IN_JSAMPLE == 12 */ row = gdCalloc (cinfo.output_width * 3, sizeof (JSAMPLE)); if (row == 0) { fprintf (stderr, "gd-jpeg: error: unable to allocate row for" " JPEG scanline: gdCalloc returns NULL\n"); goto error; } rowptr[0] = row; for (i = 0; i < cinfo.output_height; i++) { nrows = jpeg_read_scanlines (&cinfo, rowptr, 1); if (nrows != 1) { fprintf (stderr, "gd-jpeg: error: jpeg_read_scanlines" " returns %u, expected 1\n", nrows); goto error; } for (j = 0; j < cinfo.output_width; j++) im->tpixels[i][j] = gdTrueColor (row[j * 3], row[j * 3 + 1], row[j * 3 + 2]); } if (jpeg_finish_decompress (&cinfo) != TRUE) fprintf (stderr, "gd-jpeg: warning: jpeg_finish_decompress" " reports suspended data source\n"); jpeg_destroy_decompress (&cinfo); gdFree (row); return im; error: jpeg_destroy_decompress (&cinfo); if (row) gdFree (row); if (im) gdImageDestroy (im); return 0; } /* * gdIOCtx JPEG data sources and sinks, T. Boutell * almost a simple global replace from T. Lane's stdio versions. * */ /* Different versions of libjpeg use either 'jboolean' or 'boolean', and some platforms define 'boolean', and so forth. Deal with this madness by typedeffing 'safeboolean' to 'boolean' if HAVE_BOOLEAN is already set, because this is the test that libjpeg uses. Otherwise, typedef it to int, because that's what libjpeg does if HAVE_BOOLEAN is not defined. -TBB */ #ifdef HAVE_BOOLEAN typedef boolean safeboolean; #else typedef int safeboolean; #endif /* HAVE_BOOLEAN */ /* Expanded data source object for gdIOCtx input */ typedef struct { struct jpeg_source_mgr pub; /* public fields */ gdIOCtx *infile; /* source stream */ unsigned char *buffer; /* start of buffer */ safeboolean start_of_file; /* have we gotten any data yet? */ } my_source_mgr; typedef my_source_mgr *my_src_ptr; #define INPUT_BUF_SIZE 4096 /* choose an efficiently fread'able size */ /* * Initialize source --- called by jpeg_read_header * before any data is actually read. */ void init_source (j_decompress_ptr cinfo) { my_src_ptr src = (my_src_ptr) cinfo->src; /* We reset the empty-input-file flag for each image, * but we don't clear the input buffer. * This is correct behavior for reading a series of images from one source. */ src->start_of_file = TRUE; } /* * Fill the input buffer --- called whenever buffer is emptied. * * In typical applications, this should read fresh data into the buffer * (ignoring the current state of next_input_byte & bytes_in_buffer), * reset the pointer & count to the start of the buffer, and return TRUE * indicating that the buffer has been reloaded. It is not necessary to * fill the buffer entirely, only to obtain at least one more byte. * * There is no such thing as an EOF return. If the end of the file has been * reached, the routine has a choice of ERREXIT() or inserting fake data into * the buffer. In most cases, generating a warning message and inserting a * fake EOI marker is the best course of action --- this will allow the * decompressor to output however much of the image is there. However, * the resulting error message is misleading if the real problem is an empty * input file, so we handle that case specially. * * In applications that need to be able to suspend compression due to input * not being available yet, a FALSE return indicates that no more data can be * obtained right now, but more may be forthcoming later. In this situation, * the decompressor will return to its caller (with an indication of the * number of scanlines it has read, if any). The application should resume * decompression after it has loaded more data into the input buffer. Note * that there are substantial restrictions on the use of suspension --- see * the documentation. * * When suspending, the decompressor will back up to a convenient restart point * (typically the start of the current MCU). next_input_byte & bytes_in_buffer * indicate where the restart point will be if the current call returns FALSE. * Data beyond this point must be rescanned after resumption, so move it to * the front of the buffer rather than discarding it. */ #define END_JPEG_SEQUENCE "\r\n[*]--:END JPEG:--[*]\r\n" safeboolean fill_input_buffer (j_decompress_ptr cinfo) { my_src_ptr src = (my_src_ptr) cinfo->src; size_t nbytes = 0; /* size_t got; */ /* char *s; */ memset (src->buffer, 0, INPUT_BUF_SIZE); while (nbytes < INPUT_BUF_SIZE) { int got = gdGetBuf (src->buffer + nbytes, INPUT_BUF_SIZE - nbytes, src->infile); if ((got == EOF) || (got == 0)) { /* EOF or error. If we got any data, don't worry about it. If we didn't, then this is unexpected. */ if (!nbytes) { nbytes = -1; } break; } nbytes += got; } if (nbytes <= 0) { if (src->start_of_file) /* Treat empty input file as fatal error */ ERREXIT (cinfo, JERR_INPUT_EMPTY); WARNMS (cinfo, JWRN_JPEG_EOF); /* Insert a fake EOI marker */ src->buffer[0] = (unsigned char) 0xFF; src->buffer[1] = (unsigned char) JPEG_EOI; nbytes = 2; } src->pub.next_input_byte = src->buffer; src->pub.bytes_in_buffer = nbytes; src->start_of_file = FALSE; return TRUE; } /* * Skip data --- used to skip over a potentially large amount of * uninteresting data (such as an APPn marker). * * Writers of suspendable-input applications must note that skip_input_data * is not granted the right to give a suspension return. If the skip extends * beyond the data currently in the buffer, the buffer can be marked empty so * that the next read will cause a fill_input_buffer call that can suspend. * Arranging for additional bytes to be discarded before reloading the input * buffer is the application writer's problem. */ void skip_input_data (j_decompress_ptr cinfo, long num_bytes) { my_src_ptr src = (my_src_ptr) cinfo->src; /* Just a dumb implementation for now. Not clear that being smart is worth * any trouble anyway --- large skips are infrequent. */ if (num_bytes > 0) { while (num_bytes > (long) src->pub.bytes_in_buffer) { num_bytes -= (long) src->pub.bytes_in_buffer; (void) fill_input_buffer (cinfo); /* note we assume that fill_input_buffer will never return FALSE, * so suspension need not be handled. */ } src->pub.next_input_byte += (size_t) num_bytes; src->pub.bytes_in_buffer -= (size_t) num_bytes; } } /* * An additional method that can be provided by data source modules is the * resync_to_restart method for error recovery in the presence of RST markers. * For the moment, this source module just uses the default resync method * provided by the JPEG library. That method assumes that no backtracking * is possible. */ /* * Terminate source --- called by jpeg_finish_decompress * after all data has been read. Often a no-op. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ void term_source (j_decompress_ptr cinfo) { #if 0 /* never used */ my_src_ptr src = (my_src_ptr) cinfo->src; #endif } /* * Prepare for input from a gdIOCtx stream. * The caller must have already opened the stream, and is responsible * for closing it after finishing decompression. */ void jpeg_gdIOCtx_src (j_decompress_ptr cinfo, gdIOCtx * infile) { my_src_ptr src; /* The source object and input buffer are made permanent so that a series * of JPEG images can be read from the same file by calling jpeg_gdIOCtx_src * only before the first one. (If we discarded the buffer at the end of * one image, we'd likely lose the start of the next one.) * This makes it unsafe to use this manager and a different source * manager serially with the same JPEG object. Caveat programmer. */ if (cinfo->src == NULL) { /* first time for this JPEG object? */ cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof (my_source_mgr)); src = (my_src_ptr) cinfo->src; src->buffer = (unsigned char *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, INPUT_BUF_SIZE * sizeof (unsigned char)); } src = (my_src_ptr) cinfo->src; src->pub.init_source = init_source; src->pub.fill_input_buffer = fill_input_buffer; src->pub.skip_input_data = skip_input_data; src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */ src->pub.term_source = term_source; src->infile = infile; src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ src->pub.next_input_byte = NULL; /* until buffer loaded */ } /* Expanded data destination object for stdio output */ typedef struct { struct jpeg_destination_mgr pub; /* public fields */ gdIOCtx *outfile; /* target stream */ unsigned char *buffer; /* start of buffer */ } my_destination_mgr; typedef my_destination_mgr *my_dest_ptr; #define OUTPUT_BUF_SIZE 4096 /* choose an efficiently fwrite'able size */ /* * Initialize destination --- called by jpeg_start_compress * before any data is actually written. */ void init_destination (j_compress_ptr cinfo) { my_dest_ptr dest = (my_dest_ptr) cinfo->dest; /* Allocate the output buffer --- it will be released when done with image */ dest->buffer = (unsigned char *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, OUTPUT_BUF_SIZE * sizeof (unsigned char)); dest->pub.next_output_byte = dest->buffer; dest->pub.free_in_buffer = OUTPUT_BUF_SIZE; } /* * Empty the output buffer --- called whenever buffer fills up. * * In typical applications, this should write the entire output buffer * (ignoring the current state of next_output_byte & free_in_buffer), * reset the pointer & count to the start of the buffer, and return TRUE * indicating that the buffer has been dumped. * * In applications that need to be able to suspend compression due to output * overrun, a FALSE return indicates that the buffer cannot be emptied now. * In this situation, the compressor will return to its caller (possibly with * an indication that it has not accepted all the supplied scanlines). The * application should resume compression after it has made more room in the * output buffer. Note that there are substantial restrictions on the use of * suspension --- see the documentation. * * When suspending, the compressor will back up to a convenient restart point * (typically the start of the current MCU). next_output_byte & free_in_buffer * indicate where the restart point will be if the current call returns FALSE. * Data beyond this point will be regenerated after resumption, so do not * write it out when emptying the buffer externally. */ safeboolean empty_output_buffer (j_compress_ptr cinfo) { my_dest_ptr dest = (my_dest_ptr) cinfo->dest; if (gdPutBuf (dest->buffer, OUTPUT_BUF_SIZE, dest->outfile) != (size_t) OUTPUT_BUF_SIZE) ERREXIT (cinfo, JERR_FILE_WRITE); dest->pub.next_output_byte = dest->buffer; dest->pub.free_in_buffer = OUTPUT_BUF_SIZE; return TRUE; } /* * Terminate destination --- called by jpeg_finish_compress * after all data has been written. Usually needs to flush buffer. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ void term_destination (j_compress_ptr cinfo) { my_dest_ptr dest = (my_dest_ptr) cinfo->dest; size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer; /* Write any data remaining in the buffer */ if (datacount > 0) { if (gdPutBuf (dest->buffer, datacount, dest->outfile) != datacount) ERREXIT (cinfo, JERR_FILE_WRITE); } } /* * Prepare for output to a stdio stream. * The caller must have already opened the stream, and is responsible * for closing it after finishing compression. */ void jpeg_gdIOCtx_dest (j_compress_ptr cinfo, gdIOCtx * outfile) { my_dest_ptr dest; /* The destination object is made permanent so that multiple JPEG images * can be written to the same file without re-executing jpeg_stdio_dest. * This makes it dangerous to use this manager and a different destination * manager serially with the same JPEG object, because their private object * sizes may be different. Caveat programmer. */ if (cinfo->dest == NULL) { /* first time for this JPEG object? */ cinfo->dest = (struct jpeg_destination_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof (my_destination_mgr)); } dest = (my_dest_ptr) cinfo->dest; dest->pub.init_destination = init_destination; dest->pub.empty_output_buffer = empty_output_buffer; dest->pub.term_destination = term_destination; dest->outfile = outfile; } #endif /* HAVE_JPEG */ libwmf-0.2.8.4/src/extra/gd/gdxpm.c0000644000077100007710000000663707301470216016306 0ustar fjffjf00000000000000 /* add ability to load xpm files to gd, requires the xpm library. Caolan.McNamara@ul.ie http://www.csn.ul.ie/~caolan */ #include #include #include "gd.h" #include "gdhelpers.h" #ifndef HAVE_XPM gdImagePtr gdImageCreateFromXpm (char *filename) { fprintf (stderr, "libgd was not built with xpm support\n"); return (NULL); } #else #include "xpm.h" gdImagePtr gdImageCreateFromXpm (char *filename) { XpmInfo info; XpmImage image; int i, j, k, number; char buf[5]; gdImagePtr im = 0; char *apixel; int *pointer; int red = 0, green = 0, blue = 0, color = 0; int *colors; int ret; ret = XpmReadFileToXpmImage (filename, &image, &info); if (ret != XpmSuccess) return 0; if (!(im = gdImageCreate (image.width, image.height))) return 0; number = image.ncolors; colors = (int *) gdMalloc (sizeof (int) * number); if (colors == NULL) return (0); for (i = 0; i < number; i++) { switch (strlen (image.colorTable[i].c_color)) { case 4: buf[1] = '\0'; buf[0] = image.colorTable[i].c_color[1]; red = strtol (buf, NULL, 16); buf[0] = image.colorTable[i].c_color[3]; green = strtol (buf, NULL, 16); buf[0] = image.colorTable[i].c_color[5]; blue = strtol (buf, NULL, 16); break; case 7: buf[2] = '\0'; buf[0] = image.colorTable[i].c_color[1]; buf[1] = image.colorTable[i].c_color[2]; red = strtol (buf, NULL, 16); buf[0] = image.colorTable[i].c_color[3]; buf[1] = image.colorTable[i].c_color[4]; green = strtol (buf, NULL, 16); buf[0] = image.colorTable[i].c_color[5]; buf[1] = image.colorTable[i].c_color[6]; blue = strtol (buf, NULL, 16); break; case 10: buf[3] = '\0'; buf[0] = image.colorTable[i].c_color[1]; buf[1] = image.colorTable[i].c_color[2]; buf[2] = image.colorTable[i].c_color[3]; red = strtol (buf, NULL, 16); red /= 64; buf[0] = image.colorTable[i].c_color[4]; buf[1] = image.colorTable[i].c_color[5]; buf[2] = image.colorTable[i].c_color[6]; green = strtol (buf, NULL, 16); green /= 64; buf[0] = image.colorTable[i].c_color[7]; buf[1] = image.colorTable[i].c_color[8]; buf[2] = image.colorTable[i].c_color[9]; blue = strtol (buf, NULL, 16); blue /= 64; break; case 13: buf[4] = '\0'; buf[0] = image.colorTable[i].c_color[1]; buf[1] = image.colorTable[i].c_color[2]; buf[2] = image.colorTable[i].c_color[3]; buf[3] = image.colorTable[i].c_color[4]; red = strtol (buf, NULL, 16); red /= 256; buf[0] = image.colorTable[i].c_color[5]; buf[1] = image.colorTable[i].c_color[6]; buf[2] = image.colorTable[i].c_color[7]; buf[3] = image.colorTable[i].c_color[8]; green = strtol (buf, NULL, 16); green /= 256; buf[0] = image.colorTable[i].c_color[9]; buf[1] = image.colorTable[i].c_color[10]; buf[2] = image.colorTable[i].c_color[11]; buf[3] = image.colorTable[i].c_color[12]; blue = strtol (buf, NULL, 16); blue /= 256; break; } colors[i] = gdImageColorResolve (im, red, green, blue); if (colors[i] == -1) fprintf (stderr, "ARRRGH\n"); } apixel = (char *) gdMalloc (image.cpp + 1); if (apixel == NULL) return (0); apixel[image.cpp] = '\0'; pointer = image.data; for (i = 0; i < image.height; i++) { for (j = 0; j < image.width; j++) { k = *pointer++; gdImageSetPixel (im, j, i, colors[k]); } } gdFree (apixel); gdFree (colors); return (im); } #endif libwmf-0.2.8.4/src/extra/gd/gdfontt.c0000644000077100007710000011464707301470216016635 0ustar fjffjf00000000000000 /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO8859-2 at Thu Jan 8 13:49:54 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gdfontt.h" char gdFontTinyData[] = { /* Char 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 1 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 2 */ 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, /* Char 3 */ 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, /* Char 4 */ 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 5 */ 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, /* Char 6 */ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, /* Char 7 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 8 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 9 */ 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, /* Char 10 */ 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, /* Char 11 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 12 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 13 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 14 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 15 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 16 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 17 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 18 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 19 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 21 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 22 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 23 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 24 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 25 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, /* Char 26 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 27 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 28 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 29 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 30 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 31 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 32 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 33 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 34 */ 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 35 */ 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 36 */ 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 37 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, /* Char 38 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, /* Char 39 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 40 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 41 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 42 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 43 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 44 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 45 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 46 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 47 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 48 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 49 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 50 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 51 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 52 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 53 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 54 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 55 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 56 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 57 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 58 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 59 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, /* Char 60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 61 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 62 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 63 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 64 */ 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 65 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 66 */ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 67 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 68 */ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 69 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 70 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 71 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 72 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 73 */ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 74 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 75 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 76 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 77 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 78 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 79 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 80 */ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 81 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, /* Char 82 */ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 83 */ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 84 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 85 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 86 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 87 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 88 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 89 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 90 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 91 */ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 92 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* Char 93 */ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 94 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 95 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, /* Char 96 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 97 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 98 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 99 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 100 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 101 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 102 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 103 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, /* Char 104 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 105 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 106 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, /* Char 107 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 108 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 109 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* Char 110 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 111 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 112 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 113 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, /* Char 114 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 115 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 116 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 117 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 118 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 119 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 120 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 121 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, /* Char 122 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 123 */ 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 124 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 125 */ 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 126 */ 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 127 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 128 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 129 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 130 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 131 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 132 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 133 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 134 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 135 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 136 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 137 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 138 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 139 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 140 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 141 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 142 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 143 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 144 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 145 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 146 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 147 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 148 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 149 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 150 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 151 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 152 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 153 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 154 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 155 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 156 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 157 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 158 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 159 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 160 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 161 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, /* Char 162 */ 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 163 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* Char 164 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 165 */ 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 166 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 167 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, /* Char 168 */ 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 169 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 170 */ 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, /* Char 171 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 172 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 173 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 174 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 175 */ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 176 */ 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 177 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, /* Char 178 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, /* Char 179 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 180 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 181 */ 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 182 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 183 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 184 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, /* Char 185 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 186 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, /* Char 187 */ 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 188 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 189 */ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 190 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 191 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 192 */ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 193 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 194 */ 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 195 */ 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 196 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 197 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 198 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 199 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, /* Char 200 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 201 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 202 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, /* Char 203 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 204 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 205 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 206 */ 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 207 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 208 */ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 209 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 210 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 211 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 212 */ 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 213 */ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 214 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 215 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 216 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 217 */ 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 218 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 219 */ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 220 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 221 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 222 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, /* Char 223 */ 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, /* Char 224 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 225 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 226 */ 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 227 */ 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 228 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 229 */ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 230 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 231 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, /* Char 232 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 233 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 234 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, /* Char 235 */ 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 236 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 237 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 238 */ 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 239 */ 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 240 */ 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 241 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 242 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 243 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 244 */ 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 245 */ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 246 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 247 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 248 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 249 */ 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 250 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 251 */ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 252 */ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 253 */ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, /* Char 254 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, /* Char 255 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; gdFont gdFontTinyRep = { 256, 0, 5, 8, gdFontTinyData }; gdFontPtr gdFontTiny = &gdFontTinyRep; /* This file has not been truncated. */ libwmf-0.2.8.4/src/extra/gd/gdfonts.c0000644000077100007710000021261207301470216016623 0ustar fjffjf00000000000000 /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-medium-r-semicondensed-sans-12-116-75-75-c-60-iso8859-2 at Thu Jan 8 14:13:20 1998. No copyright info was found in the original bdf. */ #include "gdfonts.h" char gdFontSmallData[] = { /* Char 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 1 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 2 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, /* Char 3 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 4 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 5 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 6 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 7 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 8 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* Char 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 11 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 12 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 13 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 14 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 15 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 16 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 17 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 18 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 19 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 21 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 22 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 23 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 24 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 25 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 26 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 27 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 28 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 29 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 31 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 32 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 33 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 34 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 35 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 36 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 37 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 38 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 41 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 42 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 43 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 44 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 45 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 46 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 47 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 48 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 51 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 52 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 53 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 54 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 55 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 56 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 57 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 58 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 59 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 61 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 62 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 63 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 64 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 65 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 66 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 67 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 68 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 69 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 71 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 72 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 73 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 74 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 75 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 76 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 77 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 78 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 79 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 81 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 82 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 83 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 84 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 85 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 86 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 87 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 88 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 89 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 91 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 92 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 93 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 94 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 95 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 96 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 97 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 98 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 99 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 100 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 101 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 102 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 103 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, /* Char 104 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 105 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 106 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 107 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 108 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 109 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 110 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 111 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 112 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* Char 113 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, /* Char 114 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 115 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 116 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 117 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 118 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 119 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 120 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 121 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 122 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 123 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 124 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 125 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 126 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 127 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 128 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 129 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 130 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 131 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 132 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 133 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 134 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 135 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 136 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 137 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 138 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 139 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 140 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 141 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 142 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 143 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 144 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 145 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 146 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 147 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 148 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 149 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 150 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 151 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 152 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 153 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 154 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 155 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 156 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 157 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 158 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 159 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 160 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 161 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, /* Char 162 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 163 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 164 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 165 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 166 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 167 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 168 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 169 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 170 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 171 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 172 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 173 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 174 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 175 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 176 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 177 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, /* Char 178 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 179 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 180 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 181 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 182 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 183 */ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 184 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 185 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 186 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 187 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 188 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 189 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 190 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 191 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 192 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 193 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 194 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 195 */ 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 196 */ 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 197 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 198 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 199 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 200 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 201 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 202 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 203 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 204 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 205 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 206 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 207 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 208 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 209 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 210 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 211 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 212 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 213 */ 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 214 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 215 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 216 */ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 217 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 218 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 219 */ 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 220 */ 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 221 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 222 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 223 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 224 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 225 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 226 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 227 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 228 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 229 */ 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 230 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 231 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 232 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 233 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 234 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 235 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 236 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 237 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 238 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 239 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 240 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 241 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 242 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 243 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 244 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 245 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 246 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 247 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 248 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 249 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 250 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 251 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 252 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 253 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 254 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, /* Char 255 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; gdFont gdFontSmallRep = { 256, 0, 6, 13, gdFontSmallData }; gdFontPtr gdFontSmall = &gdFontSmallRep; /* This file has not been truncated. */ libwmf-0.2.8.4/src/extra/gd/gdfontmb.c0000644000077100007710000023623407301470216016765 0ustar fjffjf00000000000000 /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-bold-r-normal-sans-13-94-100-100-c-70-iso8859-2 at Thu Jan 8 13:54:57 1998. No copyright info was found in the original bdf. */ #include "gdfontmb.h" char gdFontMediumBoldData[] = { /* Char 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 1 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 2 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 3 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 4 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 5 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 6 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 7 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 8 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 9 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 10 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 11 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 12 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 13 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 14 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 15 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 16 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 17 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 18 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 19 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 21 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 22 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 23 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 24 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 25 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 26 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 27 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 28 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 29 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 31 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 32 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 33 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 34 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 35 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 36 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 37 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 38 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 41 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 42 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 43 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 44 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 45 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 46 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 47 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 48 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 51 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 52 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 53 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 54 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 55 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 56 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 57 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 58 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 59 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 61 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 62 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 63 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 64 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 65 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 66 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 67 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 68 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 69 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 71 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 72 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 73 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 74 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 75 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 76 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 77 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 78 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 79 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 81 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 82 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 83 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 84 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 85 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 86 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 87 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 88 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 89 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 91 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 92 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 93 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 94 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 95 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 96 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 97 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 98 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 99 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 100 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 101 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 102 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 103 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, /* Char 104 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 105 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 106 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, /* Char 107 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 108 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 109 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 110 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 111 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 112 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, /* Char 113 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 114 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 115 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 116 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 117 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 118 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 119 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 120 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 121 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, /* Char 122 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 123 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 124 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 125 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 126 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 127 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 128 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 129 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 130 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 131 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 132 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 133 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 134 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 135 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 136 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 137 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 138 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 139 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 140 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 141 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 142 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 143 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 144 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 145 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 146 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 147 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 148 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 149 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 150 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 151 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 152 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 153 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 154 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 155 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 156 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 157 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 158 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 159 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 160 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 161 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 162 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 163 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 164 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 165 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 166 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 167 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 168 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 169 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 170 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 171 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 172 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 173 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 174 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 175 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 176 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 177 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 178 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, /* Char 179 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 180 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 181 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 182 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 183 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 184 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 185 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 186 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 187 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 188 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 189 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 190 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 191 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 192 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 193 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 194 */ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 195 */ 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 196 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 197 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 198 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 199 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 200 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 201 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 202 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 203 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 204 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 205 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 206 */ 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 207 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 208 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 209 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 210 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 211 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 212 */ 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 213 */ 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 214 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 215 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 216 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 217 */ 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 218 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 219 */ 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 220 */ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 221 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 222 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, /* Char 223 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 224 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 225 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 226 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 227 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 228 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 229 */ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 230 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 231 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 232 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 233 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 234 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, /* Char 235 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 236 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 237 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 238 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 239 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 240 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 241 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 242 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 243 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 244 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 245 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 246 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 247 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 248 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 249 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 250 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 251 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 252 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 253 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, /* Char 254 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 255 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; gdFont gdFontMediumBoldRep = { 256, 0, 7, 13, gdFontMediumBoldData }; gdFontPtr gdFontMediumBold = &gdFontMediumBoldRep; /* This file has not been truncated. */ libwmf-0.2.8.4/src/extra/gd/gdfontl.c0000644000077100007710000033066007301470216016620 0ustar fjffjf00000000000000 /* This is a header file for gd font, generated using bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -misc-fixed-medium-r-normal--16-140-75-75-c-80-iso8859-2 at Tue Jan 6 19:39:27 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gdfontl.h" char gdFontLargeData[] = { /* Char 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 1 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 2 */ 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, /* Char 3 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 4 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 5 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 6 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 7 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 8 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 11 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 12 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 13 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 14 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 15 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 16 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 17 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 18 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 19 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 21 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 22 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 23 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 24 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 25 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 26 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 27 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 28 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 29 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 31 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 32 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 33 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 34 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 35 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 36 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 37 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 38 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 41 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 42 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 43 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 44 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 45 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 46 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 47 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 48 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 51 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 52 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 53 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 54 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 55 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 56 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 57 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 58 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 59 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 61 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 62 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 63 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 64 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 65 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 66 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 67 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 68 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 69 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 71 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 72 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 73 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 74 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 75 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 76 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 77 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 78 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 79 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 81 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 82 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 83 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 84 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 85 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 86 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 87 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 88 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 89 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 91 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 92 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 93 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 94 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 95 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 96 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 97 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 98 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 99 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 100 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 101 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 102 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 103 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, /* Char 104 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 105 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 106 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 107 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 108 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 109 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 110 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 111 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 112 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, /* Char 113 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* Char 114 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 115 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 116 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 117 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 118 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 119 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 120 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 121 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 122 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 123 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 124 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 125 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 126 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 127 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 128 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 129 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 130 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 131 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 132 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 133 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 134 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 135 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 136 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 137 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 138 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 139 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 140 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 141 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 142 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 143 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 144 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 145 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 146 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 147 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 148 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 149 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 150 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 151 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 152 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 153 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 154 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 155 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 156 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 157 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 158 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 159 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 160 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 161 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 162 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 163 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 164 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 165 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 166 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 167 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 168 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 169 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 170 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 171 */ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 172 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 173 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 174 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 175 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 176 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 177 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 178 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, /* Char 179 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 180 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 181 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 182 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 183 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 184 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 185 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 186 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 187 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 188 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 189 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 190 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 191 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 192 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 193 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 194 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 195 */ 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 196 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 197 */ 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 198 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 199 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 200 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 201 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 202 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 203 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 204 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 205 */ 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 206 */ 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 207 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 208 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 209 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 210 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 211 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 212 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 213 */ 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 214 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 215 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 216 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 217 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 218 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 219 */ 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 220 */ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 221 */ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 222 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 223 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 224 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 225 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 226 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 227 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 228 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 229 */ 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 230 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 231 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 232 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 233 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 234 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, /* Char 235 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 236 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 237 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 238 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 239 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 240 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 241 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 242 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 243 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 244 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 245 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 246 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 247 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 248 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 249 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 250 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 251 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 252 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 253 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, /* Char 254 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* Char 255 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; gdFont gdFontLargeRep = { 256, 0, 8, 16, gdFontLargeData }; gdFontPtr gdFontLarge = &gdFontLargeRep; /* This file has not been truncated. */ libwmf-0.2.8.4/src/extra/gd/gdfontg.c0000644000077100007710000034226207301470216016614 0ustar fjffjf00000000000000 /* This is a header file for gd font, generated using bdftogd version 0.51 by Jan Pazdziora, adelton@fi.muni.cz from bdf font -Misc-Fixed-Bold-R-Normal-Sans-15-140-75-75-C-90-ISO8859-2 at Mon Jan 26 14:45:58 1998. The original bdf was holding following copyright: "Libor Skarvada, libor@informatics.muni.cz" */ #include "gdfontg.h" char gdFontGiantData[] = { /* Char 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 1 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 2 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, /* Char 3 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 4 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 5 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 6 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 7 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 8 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 11 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 12 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 13 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 14 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 15 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 16 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 17 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 18 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 19 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 21 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 22 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 23 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 24 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 25 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, /* Char 26 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 27 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 28 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 29 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 31 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 32 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 33 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 34 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 35 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 36 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 37 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 38 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 39 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 41 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 42 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 43 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 44 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 45 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 46 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 47 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 48 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 51 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 52 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 53 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 54 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 55 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 56 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 57 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 58 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 59 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 61 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 62 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 63 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 64 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 65 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 66 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 67 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 68 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 69 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 71 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 72 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 73 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 74 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 75 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 76 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 77 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 78 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 79 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 81 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 82 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 83 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 84 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 85 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 86 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 87 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 88 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 89 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 91 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 92 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 93 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 94 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 95 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 96 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 97 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 98 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 99 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 100 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 101 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 102 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 103 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, /* Char 104 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 105 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 106 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, /* Char 107 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 108 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 109 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 110 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 111 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 112 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* Char 113 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 114 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 115 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 116 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 117 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 118 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 119 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 120 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 121 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, /* Char 122 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 123 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 124 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 125 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 126 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 127 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 128 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 129 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 130 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 131 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 132 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 133 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 134 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 135 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 136 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 137 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 138 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 139 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 140 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 141 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 142 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 143 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 144 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 145 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 146 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 147 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 148 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 149 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 150 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 151 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 152 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 153 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 154 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 155 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 156 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 157 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 158 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 159 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 160 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 161 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, /* Char 162 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 163 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 164 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 165 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 166 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 167 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 168 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 169 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 170 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, /* Char 171 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 172 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 173 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 174 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 175 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 176 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 177 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, /* Char 178 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, /* Char 179 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 180 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 181 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 182 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 183 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 184 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, /* Char 185 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 186 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, /* Char 187 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 188 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 189 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 190 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 191 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 192 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 193 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 194 */ 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 195 */ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 196 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 197 */ 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 198 */ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 199 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, /* Char 200 */ 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 201 */ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 202 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, /* Char 203 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 204 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 205 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 206 */ 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 207 */ 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 208 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 209 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 210 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 211 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 212 */ 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 213 */ 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 214 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 215 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 216 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 217 */ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 218 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 219 */ 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 220 */ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 221 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 222 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, /* Char 223 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 224 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 225 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 226 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 227 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 228 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 229 */ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 230 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 231 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, /* Char 232 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 233 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 234 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, /* Char 235 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 236 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 237 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 238 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 239 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 240 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 241 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 242 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 243 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 244 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 245 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 246 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 247 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 248 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 249 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 250 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 251 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 252 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* Char 253 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, /* Char 254 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, /* Char 255 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; gdFont gdFontGiantRep = { 256, 0, 9, 15, gdFontGiantData }; gdFontPtr gdFontGiant = &gdFontGiantRep; /* This file has not been truncated. */ libwmf-0.2.8.4/src/extra/gd/gdtables.c0000644000077100007710000001256207301470216016746 0ustar fjffjf00000000000000 int gdCosT[] = { 1024, 1023, 1023, 1022, 1021, 1020, 1018, 1016, 1014, 1011, 1008, 1005, 1001, 997, 993, 989, 984, 979, 973, 968, 962, 955, 949, 942, 935, 928, 920, 912, 904, 895, 886, 877, 868, 858, 848, 838, 828, 817, 806, 795, 784, 772, 760, 748, 736, 724, 711, 698, 685, 671, 658, 644, 630, 616, 601, 587, 572, 557, 542, 527, 512, 496, 480, 464, 448, 432, 416, 400, 383, 366, 350, 333, 316, 299, 282, 265, 247, 230, 212, 195, 177, 160, 142, 124, 107, 89, 71, 53, 35, 17, 0, -17, -35, -53, -71, -89, -107, -124, -142, -160, -177, -195, -212, -230, -247, -265, -282, -299, -316, -333, -350, -366, -383, -400, -416, -432, -448, -464, -480, -496, -512, -527, -542, -557, -572, -587, -601, -616, -630, -644, -658, -671, -685, -698, -711, -724, -736, -748, -760, -772, -784, -795, -806, -817, -828, -838, -848, -858, -868, -877, -886, -895, -904, -912, -920, -928, -935, -942, -949, -955, -962, -968, -973, -979, -984, -989, -993, -997, -1001, -1005, -1008, -1011, -1014, -1016, -1018, -1020, -1021, -1022, -1023, -1023, -1024, -1023, -1023, -1022, -1021, -1020, -1018, -1016, -1014, -1011, -1008, -1005, -1001, -997, -993, -989, -984, -979, -973, -968, -962, -955, -949, -942, -935, -928, -920, -912, -904, -895, -886, -877, -868, -858, -848, -838, -828, -817, -806, -795, -784, -772, -760, -748, -736, -724, -711, -698, -685, -671, -658, -644, -630, -616, -601, -587, -572, -557, -542, -527, -512, -496, -480, -464, -448, -432, -416, -400, -383, -366, -350, -333, -316, -299, -282, -265, -247, -230, -212, -195, -177, -160, -142, -124, -107, -89, -71, -53, -35, -17, 0, 17, 35, 53, 71, 89, 107, 124, 142, 160, 177, 195, 212, 230, 247, 265, 282, 299, 316, 333, 350, 366, 383, 400, 416, 432, 448, 464, 480, 496, 512, 527, 542, 557, 572, 587, 601, 616, 630, 644, 658, 671, 685, 698, 711, 724, 736, 748, 760, 772, 784, 795, 806, 817, 828, 838, 848, 858, 868, 877, 886, 895, 904, 912, 920, 928, 935, 942, 949, 955, 962, 968, 973, 979, 984, 989, 993, 997, 1001, 1005, 1008, 1011, 1014, 1016, 1018, 1020, 1021, 1022, 1023, 1023 }; int gdSinT[] = { 0, 17, 35, 53, 71, 89, 107, 124, 142, 160, 177, 195, 212, 230, 247, 265, 282, 299, 316, 333, 350, 366, 383, 400, 416, 432, 448, 464, 480, 496, 512, 527, 542, 557, 572, 587, 601, 616, 630, 644, 658, 671, 685, 698, 711, 724, 736, 748, 760, 772, 784, 795, 806, 817, 828, 838, 848, 858, 868, 877, 886, 895, 904, 912, 920, 928, 935, 942, 949, 955, 962, 968, 973, 979, 984, 989, 993, 997, 1001, 1005, 1008, 1011, 1014, 1016, 1018, 1020, 1021, 1022, 1023, 1023, 1024, 1023, 1023, 1022, 1021, 1020, 1018, 1016, 1014, 1011, 1008, 1005, 1001, 997, 993, 989, 984, 979, 973, 968, 962, 955, 949, 942, 935, 928, 920, 912, 904, 895, 886, 877, 868, 858, 848, 838, 828, 817, 806, 795, 784, 772, 760, 748, 736, 724, 711, 698, 685, 671, 658, 644, 630, 616, 601, 587, 572, 557, 542, 527, 512, 496, 480, 464, 448, 432, 416, 400, 383, 366, 350, 333, 316, 299, 282, 265, 247, 230, 212, 195, 177, 160, 142, 124, 107, 89, 71, 53, 35, 17, 0, -17, -35, -53, -71, -89, -107, -124, -142, -160, -177, -195, -212, -230, -247, -265, -282, -299, -316, -333, -350, -366, -383, -400, -416, -432, -448, -464, -480, -496, -512, -527, -542, -557, -572, -587, -601, -616, -630, -644, -658, -671, -685, -698, -711, -724, -736, -748, -760, -772, -784, -795, -806, -817, -828, -838, -848, -858, -868, -877, -886, -895, -904, -912, -920, -928, -935, -942, -949, -955, -962, -968, -973, -979, -984, -989, -993, -997, -1001, -1005, -1008, -1011, -1014, -1016, -1018, -1020, -1021, -1022, -1023, -1023, -1024, -1023, -1023, -1022, -1021, -1020, -1018, -1016, -1014, -1011, -1008, -1005, -1001, -997, -993, -989, -984, -979, -973, -968, -962, -955, -949, -942, -935, -928, -920, -912, -904, -895, -886, -877, -868, -858, -848, -838, -828, -817, -806, -795, -784, -772, -760, -748, -736, -724, -711, -698, -685, -671, -658, -644, -630, -616, -601, -587, -572, -557, -542, -527, -512, -496, -480, -464, -448, -432, -416, -400, -383, -366, -350, -333, -316, -299, -282, -265, -247, -230, -212, -195, -177, -160, -142, -124, -107, -89, -71, -53, -35, -17 }; libwmf-0.2.8.4/src/extra/gd/gdft.c0000644000077100007710000005443010271767771016124 0ustar fjffjf00000000000000 /********************************************/ /* gd interface to freetype library */ /* */ /* John Ellson ellson@lucent.com */ /********************************************/ #include #include #include #include #include "gd.h" #include "gdhelpers.h" #ifndef MSWIN32 #include #else #define R_OK 2 #endif /* number of antialised colors for indexed bitmaps */ #define NUMCOLORS 8 char * gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string) { return gdImageStringFT (im, brect, fg, fontlist, ptsize, angle, x, y, string); } #ifndef HAVE_LIBFREETYPE char * gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string) { return "libgd was not built with FreeType font support\n"; } #else #include "gdcache.h" #include #include FT_FREETYPE_H #include FT_GLYPH_H /* number of fonts cached before least recently used is replaced */ #define FONTCACHESIZE 6 /* number of antialias color lookups cached */ #define TWEENCOLORCACHESIZE 32 /* * Line separation as a factor of font height. * No space between if LINESPACE = 1.00 * Line separation will be rounded up to next pixel row. */ #define LINESPACE 1.05 /* * The character (space) used to separate alternate fonts in the * fontlist parameter to gdImageStringFT. */ #define LISTSEPARATOR " " /* * DEFAULT_FONTPATH and PATHSEPARATOR are host type dependent and * are normally set by configure in gvconfig.h. These are just * some last resort values that might match some Un*x system * if building this version of gd separate from graphviz. */ #ifndef DEFAULT_FONTPATH #define DEFAULT_FONTPATH "/usr/share/fonts/truetype" #endif #ifndef PATHSEPARATOR #define PATHSEPARATOR ":" #endif #ifndef TRUE #define FALSE 0 #define TRUE !FALSE #endif #define MAX(a,b) ((a)>(b)?(a):(b)) #define MIN(a,b) ((a)<(b)?(a):(b)) typedef struct { char *fontlist; /* key */ FT_Library *library; FT_Face face; FT_Bool have_char_map_unicode, have_char_map_big5, have_char_map_sjis, have_char_map_apple_roman; gdCache_head_t *glyphCache; } font_t; typedef struct { char *fontlist; /* key */ FT_Library *library; } fontkey_t; typedef struct { int pixel; /* key */ int bgcolor; /* key */ int fgcolor; /* key *//* -ve means no antialias */ gdImagePtr im; /* key */ int tweencolor; } tweencolor_t; typedef struct { int pixel; /* key */ int bgcolor; /* key */ int fgcolor; /* key *//* -ve means no antialias */ gdImagePtr im; /* key */ } tweencolorkey_t; /******************************************************************** * gdTcl_UtfToUniChar is borrowed from Tcl ... */ /* * tclUtf.c -- * * Routines for manipulating UTF-8 strings. * * Copyright (c) 1997-1998 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * SCCS: @(#) tclUtf.c 1.25 98/01/28 18:02:43 */ /* *--------------------------------------------------------------------------- * * gdTcl_UtfToUniChar -- * * Extract the Tcl_UniChar represented by the UTF-8 string. Bad * UTF-8 sequences are converted to valid Tcl_UniChars and processing * continues. Equivalent to Plan 9 chartorune(). * * The caller must ensure that the source buffer is long enough that * this routine does not run off the end and dereference non-existent * memory looking for trail bytes. If the source buffer is known to * be '\0' terminated, this cannot happen. Otherwise, the caller * should call Tcl_UtfCharComplete() before calling this routine to * ensure that enough bytes remain in the string. * * Results: * *chPtr is filled with the Tcl_UniChar, and the return value is the * number of bytes from the UTF-8 string that were consumed. * * Side effects: * None. * *--------------------------------------------------------------------------- */ #ifdef JISX0208 #include "jisx0208.h" #endif #define Tcl_UniChar int #define TCL_UTF_MAX 3 static int gdTcl_UtfToUniChar (char *str, Tcl_UniChar * chPtr) /* str is the UTF8 next character pointer */ /* chPtr is the int for the result */ { int byte; /* HTML4.0 entities in decimal form, e.g. Å */ byte = *((unsigned char *) str); if (byte == '&') { int i, n = 0; byte = *((unsigned char *) (str + 1)); if (byte == '#') { for (i = 2; i < 8; i++) { byte = *((unsigned char *) (str + i)); if (byte >= '0' && byte <= '9') { n = (n * 10) + (byte - '0'); } else break; } if (byte == ';') { *chPtr = (Tcl_UniChar) n; return ++i; } } } /* * Unroll 1 to 3 byte UTF-8 sequences, use loop to handle longer ones. */ byte = *((unsigned char *) str); #ifdef JISX0208 if (0xA1 <= byte && byte <= 0xFE) { int ku, ten; ku = (byte & 0x7F) - 0x20; ten = (str[1] & 0x7F) - 0x20; if ((ku < 1 || ku > 92) || (ten < 1 || ten > 94)) { *chPtr = (Tcl_UniChar) byte; return 1; } *chPtr = (Tcl_UniChar) UnicodeTbl[ku - 1][ten - 1]; return 2; } else #endif /* JISX0208 */ if (byte < 0xC0) { /* * Handles properly formed UTF-8 characters between * 0x01 and 0x7F. Also treats \0 and naked trail * bytes 0x80 to 0xBF as valid characters representing * themselves. */ *chPtr = (Tcl_UniChar) byte; return 1; } else if (byte < 0xE0) { if ((str[1] & 0xC0) == 0x80) { /* * Two-byte-character lead-byte followed * by a trail-byte. */ *chPtr = (Tcl_UniChar) (((byte & 0x1F) << 6) | (str[1] & 0x3F)); return 2; } /* * A two-byte-character lead-byte not followed by trail-byte * represents itself. */ *chPtr = (Tcl_UniChar) byte; return 1; } else if (byte < 0xF0) { if (((str[1] & 0xC0) == 0x80) && ((str[2] & 0xC0) == 0x80)) { /* * Three-byte-character lead byte followed by * two trail bytes. */ *chPtr = (Tcl_UniChar) (((byte & 0x0F) << 12) | ((str[1] & 0x3F) << 6) | (str[2] & 0x3F)); return 3; } /* * A three-byte-character lead-byte not followed by * two trail-bytes represents itself. */ *chPtr = (Tcl_UniChar) byte; return 1; } #if TCL_UTF_MAX > 3 else { int ch, total, trail; total = totalBytes[byte]; trail = total - 1; if (trail > 0) { ch = byte & (0x3F >> trail); do { str++; if ((*str & 0xC0) != 0x80) { *chPtr = byte; return 1; } ch <<= 6; ch |= (*str & 0x3F); trail--; } while (trail > 0); *chPtr = ch; return total; } } #endif *chPtr = (Tcl_UniChar) byte; return 1; } /********************************************************************/ /* font cache functions */ static int fontTest (void *element, void *key) { font_t *a = (font_t *) element; fontkey_t *b = (fontkey_t *) key; return (strcmp (a->fontlist, b->fontlist) == 0); } static void * fontFetch (char **error, void *key) { font_t *a; fontkey_t *b = (fontkey_t *) key; int n; int font_found = 0; unsigned short platform, encoding; char *fontsearchpath, *fontlist; char *fullname = NULL; char *name, *path, *dir; char *strtok_ptr; FT_Error err; FT_CharMap found = 0; FT_CharMap charmap; a = (font_t *) gdMalloc (sizeof (font_t)); a->fontlist = strdup (b->fontlist); a->library = b->library; /* * Search the pathlist for any of a list of font names. */ fontsearchpath = getenv ("GDFONTPATH"); if (!fontsearchpath) fontsearchpath = DEFAULT_FONTPATH; path = strdup (fontsearchpath); fontlist = strdup (a->fontlist); /* * Must use gd_strtok_r else pointer corrupted by strtok in nested loop. */ for (name = gd_strtok_r (fontlist, LISTSEPARATOR, &strtok_ptr); name; name = gd_strtok_r (0, LISTSEPARATOR, &strtok_ptr)) { /* * Allocate an oversized buffer that is guaranteed to be * big enough for all paths to be tested. */ fullname = gdRealloc (fullname, strlen (fontsearchpath) + strlen (name) + 6); /* if name is an absolute filename then test directly */ if (*name == '/') { sprintf (fullname, "%s", name); if (access (fullname, R_OK) == 0) { font_found++; break; } } for (dir = strtok (path, PATHSEPARATOR); dir; dir = strtok (0, PATHSEPARATOR)) { sprintf (fullname, "%s/%s.ttf", dir, name); if (access (fullname, R_OK) == 0) { font_found++; break; } } if (font_found) break; } gdFree (path); gdFree (fontlist); if (!font_found) { *error = "Could not find/open font"; return NULL; } err = FT_New_Face (*b->library, fullname, 0, &a->face); if (err) { *error = "Could not read font"; return NULL; } gdFree (fullname); /* FIXME - This mapping stuff is imcomplete - where is the spec? */ a->have_char_map_unicode = 0; a->have_char_map_big5 = 0; a->have_char_map_sjis = 0; a->have_char_map_apple_roman = 0; for (n = 0; n < a->face->num_charmaps; n++) { charmap = a->face->charmaps[n]; platform = charmap->platform_id; encoding = charmap->encoding_id; if ((platform == 3 && encoding == 1) /* Windows Unicode */ || (platform == 3 && encoding == 0) /* Windows Symbol */ || (platform == 2 && encoding == 1) /* ISO Unicode */ || (platform == 0)) { /* Apple Unicode */ a->have_char_map_unicode = 1; found = charmap; } else if (platform == 3 && encoding == 4) { /* Windows Big5 */ a->have_char_map_big5 = 1; found = charmap; } else if (platform == 3 && encoding == 2) { /* Windows Sjis */ a->have_char_map_sjis = 1; found = charmap; } else if ((platform == 1 && encoding == 0) /* Apple Roman */ || (platform == 2 && encoding == 0)) { /* ISO ASCII */ a->have_char_map_apple_roman = 1; found = charmap; } } if (!found) { *error = "Unable to find a CharMap that I can handle"; return NULL; } return (void *) a; } static void fontRelease (void *element) { font_t *a = (font_t *) element; FT_Done_Face (a->face); gdFree (a->fontlist); gdFree ((char *) element); } /********************************************************************/ /* tweencolor cache functions */ static int tweenColorTest (void *element, void *key) { tweencolor_t *a = (tweencolor_t *) element; tweencolorkey_t *b = (tweencolorkey_t *) key; return (a->pixel == b->pixel && a->bgcolor == b->bgcolor && a->fgcolor == b->fgcolor && a->im == b->im); } /* * Computes a color in im's color table that is part way between * the background and foreground colors proportional to the gray * pixel value in the range 0-NUMCOLORS. The fg and bg colors must already * be in the color table. */ static void * tweenColorFetch (char **error, void *key) { tweencolor_t *a; tweencolorkey_t *b = (tweencolorkey_t *) key; int pixel, npixel, bg, fg; gdImagePtr im; a = (tweencolor_t *) gdMalloc (sizeof (tweencolor_t)); pixel = a->pixel = b->pixel; bg = a->bgcolor = b->bgcolor; fg = a->fgcolor = b->fgcolor; im = b->im; /* if fg is specified by a negative color idx, then don't antialias */ if (fg < 0) { a->tweencolor = -fg; } else { npixel = NUMCOLORS - pixel; if (im->trueColor) { /* 2.0.1: use gdImageSetPixel to do the alpha blending work, or to just store the alpha level. All we have to do here is incorporate our knowledge of the percentage of this pixel that is really "lit" by pushing the alpha value up toward transparency in edge regions. */ a->tweencolor = gdTrueColorAlpha ( gdTrueColorGetRed (fg), gdTrueColorGetGreen (fg), gdTrueColorGetBlue (fg), gdAlphaMax - (gdTrueColorGetAlpha (fg) * pixel / NUMCOLORS)); } else { a->tweencolor = gdImageColorResolve (im, (pixel * im->red[fg] + npixel * im->red[bg]) / NUMCOLORS, (pixel * im->green[fg] + npixel * im->green[bg]) / NUMCOLORS, (pixel * im->blue[fg] + npixel * im->blue[bg]) / NUMCOLORS); } } return (void *) a; } static void tweenColorRelease (void *element) { gdFree ((char *) element); } /* draw_bitmap - transfers glyph bitmap to GD image */ /* static */ char * gdft_draw_bitmap (gdImage * im, int fg, FT_Bitmap bitmap, int pen_x, int pen_y) { unsigned char *pixel = 0; int *tpixel = 0; int x, y, row, col, pc; tweencolor_t *tc_elem; tweencolorkey_t tc_key; /* initialize tweenColorCache on first call */ static gdCache_head_t *tc_cache; if (!tc_cache) { tc_cache = gdCacheCreate (TWEENCOLORCACHESIZE, tweenColorTest, tweenColorFetch, tweenColorRelease); } /* copy to image, mapping colors */ tc_key.fgcolor = fg; tc_key.im = im; for (row = 0; row < bitmap.rows; row++) { pc = row * bitmap.pitch; y = pen_y + row; /* clip if out of bounds */ if (y >= im->sy || y < 0) continue; for (col = 0; col < bitmap.width; col++, pc++) { if (bitmap.pixel_mode == ft_pixel_mode_grays) { /* * Round to NUMCOLORS levels of antialiasing for * index color images since only 256 colors are * available. */ tc_key.pixel = ((bitmap.buffer[pc] * NUMCOLORS) + bitmap.num_grays / 2) / (bitmap.num_grays - 1); } else if (bitmap.pixel_mode == ft_pixel_mode_mono) { tc_key.pixel = ((bitmap.buffer[pc / 8] << (pc % 8)) & 128) ? NUMCOLORS : 0; } else { return "Unsupported ft_pixel_mode"; } if (tc_key.pixel > 0) { /* if not background */ x = pen_x + col; /* clip if out of bounds */ if (x >= im->sx || x < 0) continue; /* get pixel location in gd buffer */ if (im->trueColor) { tpixel = &im->tpixels[y][x]; } else { pixel = &im->pixels[y][x]; } if (tc_key.pixel == NUMCOLORS) { /* use fg color directly */ if (im->trueColor) { *tpixel = fg; } else { *pixel = fg; } } else { /* find antialised color */ if (im->trueColor) { tc_key.bgcolor = *tpixel; } else { tc_key.bgcolor = *pixel; } tc_elem = (tweencolor_t *) gdCacheGet ( tc_cache, &tc_key); if (im->trueColor) { *tpixel = tc_elem->tweencolor; } else { *pixel = tc_elem->tweencolor; } } } } } return (char *) NULL; } int gdroundupdown (FT_F26Dot6 v1, int updown) { return (!updown) ? (v1 < 0 ? ((v1 - 63) >> 6) : v1 >> 6) : (v1 > 0 ? ((v1 + 63) >> 6) : v1 >> 6); } extern int any2eucjp (char *, char *, unsigned int); /********************************************************************/ /* gdImageStringFT - render a utf8 string onto a gd image */ char * gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist, double ptsize, double angle, int x, int y, char *string) { FT_BBox bbox, glyph_bbox; FT_Matrix matrix; FT_Vector pen, delta, penf; FT_Face face; FT_Glyph image; FT_GlyphSlot slot; FT_Error err; FT_Bool use_kerning; FT_UInt glyph_index, previous; double sin_a = sin (angle); double cos_a = cos (angle); int len, i = 0, ch; int x1 = 0, y1 = 0; font_t *font; fontkey_t fontkey; char *next; char *tmpstr = 0; int render = (im && (im->trueColor || (fg <= 255 && fg >= -255))); FT_BitmapGlyph bm; /***** initialize font library and font cache on first call ******/ static gdCache_head_t *fontCache; static FT_Library library; if (!fontCache) { if (FT_Init_FreeType (&library)) { return "Failure to initialize font library"; } fontCache = gdCacheCreate (FONTCACHESIZE, fontTest, fontFetch, fontRelease); } /*****/ /* get the font (via font cache) */ fontkey.fontlist = fontlist; fontkey.library = &library; font = (font_t *) gdCacheGet (fontCache, &fontkey); if (!font) { return fontCache->error; } face = font->face; /* shortcut */ slot = face->glyph; /* shortcut */ if (FT_Set_Char_Size (face, 0, (FT_F26Dot6) (ptsize * 64), GD_RESOLUTION, GD_RESOLUTION)) { return "Could not set character size"; } matrix.xx = (FT_Fixed) (cos_a * (1 << 16)); matrix.yx = (FT_Fixed) (sin_a * (1 << 16)); matrix.xy = -matrix.yx; matrix.yy = matrix.xx; penf.x = penf.y = 0; /* running position of non-rotated string */ pen.x = pen.y = 0; /* running position of rotated string */ bbox.xMin = bbox.xMax = bbox.yMin = bbox.yMax = 0; use_kerning = FT_HAS_KERNING (face); previous = 0; #ifndef JISX0208 if (font->have_char_map_sjis) { #endif if ((tmpstr = (char *) gdMalloc (BUFSIZ))) { any2eucjp (tmpstr, string, BUFSIZ); next = tmpstr; } else { next = string; } #ifndef JISX0208 } else { next = string; } #endif while (*next) { ch = *next; /* carriage returns */ if (ch == '\r') { penf.x = 0; x1 = (penf.x * cos_a - penf.y * sin_a + 32) / 64; y1 = (penf.x * sin_a + penf.y * cos_a + 32) / 64; pen.x = pen.y = 0; previous = 0; /* clear kerning flag */ next++; continue; } /* newlines */ if (ch == '\n') { penf.y -= face->size->metrics.height * LINESPACE; penf.y = (penf.y - 32) & -64; /* round to next pixel row */ x1 = (penf.x * cos_a - penf.y * sin_a + 32) / 64; y1 = (penf.x * sin_a + penf.y * cos_a + 32) / 64; pen.x = pen.y = 0; previous = 0; /* clear kerning flag */ next++; continue; } if (font->have_char_map_unicode) { /* use UTF-8 mapping from ASCII */ len = gdTcl_UtfToUniChar (next, &ch); next += len; } else if (font->have_char_map_sjis) { unsigned char c; int jiscode; c = *next; if (0xA1 <= c && c <= 0xFE) { next++; jiscode = 0x100 * (c & 0x7F) + ((*next) & 0x7F); ch = (jiscode >> 8) & 0xFF; jiscode &= 0xFF; if (ch & 1) jiscode += 0x40 - 0x21; else jiscode += 0x9E - 0x21; if (jiscode >= 0x7F) jiscode++; ch = (ch - 0x21) / 2 + 0x81; if (ch >= 0xA0) ch += 0x40; ch = (ch << 8) + jiscode; } else { ch = c & 0xFF; /* don't extend sign */ } next++; } else { /* * Big 5 mapping: * use "JIS-8 half-width katakana" coding from 8-bit characters. Ref: * ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/japan.inf-032092.sjs */ ch = (*next) & 0xFF; /* don't extend sign */ next++; if (ch >= 161 /* first code of JIS-8 pair */ && *next) { /* don't advance past '\0' */ /* TBB: Fix from Kwok Wah On: & 255 needed */ ch = (ch * 256) + ((*next) & 255); next++; } } /* Convert character code to glyph index */ glyph_index = FT_Get_Char_Index (face, ch); /* retrieve kerning distance and move pen position */ if (use_kerning && previous && glyph_index) { FT_Get_Kerning (face, previous, glyph_index, ft_kerning_default, &delta); pen.x += delta.x; } /* load glyph image into the slot (erase previous one) */ err = FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT); if (err) return "Problem loading glyph"; /* transform glyph image */ FT_Get_Glyph (slot, &image); if (brect) { /* only if need brect */ FT_Glyph_Get_CBox (image, ft_glyph_bbox_gridfit, &glyph_bbox); if (!i) { /* if first character, init BB corner values */ bbox.xMin = bbox.yMin = (1 << 30) - 1; bbox.xMax = bbox.yMax = -bbox.xMin; } glyph_bbox.xMin += penf.x; glyph_bbox.yMin += penf.y; glyph_bbox.xMax += penf.x; glyph_bbox.yMax += penf.y; if (bbox.xMin > glyph_bbox.xMin) bbox.xMin = glyph_bbox.xMin; if (bbox.yMin > glyph_bbox.yMin) bbox.yMin = glyph_bbox.yMin; if (bbox.xMax < glyph_bbox.xMax) bbox.xMax = glyph_bbox.xMax; if (bbox.yMax < glyph_bbox.yMax) bbox.yMax = glyph_bbox.yMax; i++; } /* transform glyph image */ FT_Glyph_Transform (image, &matrix, 0); if (render) { if (image->format != ft_glyph_format_bitmap) { err = FT_Glyph_To_Bitmap (&image, ft_render_mode_normal, 0, 1); if (err) return "Problem rendering glyph"; } /* now, draw to our target surface */ bm = (FT_BitmapGlyph) image; gdft_draw_bitmap (im, fg, bm->bitmap, x + x1 + ((pen.x + 31) >> 6) + bm->left, y - y1 + ((pen.y + 31) >> 6) - bm->top); } /* record current glyph index for kerning */ previous = glyph_index; /* increment pen position */ pen.x += image->advance.x >> 10; pen.y -= image->advance.y >> 10; penf.x += slot->metrics.horiAdvance; FT_Done_Glyph (image); } if (brect) { /* only if need brect */ /* For perfect rounding, must get sin(a + pi/4) and sin(a - pi/4). */ double d1 = sin (angle + 0.78539816339744830962); double d2 = sin (angle - 0.78539816339744830962); /* rotate bounding rectangle */ brect[0] = (int) (bbox.xMin * cos_a - bbox.yMin * sin_a); brect[1] = (int) (bbox.xMin * sin_a + bbox.yMin * cos_a); brect[2] = (int) (bbox.xMax * cos_a - bbox.yMin * sin_a); brect[3] = (int) (bbox.xMax * sin_a + bbox.yMin * cos_a); brect[4] = (int) (bbox.xMax * cos_a - bbox.yMax * sin_a); brect[5] = (int) (bbox.xMax * sin_a + bbox.yMax * cos_a); brect[6] = (int) (bbox.xMin * cos_a - bbox.yMax * sin_a); brect[7] = (int) (bbox.xMin * sin_a + bbox.yMax * cos_a); /* scale, round and offset brect */ brect[0] = x + gdroundupdown (brect[0], d2 > 0); brect[1] = y - gdroundupdown (brect[1], d1 < 0); brect[2] = x + gdroundupdown (brect[2], d1 > 0); brect[3] = y - gdroundupdown (brect[3], d2 > 0); brect[4] = x + gdroundupdown (brect[4], d2 < 0); brect[5] = y - gdroundupdown (brect[5], d1 > 0); brect[6] = x + gdroundupdown (brect[6], d1 < 0); brect[7] = y - gdroundupdown (brect[7], d2 < 0); } if (tmpstr) gdFree (tmpstr); return (char *) NULL; } #endif /* HAVE_LIBFREETYPE */ libwmf-0.2.8.4/src/extra/gd/gdcache.c0000644000077100007710000001205207301470216016531 0ustar fjffjf00000000000000#include "gd.h" #include "gdhelpers.h" #ifdef HAVE_LIBTTF #define NEED_CACHE 1 #else #ifdef HAVE_LIBFREETYPE #define NEED_CACHE 1 #endif #endif #ifdef NEED_CACHE /* * gdcache.c * * Caches of pointers to user structs in which the least-recently-used * element is replaced in the event of a cache miss after the cache has * reached a given size. * * John Ellson (ellson@lucent.com) Oct 31, 1997 * * Test this with: * gcc -o gdcache -g -Wall -DTEST gdcache.c * * The cache is implemented by a singly-linked list of elements * each containing a pointer to a user struct that is being managed by * the cache. * * The head structure has a pointer to the most-recently-used * element, and elements are moved to this position in the list each * time they are used. The head also contains pointers to three * user defined functions: * - a function to test if a cached userdata matches some keydata * - a function to provide a new userdata struct to the cache * if there has been a cache miss. * - a function to release a userdata struct when it is * no longer being managed by the cache * * In the event of a cache miss the cache is allowed to grow up to * a specified maximum size. After the maximum size is reached then * the least-recently-used element is discarded to make room for the * new. The most-recently-returned value is always left at the * beginning of the list after retrieval. * * In the current implementation the cache is traversed by a linear * search from most-recent to least-recent. This linear search * probably limits the usefulness of this implementation to cache * sizes of a few tens of elements. */ #include "gdcache.h" /*********************************************************/ /* implementation */ /*********************************************************/ /* create a new cache */ gdCache_head_t * gdCacheCreate ( int size, gdCacheTestFn_t gdCacheTest, gdCacheFetchFn_t gdCacheFetch, gdCacheReleaseFn_t gdCacheRelease) { gdCache_head_t *head; head = (gdCache_head_t *) gdMalloc (sizeof (gdCache_head_t)); head->mru = NULL; head->size = size; head->gdCacheTest = gdCacheTest; head->gdCacheFetch = gdCacheFetch; head->gdCacheRelease = gdCacheRelease; return head; } void gdCacheDelete (gdCache_head_t * head) { gdCache_element_t *elem, *prev; elem = head->mru; while (elem) { (*(head->gdCacheRelease)) (elem->userdata); prev = elem; elem = elem->next; gdFree ((char *) prev); } gdFree ((char *) head); } void * gdCacheGet (gdCache_head_t * head, void *keydata) { int i = 0; gdCache_element_t *elem, *prev = NULL, *prevprev = NULL; void *userdata; elem = head->mru; while (elem) { if ((*(head->gdCacheTest)) (elem->userdata, keydata)) { if (i) { /* if not already most-recently-used */ /* relink to top of list */ prev->next = elem->next; elem->next = head->mru; head->mru = elem; } return elem->userdata; } prevprev = prev; prev = elem; elem = elem->next; i++; } userdata = (*(head->gdCacheFetch)) (&(head->error), keydata); if (!userdata) { /* if there was an error in the fetch then don't cache */ return NULL; } if (i < head->size) { /* cache still growing - add new elem */ elem = (gdCache_element_t *) gdMalloc (sizeof (gdCache_element_t)); } else { /* cache full - replace least-recently-used */ /* preveprev becomes new end of list */ prevprev->next = NULL; elem = prev; (*(head->gdCacheRelease)) (elem->userdata); } /* relink to top of list */ elem->next = head->mru; head->mru = elem; elem->userdata = userdata; return userdata; } /*********************************************************/ /* test stub */ /*********************************************************/ #ifdef TEST #include typedef struct { int key; int value; } key_value_t; static int cacheTest (void *map, void *key) { return (((key_value_t *) map)->key == *(int *) key); } static void * cacheFetch (char **error, void *key) { key_value_t *map; map = (key_value_t *) gdMalloc (sizeof (key_value_t)); map->key = *(int *) key; map->value = 3; *error = NULL; return (void *) map; } static void cacheRelease (void *map) { gdFree ((char *) map); } int main (char *argv[], int argc) { gdCache_head_t *cacheTable; int elem, key; cacheTable = gdCacheCreate (3, cacheTest, cacheFetch, cacheRelease); key = 20; elem = *(int *) gdCacheGet (cacheTable, &key); key = 30; elem = *(int *) gdCacheGet (cacheTable, &key); key = 40; elem = *(int *) gdCacheGet (cacheTable, &key); key = 50; elem = *(int *) gdCacheGet (cacheTable, &key); key = 30; elem = *(int *) gdCacheGet (cacheTable, &key); key = 30; elem = *(int *) gdCacheGet (cacheTable, &key); gdCacheDelete (cacheTable); return 0; } #endif /* TEST */ #endif /* HAVE_LIBTTF */ libwmf-0.2.8.4/src/extra/gd/gdkanji.c0000644000077100007710000003011507301470216016562 0ustar fjffjf00000000000000 /* gdkanji.c (Kanji code converter) */ /* written by Masahito Yamaga (ma@yama-ga.com) */ #include #include #include #include "gd.h" #include "gdhelpers.h" #include #if defined(HAVE_ICONV_H) || defined(HAVE_ICONV) #include #ifdef HAVE_ERRNO_H #include #endif #endif #if defined(HAVE_ICONV_H) && !defined(HAVE_ICONV) #define HAVE_ICONV 1 #endif #define LIBNAME "any2eucjp()" #if defined(__MSC__) || defined(__BORLANDC__) || defined(__TURBOC__) || defined(_Windows) || defined(MSDOS) #ifndef SJISPRE #define SJISPRE 1 #endif #endif #ifdef TRUE #undef TRUE #endif #ifdef FALSE #undef FALSE #endif #define TRUE 1 #define FALSE 0 #define NEW 1 #define OLD 2 #define ESCI 3 #define NEC 4 #define EUC 5 #define SJIS 6 #define EUCORSJIS 7 #define ASCII 8 #define NEWJISSTR "JIS7" #define OLDJISSTR "jis" #define EUCSTR "eucJP" #define SJISSTR "SJIS" #define ESC 27 #define SS2 142 static void debug (const char *format,...) { #ifdef DEBUG va_list args; va_start (args, format); fprintf (stdout, "%s: ", LIBNAME); vfprintf (stdout, format, args); fprintf (stdout, "\n"); va_end (args); #endif } static void error (const char *format,...) { va_list args; va_start (args, format); fprintf (stderr, "%s: ", LIBNAME); vfprintf (stderr, format, args); fprintf (stderr, "\n"); va_end (args); } /* DetectKanjiCode() derived from DetectCodeType() by Ken Lunde. */ static int DetectKanjiCode (unsigned char *str) { static int whatcode = ASCII; int oldcode = ASCII; int c, i; char *lang = NULL; c = '\1'; i = 0; if (whatcode != EUCORSJIS && whatcode != ASCII) { oldcode = whatcode; whatcode = ASCII; } while ((whatcode == EUCORSJIS || whatcode == ASCII) && c != '\0') { if ((c = str[i++]) != '\0') { if (c == ESC) { c = str[i++]; if (c == '$') { c = str[i++]; if (c == 'B') whatcode = NEW; else if (c == '@') whatcode = OLD; } else if (c == '(') { c = str[i++]; if (c == 'I') whatcode = ESCI; } else if (c == 'K') whatcode = NEC; } else if ((c >= 129 && c <= 141) || (c >= 143 && c <= 159)) whatcode = SJIS; else if (c == SS2) { c = str[i++]; if ((c >= 64 && c <= 126) || (c >= 128 && c <= 160) || (c >= 224 && c <= 252)) whatcode = SJIS; else if (c >= 161 && c <= 223) whatcode = EUCORSJIS; } else if (c >= 161 && c <= 223) { c = str[i++]; if (c >= 240 && c <= 254) whatcode = EUC; else if (c >= 161 && c <= 223) whatcode = EUCORSJIS; else if (c >= 224 && c <= 239) { whatcode = EUCORSJIS; while (c >= 64 && c != '\0' && whatcode == EUCORSJIS) { if (c >= 129) { if (c <= 141 || (c >= 143 && c <= 159)) whatcode = SJIS; else if (c >= 253 && c <= 254) whatcode = EUC; } c = str[i++]; } } else if (c <= 159) whatcode = SJIS; } else if (c >= 240 && c <= 254) whatcode = EUC; else if (c >= 224 && c <= 239) { c = str[i++]; if ((c >= 64 && c <= 126) || (c >= 128 && c <= 160)) whatcode = SJIS; else if (c >= 253 && c <= 254) whatcode = EUC; else if (c >= 161 && c <= 252) whatcode = EUCORSJIS; } } } #ifdef DEBUG if (whatcode == ASCII) debug ("Kanji code not included."); else if (whatcode == EUCORSJIS) debug ("Kanji code not detected."); else debug ("Kanji code detected at %d byte.", i); #endif if (whatcode == EUCORSJIS && oldcode != ASCII) whatcode = oldcode; if (whatcode == EUCORSJIS) { if (getenv ("LC_ALL")) lang = getenv ("LC_ALL"); else if (getenv ("LC_CTYPE")) lang = getenv ("LC_CTYPE"); else if (getenv ("LANG")) lang = getenv ("LANG"); if (lang) { if (strcmp (lang, "ja_JP.SJIS") == 0 || #ifdef hpux strcmp (lang, "japanese") == 0 || #endif strcmp (lang, "ja_JP.mscode") == 0 || strcmp (lang, "ja_JP.PCK") == 0) whatcode = SJIS; else if (strncmp (lang, "ja", 2) == 0) #ifdef SJISPRE whatcode = SJIS; #else whatcode = EUC; #endif } } if (whatcode == EUCORSJIS) #ifdef SJISPRE whatcode = SJIS; #else whatcode = EUC; #endif return whatcode; } /* SJIStoJIS() is sjis2jis() by Ken Lunde. */ static void SJIStoJIS (int *p1, int *p2) { register unsigned char c1 = *p1; register unsigned char c2 = *p2; register int adjust = c2 < 159; register int rowOffset = c1 < 160 ? 112 : 176; register int cellOffset = adjust ? (31 + (c2 > 127)) : 126; *p1 = ((c1 - rowOffset) << 1) - adjust; *p2 -= cellOffset; } /* han2zen() was derived from han2zen() written by Ken Lunde. */ #define IS_DAKU(c) ((c >= 182 && c <= 196) || (c >= 202 && c <= 206) || (c == 179)) #define IS_HANDAKU(c) (c >= 202 && c <= 206) static void han2zen (int *p1, int *p2) { int c = *p1; int daku = FALSE; int handaku = FALSE; int mtable[][2] = { {129, 66}, {129, 117}, {129, 118}, {129, 65}, {129, 69}, {131, 146}, {131, 64}, {131, 66}, {131, 68}, {131, 70}, {131, 72}, {131, 131}, {131, 133}, {131, 135}, {131, 98}, {129, 91}, {131, 65}, {131, 67}, {131, 69}, {131, 71}, {131, 73}, {131, 74}, {131, 76}, {131, 78}, {131, 80}, {131, 82}, {131, 84}, {131, 86}, {131, 88}, {131, 90}, {131, 92}, {131, 94}, {131, 96}, {131, 99}, {131, 101}, {131, 103}, {131, 105}, {131, 106}, {131, 107}, {131, 108}, {131, 109}, {131, 110}, {131, 113}, {131, 116}, {131, 119}, {131, 122}, {131, 125}, {131, 126}, {131, 128}, {131, 129}, {131, 130}, {131, 132}, {131, 134}, {131, 136}, {131, 137}, {131, 138}, {131, 139}, {131, 140}, {131, 141}, {131, 143}, {131, 147}, {129, 74}, {129, 75} }; if (*p2 == 222 && IS_DAKU (*p1)) daku = TRUE; /* Daku-ten */ else if (*p2 == 223 && IS_HANDAKU (*p1)) handaku = TRUE; /* Han-daku-ten */ *p1 = mtable[c - 161][0]; *p2 = mtable[c - 161][1]; if (daku) { if ((*p2 >= 74 && *p2 <= 103) || (*p2 >= 110 && *p2 <= 122)) (*p2)++; else if (*p2 == 131 && *p2 == 69) *p2 = 148; } else if (handaku && *p2 >= 110 && *p2 <= 122) (*p2) += 2; } /* Recast strcpy to handle unsigned chars used below. */ #define ustrcpy(A,B) (strcpy((char*)(A),(const char*)(B))) static void do_convert (unsigned char *to, unsigned char *from, const char *code) { #ifdef HAVE_ICONV iconv_t cd; size_t from_len, to_len; if ((cd = iconv_open (EUCSTR, code)) == (iconv_t) - 1) { error ("iconv_open() error"); #ifdef HAVE_ERRNO_H if (errno == EINVAL) error ("invalid code specification: \"%s\" or \"%s\"", EUCSTR, code); #endif strcpy ((char *) to, (const char *) from); return; } from_len = strlen ((const char *) from) + 1; to_len = BUFSIZ; if (iconv (cd, (const char **) &from, &from_len, (char **) &to, &to_len) == -1) { #ifdef HAVE_ERRNO_H if (errno == EINVAL) error ("invalid end of input string"); else if (errno == EILSEQ) error ("invalid code in input string"); else if (errno == E2BIG) error ("output buffer overflow at do_convert()"); else #endif error ("something happen"); strcpy ((char *) to, (const char *) from); return; } if (iconv_close (cd) != 0) { error ("iconv_close() error"); } #else int p1, p2, i, j; int jisx0208 = FALSE; int hankaku = FALSE; j = 0; if (strcmp (code, NEWJISSTR) == 0 || strcmp (code, OLDJISSTR) == 0) { for (i = 0; from[i] != '\0' && j < BUFSIZ; i++) { if (from[i] == ESC) { i++; if (from[i] == '$') { jisx0208 = TRUE; hankaku = FALSE; i++; } else if (from[i] == '(') { jisx0208 = FALSE; i++; if (from[i] == 'I') /* Hankaku Kana */ hankaku = TRUE; else hankaku = FALSE; } } else { if (jisx0208) to[j++] = from[i] + 128; else if (hankaku) { to[j++] = SS2; to[j++] = from[i] + 128; } else to[j++] = from[i]; } } } else if (strcmp (code, SJISSTR) == 0) { for (i = 0; from[i] != '\0' && j < BUFSIZ; i++) { p1 = from[i]; if (p1 < 127) to[j++] = p1; else if ((p1 >= 161) && (p1 <= 223)) { /* Hankaku Kana */ to[j++] = SS2; to[j++] = p1; } else { p2 = from[++i]; SJIStoJIS (&p1, &p2); to[j++] = p1 + 128; to[j++] = p2 + 128; } } } else { error ("invalid code specification: \"%s\"", code); return; } if (j >= BUFSIZ) { error ("output buffer overflow at do_convert()"); ustrcpy (to, from); } else to[j] = '\0'; #endif /* HAVE_ICONV */ } static int do_check_and_conv (unsigned char *to, unsigned char *from) { static unsigned char tmp[BUFSIZ]; int p1, p2, i, j; int kanji = TRUE; switch (DetectKanjiCode (from)) { case NEW: debug ("Kanji code is New JIS."); do_convert (tmp, from, NEWJISSTR); break; case OLD: debug ("Kanji code is Old JIS."); do_convert (tmp, from, OLDJISSTR); break; case ESCI: debug ("This string includes Hankaku-Kana (jisx0201) escape sequence [ESC] + ( + I."); do_convert (tmp, from, NEWJISSTR); break; case NEC: debug ("Kanji code is NEC Kanji."); error ("cannot convert NEC Kanji."); ustrcpy (tmp, from); kanji = FALSE; break; case EUC: debug ("Kanji code is EUC."); ustrcpy (tmp, from); break; case SJIS: debug ("Kanji code is SJIS."); do_convert (tmp, from, SJISSTR); break; case EUCORSJIS: debug ("Kanji code is EUC or SJIS."); ustrcpy (tmp, from); kanji = FALSE; break; case ASCII: debug ("This is ASCII string."); ustrcpy (tmp, from); kanji = FALSE; break; default: debug ("This string includes unknown code."); ustrcpy (tmp, from); kanji = FALSE; break; } /* Hankaku Kana ---> Zenkaku Kana */ if (kanji) { j = 0; for (i = 0; tmp[i] != '\0' && j < BUFSIZ; i++) { if (tmp[i] == SS2) { p1 = tmp[++i]; if (tmp[i + 1] == SS2) { p2 = tmp[i + 2]; if (p2 == 222 || p2 == 223) i += 2; else p2 = 0; } else p2 = 0; han2zen (&p1, &p2); SJIStoJIS (&p1, &p2); to[j++] = p1 + 128; to[j++] = p2 + 128; } else to[j++] = tmp[i]; } if (j >= BUFSIZ) { error ("output buffer overflow at Hankaku --> Zenkaku"); ustrcpy (to, tmp); } else to[j] = '\0'; } else ustrcpy (to, tmp); return kanji; } int any2eucjp (unsigned char *dest, unsigned char *src, unsigned int dest_max) { static unsigned char tmp_dest[BUFSIZ]; int ret; if (strlen ((const char *) src) >= BUFSIZ) { error ("input string too large"); return -1; } if (dest_max > BUFSIZ) { error ("invalid maximum size of destination\nit should be less than %d.", BUFSIZ); return -1; } ret = do_check_and_conv (tmp_dest, src); if (strlen ((const char *) tmp_dest) >= dest_max) { error ("output buffer overflow"); ustrcpy (dest, src); return -1; } ustrcpy (dest, tmp_dest); return ret; } #if 0 unsigned int strwidth (unsigned char *s) { unsigned char *t; unsigned int i; t = (unsigned char *) gdMalloc (BUFSIZ); any2eucjp (t, s, BUFSIZ); i = strlen (t); gdFree (t); return i; } #ifdef DEBUG int main () { unsigned char input[BUFSIZ]; unsigned char *output; unsigned char *str; int c, i = 0; while ((c = fgetc (stdin)) != '\n' && i < BUFSIZ) input[i++] = c; input[i] = '\0'; printf ("input : %d bytes\n", strlen ((const char *) input)); printf ("output: %d bytes\n", strwidth (input)); output = (unsigned char *) gdMalloc (BUFSIZ); any2eucjp (output, input, BUFSIZ); str = output; while (*str != '\0') putchar (*(str++)); putchar ('\n'); gdFree (output); return 0; } #endif #endif libwmf-0.2.8.4/src/extra/gd/wbmp.c0000644000077100007710000001467110271767772016151 0ustar fjffjf00000000000000 /* WBMP ** ---- ** WBMP Level 0: B/W, Uncompressed ** This implements the WBMP format as specified in WAPSpec 1.1 and 1.2. ** It does not support ExtHeaders as defined in the spec. The spec states ** that a WAP client does not need to implement ExtHeaders. ** ** (c) 2000 Johan Van den Brande */ #include #include #include #include #include "wbmp.h" #include "gd.h" #include "gdhelpers.h" #ifdef NOTDEF #define __TEST /* Compile with main function */ #define __DEBUG /* Extra verbose when with __TEST */ #define __WRITE /* readwbmp and writewbmp(stdout) */ #define __VIEW /* view the wbmp on stdout */ #endif /* getmbi ** ------ ** Get a multibyte integer from a generic getin function ** 'getin' can be getc, with in = NULL ** you can find getin as a function just above the main function ** This way you gain a lot of flexibilty about how this package ** reads a wbmp file. */ int getmbi (int (*getin) (void *in), void *in) { int i, mbi = 0; do { i = getin (in); if (i < 0) return (-1); mbi = (mbi << 7) | (i & 0x7f); } while (i & 0x80); return (mbi); } /* putmbi ** ------ ** Put a multibyte intgerer in some kind of output stream ** I work here with a function pointer, to make it as generic ** as possible. Look at this function as an iterator on the ** mbi integers it spits out. ** */ void putmbi (int i, void (*putout) (int c, void *out), void *out) { int cnt, l, accu; /* Get number of septets */ cnt = 0; accu = 0; while (accu != i) accu += i & 0x7f << 7 * cnt++; /* Produce the multibyte output */ for (l = cnt - 1; l > 0; l--) putout (0x80 | (i & 0x7f << 7 * l) >> 7 * l, out); putout (i & 0x7f, out); } /* skipheader ** ---------- ** Skips the ExtHeader. Not needed for the moment ** */ int skipheader (int (*getin) (void *in), void *in) { int i; do { i = getin (in); if (i < 0) return (-1); } while (i & 0x80); return (0); } /* create wbmp ** ----------- ** create an empty wbmp ** */ Wbmp * createwbmp (int width, int height, int color) { int i; Wbmp *wbmp; if ((wbmp = (Wbmp *) gdMalloc (sizeof (Wbmp))) == NULL) return (NULL); if ((wbmp->bitmap = (int *) gdMalloc (sizeof (int) * width * height)) == NULL) { gdFree (wbmp); return (NULL); } wbmp->width = width; wbmp->height = height; for (i = 0; i < width * height; wbmp->bitmap[i++] = color); return (wbmp); } /* readwbmp ** ------- ** Actually reads the WBMP format from an open file descriptor ** It goes along by returning a pointer to a WBMP struct. ** */ int readwbmp (int (*getin) (void *in), void *in, Wbmp ** return_wbmp) { int row, col, byte, pel, pos; Wbmp *wbmp; if ((wbmp = (Wbmp *) gdMalloc (sizeof (Wbmp))) == NULL) return (-1); wbmp->type = getin (in); if (wbmp->type != 0) { gdFree (wbmp); return (-1); } if (skipheader (getin, in)) return (-1); wbmp->width = getmbi (getin, in); if (wbmp->width == -1) { gdFree (wbmp); return (-1); } wbmp->height = getmbi (getin, in); if (wbmp->height == -1) { gdFree (wbmp); return (-1); } #ifdef __DEBUG printf ("W: %d, H: %d\n", wbmp->width, wbmp->height); #endif if ((wbmp->bitmap = (int *) gdMalloc (sizeof (int) * wbmp->width * wbmp->height)) == NULL) { gdFree (wbmp); return (-1); } #ifdef __DEBUG printf ("DATA CONSTRUCTED\n"); #endif pos = 0; for (row = 0; row < wbmp->height; row++) { for (col = 0; col < wbmp->width;) { byte = getin (in); for (pel = 7; pel >= 0; pel--) { if (col++ < wbmp->width) { if (byte & 1 << pel) { wbmp->bitmap[pos] = WBMP_WHITE; } else { wbmp->bitmap[pos] = WBMP_BLACK; } pos++; } } } } *return_wbmp = wbmp; return (0); } /* writewbmp ** --------- ** Write a wbmp to a file descriptor ** ** Why not just giving a filedescriptor to this function? ** Well, the incentive to write this function was the complete ** integration in gd library from www.boutell.com. They use ** their own io functions, so the passing of a function seemed to be ** a logic(?) decision ... ** */ int writewbmp (Wbmp * wbmp, void (*putout) (int c, void *out), void *out) { int row, col; int bitpos, octet; /* Generate the header */ putout (0, out); /* WBMP Type 0: B/W, Uncompressed bitmap */ putout (0, out); /* FixHeaderField */ /* Size of the image */ putmbi (wbmp->width, putout, out); /* width */ putmbi (wbmp->height, putout, out); /* height */ /* Image data */ for (row = 0; row < wbmp->height; row++) { bitpos = 8; octet = 0; for (col = 0; col < wbmp->width; col++) { octet |= ((wbmp->bitmap[row * wbmp->width + col] == 1) ? WBMP_WHITE : WBMP_BLACK) << --bitpos; if (bitpos == 0) { bitpos = 8; putout (octet, out); octet = 0; } } if (bitpos != 8) putout (octet, out); } return (0); } /* freewbmp ** -------- ** gdFrees up memory occupied by a WBMP structure ** */ void freewbmp (Wbmp * wbmp) { gdFree (wbmp->bitmap); gdFree (wbmp); } /* printwbmp ** --------- ** print a WBMP to stdout for visualisation ** */ void printwbmp (Wbmp * wbmp) { int row, col; for (row = 0; row < wbmp->height; row++) { for (col = 0; col < wbmp->width; col++) { if (wbmp->bitmap[wbmp->width * row + col] == WBMP_BLACK) { putchar ('#'); } else { putchar (' '); } } putchar ('\n'); } } #ifdef __TEST /* putout to file descriptor ** ------------------------- */ int putout (int c, void *out) { return (putc (c, (FILE *) out)); } /* getin from file descriptor ** -------------------------- */ int getin (void *in) { return (getc ((FILE *) in)); } /* Main function ** ------------- ** */ int main (int argc, char *argv[]) { FILE *wbmp_file; Wbmp *wbmp; wbmp_file = fopen (argv[1], "rb"); if (wbmp_file) { readwbmp (&getin, wbmp_file, &wbmp); #ifdef __VIEW #ifdef __DEBUG printf ("\nVIEWING IMAGE\n"); #endif printwbmp (wbmp); #endif #ifdef __WRITE #ifdef __DEBUG printf ("\nDUMPING WBMP to STDOUT\n"); #endif writewbmp (wbmp, &putout, stdout); #endif freewbmp (wbmp); fclose (wbmp_file); } } #endif libwmf-0.2.8.4/src/extra/gd/gd_wbmp.c0000644000077100007710000001217007301470216016573 0ustar fjffjf00000000000000 /* WBMP: Wireless Bitmap Type 0: B/W, Uncompressed Bitmap Specification of the WBMP format can be found in the file: SPEC-WAESpec-19990524.pdf You can download the WAP specification on: http://www.wapforum.com/ gd_wbmp.c Copyright (C) Johan Van den Brande (johan@vandenbrande.com) Fixed: gdImageWBMPPtr, gdImageWBMP Recoded: gdImageWBMPCtx for use with my wbmp library (wbmp library included, but you can find the latest distribution at http://www.vandenbrande.com/wbmp) Implemented: gdImageCreateFromWBMPCtx, gdImageCreateFromWBMP --------------------------------------------------------------------------- Parts of this code are from Maurice Smurlo. ** Copyright (C) Maurice Szmurlo --- T-SIT --- January 2000 ** (Maurice.Szmurlo@info.unicaen.fr) ** Permission to use, copy, modify, and distribute this software and its ** documentation for any purpose and without fee is hereby granted, provided ** that the above copyright notice appear in all copies and that both that ** copyright notice and this permission notice appear in supporting ** documentation. This software is provided "as is" without express or ** implied warranty. --------------------------------------------------------------------------- Parts od this code are inspired by 'pbmtowbmp.c' and 'wbmptopbm.c' by Terje Sannum . ** ** Permission to use, copy, modify, and distribute this software and its ** documentation for any purpose and without fee is hereby granted, provided ** that the above copyright notice appear in all copies and that both that ** copyright notice and this permission notice appear in supporting ** documentation. This software is provided "as is" without express or ** implied warranty. ** --------------------------------------------------------------------------- Todo: gdCreateFromWBMP function for reading WBMP files ---------------------------------------------------------------------------- */ #include #include #include #include #include #include "wbmp.h" /* gd_putout ** --------- ** Wrapper around gdPutC for use with writewbmp ** */ void gd_putout (int i, void *out) { gdPutC (i, (gdIOCtx *) out); } /* gd_getin ** -------- ** Wrapper around gdGetC for use with readwbmp ** */ int gd_getin (void *in) { return (gdGetC ((gdIOCtx *) in)); } /* gdImageWBMPCtx ** -------------- ** Write the image as a wbmp file ** Parameters are: ** image: gd image structure; ** fg: the index of the foreground color. any other value will be ** considered as background and will not be written ** out: the stream where to write */ void gdImageWBMPCtx (gdImagePtr image, int fg, gdIOCtx * out) { int x, y, pos; Wbmp *wbmp; /* create the WBMP */ if ((wbmp = createwbmp (gdImageSX (image), gdImageSY (image), WBMP_WHITE)) == NULL) fprintf (stderr, "Could not create WBMP\n"); /* fill up the WBMP structure */ pos = 0; for (y = 0; y < gdImageSY (image); y++) { for (x = 0; x < gdImageSX (image); x++) { if (gdImageGetPixel (image, x, y) == fg) { wbmp->bitmap[pos] = WBMP_BLACK; } pos++; } } /* write the WBMP to a gd file descriptor */ if (writewbmp (wbmp, &gd_putout, out)) fprintf (stderr, "Could not save WBMP\n"); /* des submitted this bugfix: gdFree the memory. */ freewbmp (wbmp); } /* gdImageCreateFromWBMPCtx ** ------------------------ ** Create a gdImage from a WBMP file input from an gdIOCtx */ gdImagePtr gdImageCreateFromWBMPCtx (gdIOCtx * infile) { /* FILE *wbmp_file; */ Wbmp *wbmp; gdImagePtr im = NULL; int black, white; int col, row, pos; if (readwbmp (&gd_getin, infile, &wbmp)) return (NULL); if (!(im = gdImageCreate (wbmp->width, wbmp->height))) { freewbmp (wbmp); return (NULL); } /* create the background color */ white = gdImageColorAllocate (im, 255, 255, 255); /* create foreground color */ black = gdImageColorAllocate (im, 0, 0, 0); /* fill in image (in a wbmp 1 = white/ 0 = black) */ pos = 0; for (row = 0; row < wbmp->height; row++) { for (col = 0; col < wbmp->width; col++) { if (wbmp->bitmap[pos++] == WBMP_WHITE) { gdImageSetPixel (im, col, row, white); } else { gdImageSetPixel (im, col, row, black); } } } freewbmp (wbmp); return (im); } /* gdImageCreateFromWBMP ** --------------------- */ gdImagePtr gdImageCreateFromWBMP (FILE * inFile) { gdImagePtr im; gdIOCtx *in = gdNewFileCtx (inFile); im = gdImageCreateFromWBMPCtx (in); in->free (in); return (im); } /* gdImageWBMP ** ----------- */ void gdImageWBMP (gdImagePtr im, int fg, FILE * outFile) { gdIOCtx *out = gdNewFileCtx (outFile); gdImageWBMPCtx (im, fg, out); out->free (out); } /* gdImageWBMPPtr ** -------------- */ void * gdImageWBMPPtr (gdImagePtr im, int *size, int fg) { void *rv; gdIOCtx *out = gdNewDynamicCtx (2048, NULL); gdImageWBMPCtx (im, fg, out); rv = gdDPExtractData (out, size); out->free (out); return rv; } libwmf-0.2.8.4/src/extra/gd/gdhelpers.c0000644000077100007710000000263110271767771017151 0ustar fjffjf00000000000000#include "gd.h" #include "gdhelpers.h" #include #include /* TBB: gd_strtok_r is not portable; provide an implementation */ #define SEP_TEST (separators[*((unsigned char *) s)]) char * gd_strtok_r (char *s, char *sep, char **state) { char separators[256]; char *start; char *result = 0; memset (separators, 0, sizeof (separators)); while (*sep) { separators[*((unsigned char *) sep)] = 1; sep++; } if (!s) { /* Pick up where we left off */ s = *state; } start = s; /* 1. EOS */ if (!(*s)) { *state = s; return 0; } /* 2. Leading separators, if any */ if (SEP_TEST) { do { s++; } while (SEP_TEST); /* 2a. EOS after separators only */ if (!(*s)) { *state = s; return 0; } } /* 3. A token */ result = s; do { /* 3a. Token at end of string */ if (!(*s)) { *state = s; return result; } s++; } while (!SEP_TEST); /* 4. Terminate token and skip trailing separators */ *s = '\0'; do { s++; } while (SEP_TEST); /* 5. Return token */ *state = s; return result; } void * gdCalloc (size_t nmemb, size_t size) { return calloc (nmemb, size); } void * gdMalloc (size_t size) { return malloc (size); } void * gdRealloc (void *ptr, size_t size) { return realloc (ptr, size); } void gdFree (void *ptr) { free (ptr); } libwmf-0.2.8.4/src/extra/gd/gd_topal.c0000644000077100007710000015107310271767772016773 0ustar fjffjf00000000000000 /* * gd_topal.c * * This code is adapted pretty much entirely from jquant2.c, * Copyright (C) 1991-1996, Thomas G. Lane. That file is * part of the Independent JPEG Group's software. Conditions of * use are compatible with the gd license. See the gd license * statement and README-JPEG.TXT for additional information. * * This file contains 2-pass color quantization (color mapping) routines. * These routines provide selection of a custom color map for an image, * followed by mapping of the image to that color map, with optional * Floyd-Steinberg dithering. * * It is also possible to use just the second pass to map to an arbitrary * externally-given color map. * * Note: ordered dithering is not supported, since there isn't any fast * way to compute intercolor distances; it's unclear that ordered dither's * fundamental assumptions even hold with an irregularly spaced color map. * * SUPPORT FOR ALPHA CHANNELS WAS HACKED IN BY THOMAS BOUTELL, who also * adapted the code to work within gd rather than within libjpeg, and * may not have done a great job of either. It's not Thomas G. Lane's fault. */ #include "gd.h" #include "gdhelpers.h" #include /* * This module implements the well-known Heckbert paradigm for color * quantization. Most of the ideas used here can be traced back to * Heckbert's seminal paper * Heckbert, Paul. "Color Image Quantization for Frame Buffer Display", * Proc. SIGGRAPH '82, Computer Graphics v.16 #3 (July 1982), pp 297-304. * * In the first pass over the image, we accumulate a histogram showing the * usage count of each possible color. To keep the histogram to a reasonable * size, we reduce the precision of the input; typical practice is to retain * 5 or 6 bits per color, so that 8 or 4 different input values are counted * in the same histogram cell. * * Next, the color-selection step begins with a box representing the whole * color space, and repeatedly splits the "largest" remaining box until we * have as many boxes as desired colors. Then the mean color in each * remaining box becomes one of the possible output colors. * * The second pass over the image maps each input pixel to the closest output * color (optionally after applying a Floyd-Steinberg dithering correction). * This mapping is logically trivial, but making it go fast enough requires * considerable care. * * Heckbert-style quantizers vary a good deal in their policies for choosing * the "largest" box and deciding where to cut it. The particular policies * used here have proved out well in experimental comparisons, but better ones * may yet be found. * * In earlier versions of the IJG code, this module quantized in YCbCr color * space, processing the raw upsampled data without a color conversion step. * This allowed the color conversion math to be done only once per colormap * entry, not once per pixel. However, that optimization precluded other * useful optimizations (such as merging color conversion with upsampling) * and it also interfered with desired capabilities such as quantizing to an * externally-supplied colormap. We have therefore abandoned that approach. * The present code works in the post-conversion color space, typically RGB. * * To improve the visual quality of the results, we actually work in scaled * RGBA space, giving G distances more weight than R, and R in turn more than * B. Alpha is weighted least. To do everything in integer math, we must * use integer scale factors. The 2/3/1 scale factors used here correspond * loosely to the relative weights of the colors in the NTSC grayscale * equation. */ #ifndef TRUE #define TRUE 1 #endif /* TRUE */ #ifndef FALSE #define FALSE 0 #endif /* FALSE */ #define R_SCALE 2 /* scale R distances by this much */ #define G_SCALE 3 /* scale G distances by this much */ #define B_SCALE 1 /* and B by this much */ #define A_SCALE 4 /* and alpha by this much. This really only scales by 1 because alpha values are 7-bit to begin with. */ /* Channel ordering (fixed in gd) */ #define C0_SCALE R_SCALE #define C1_SCALE G_SCALE #define C2_SCALE B_SCALE #define C3_SCALE A_SCALE /* * First we have the histogram data structure and routines for creating it. * * The number of bits of precision can be adjusted by changing these symbols. * We recommend keeping 6 bits for G and 5 each for R and B. * If you have plenty of memory and cycles, 6 bits all around gives marginally * better results; if you are short of memory, 5 bits all around will save * some space but degrade the results. * To maintain a fully accurate histogram, we'd need to allocate a "long" * (preferably unsigned long) for each cell. In practice this is overkill; * we can get by with 16 bits per cell. Few of the cell counts will overflow, * and clamping those that do overflow to the maximum value will give close- * enough results. This reduces the recommended histogram size from 256Kb * to 128Kb, which is a useful savings on PC-class machines. * (In the second pass the histogram space is re-used for pixel mapping data; * in that capacity, each cell must be able to store zero to the number of * desired colors. 16 bits/cell is plenty for that too.) * Since the JPEG code is intended to run in small memory model on 80x86 * machines, we can't just allocate the histogram in one chunk. Instead * of a true 3-D array, we use a row of pointers to 2-D arrays. Each * pointer corresponds to a C0 value (typically 2^5 = 32 pointers) and * each 2-D array has 2^6*2^5 = 2048 or 2^6*2^6 = 4096 entries. Note that * on 80x86 machines, the pointer row is in near memory but the actual * arrays are in far memory (same arrangement as we use for image arrays). */ #define MAXNUMCOLORS (gdMaxColors) /* maximum size of colormap */ #define HIST_C0_BITS 5 /* bits of precision in R histogram */ #define HIST_C1_BITS 6 /* bits of precision in G histogram */ #define HIST_C2_BITS 5 /* bits of precision in B histogram */ #define HIST_C3_BITS 3 /* bits of precision in A histogram */ /* Number of elements along histogram axes. */ #define HIST_C0_ELEMS (1<histogram; int row; int col; int *ptr; int width = im->sx; for (row = 0; row < im->sy; row++) { ptr = im->tpixels[row]; for (col = width; col > 0; col--) { /* get pixel value and index into the histogram */ int r, g, b, a; r = gdTrueColorGetRed (*ptr) >> C0_SHIFT; g = gdTrueColorGetGreen (*ptr) >> C1_SHIFT; b = gdTrueColorGetBlue (*ptr) >> C2_SHIFT; a = gdTrueColorGetAlpha (*ptr); /* We must have 100% opacity and transparency available in the color map to do an acceptable job with alpha channel, if opacity and transparency are present in the original, because of the visual properties of large flat-color border areas (requiring 100% transparency) and the behavior of poorly implemented browsers (requiring 100% opacity). Test for the presence of these here, and rescale the most opaque and transparent palette entries at the end if so. This avoids the need to develop a fuller understanding I have not been able to reach so far in my study of this subject. TBB */ if (a == gdAlphaTransparent) { cquantize->transparentIsPresent = 1; } if (a == gdAlphaOpaque) { cquantize->opaqueIsPresent = 1; } a >>= C3_SHIFT; histp = &histogram[r][g][b][a]; /* increment, check for overflow and undo increment if so. */ if (++(*histp) <= 0) (*histp)--; ptr++; } } } /* * Next we have the really interesting routines: selection of a colormap * given the completed histogram. * These routines work with a list of "boxes", each representing a rectangular * subset of the input color space (to histogram precision). */ typedef struct { /* The bounds of the box (inclusive); expressed as histogram indexes */ int c0min, c0max; int c1min, c1max; int c2min, c2max; int c3min, c3max; /* The volume (actually 2-norm) of the box */ int volume; /* The number of nonzero histogram cells within this box */ long colorcount; } box; typedef box *boxptr; static boxptr find_biggest_color_pop (boxptr boxlist, int numboxes) /* Find the splittable box with the largest color population */ /* Returns NULL if no splittable boxes remain */ { register boxptr boxp; register int i; register long maxc = 0; boxptr which = NULL; for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) { if (boxp->colorcount > maxc && boxp->volume > 0) { which = boxp; maxc = boxp->colorcount; } } return which; } static boxptr find_biggest_volume (boxptr boxlist, int numboxes) /* Find the splittable box with the largest (scaled) volume */ /* Returns NULL if no splittable boxes remain */ { register boxptr boxp; register int i; register int maxv = 0; boxptr which = NULL; for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) { if (boxp->volume > maxv) { which = boxp; maxv = boxp->volume; } } return which; } static void update_box (gdImagePtr im, my_cquantize_ptr cquantize, boxptr boxp) /* Shrink the min/max bounds of a box to enclose only nonzero elements, */ /* and recompute its volume and population */ { hist4d histogram = cquantize->histogram; histptr histp; int c0, c1, c2, c3; int c0min, c0max, c1min, c1max, c2min, c2max, c3min, c3max; int dist0, dist1, dist2, dist3; long ccount; c0min = boxp->c0min; c0max = boxp->c0max; c1min = boxp->c1min; c1max = boxp->c1max; c2min = boxp->c2min; c2max = boxp->c2max; c3min = boxp->c3min; c3max = boxp->c3max; if (c0max > c0min) { for (c0 = c0min; c0 <= c0max; c0++) { for (c1 = c1min; c1 <= c1max; c1++) { for (c2 = c2min; c2 <= c2max; c2++) { histp = &histogram[c0][c1][c2][c3min]; for (c3 = c3min; c3 <= c3max; c3++) { if (*histp++ != 0) { boxp->c0min = c0min = c0; goto have_c0min; } } } } } } have_c0min: if (c0max > c0min) { for (c0 = c0max; c0 >= c0min; c0--) { for (c1 = c1min; c1 <= c1max; c1++) { for (c2 = c2min; c2 <= c2max; c2++) { histp = &histogram[c0][c1][c2][c3min]; for (c3 = c3min; c3 <= c3max; c3++) { if (*histp++ != 0) { boxp->c0max = c0max = c0; goto have_c0max; } } } } } } have_c0max: if (c1max > c1min) for (c1 = c1min; c1 <= c1max; c1++) for (c0 = c0min; c0 <= c0max; c0++) { for (c2 = c2min; c2 <= c2max; c2++) { histp = &histogram[c0][c1][c2][c3min]; for (c3 = c3min; c3 <= c3max; c3++) if (*histp++ != 0) { boxp->c1min = c1min = c1; goto have_c1min; } } } have_c1min: if (c1max > c1min) for (c1 = c1max; c1 >= c1min; c1--) for (c0 = c0min; c0 <= c0max; c0++) { for (c2 = c2min; c2 <= c2max; c2++) { histp = &histogram[c0][c1][c2][c3min]; for (c3 = c3min; c3 <= c3max; c3++) if (*histp++ != 0) { boxp->c1max = c1max = c1; goto have_c1max; } } } have_c1max: /* The original version hand-rolled the array lookup a little, but with four dimensions, I don't even want to think about it. TBB */ if (c2max > c2min) for (c2 = c2min; c2 <= c2max; c2++) for (c0 = c0min; c0 <= c0max; c0++) for (c1 = c1min; c1 <= c1max; c1++) for (c3 = c3min; c3 <= c3max; c3++) if (histogram[c0][c1][c2][c3] != 0) { boxp->c2min = c2min = c2; goto have_c2min; } have_c2min: if (c2max > c2min) for (c2 = c2max; c2 >= c2min; c2--) for (c0 = c0min; c0 <= c0max; c0++) for (c1 = c1min; c1 <= c1max; c1++) for (c3 = c3min; c3 <= c3max; c3++) if (histogram[c0][c1][c2][c3] != 0) { boxp->c2max = c2max = c2; goto have_c2max; } have_c2max: if (c3max > c3min) for (c3 = c3min; c3 <= c3max; c3++) for (c0 = c0min; c0 <= c0max; c0++) for (c1 = c1min; c1 <= c1max; c1++) for (c2 = c2min; c2 <= c2max; c2++) if (histogram[c0][c1][c2][c3] != 0) { boxp->c3min = c3min = c3; goto have_c3min; } have_c3min: if (c3max > c3min) for (c3 = c3max; c3 >= c3min; c3--) for (c0 = c0min; c0 <= c0max; c0++) for (c1 = c1min; c1 <= c1max; c1++) for (c2 = c2min; c2 <= c2max; c2++) if (histogram[c0][c1][c2][c3] != 0) { boxp->c3max = c3max = c3; goto have_c3max; } have_c3max: /* Update box volume. * We use 2-norm rather than real volume here; this biases the method * against making long narrow boxes, and it has the side benefit that * a box is splittable iff norm > 0. * Since the differences are expressed in histogram-cell units, * we have to shift back to 8-bit units to get consistent distances; * after which, we scale according to the selected distance scale factors. * TBB: alpha shifts back to 7 bit units. That was accounted for in the * alpha scale factor. */ dist0 = ((c0max - c0min) << C0_SHIFT) * C0_SCALE; dist1 = ((c1max - c1min) << C1_SHIFT) * C1_SCALE; dist2 = ((c2max - c2min) << C2_SHIFT) * C2_SCALE; dist3 = ((c3max - c3min) << C3_SHIFT) * C3_SCALE; boxp->volume = dist0 * dist0 + dist1 * dist1 + dist2 * dist2 + dist3 * dist3; /* Now scan remaining volume of box and compute population */ ccount = 0; for (c0 = c0min; c0 <= c0max; c0++) for (c1 = c1min; c1 <= c1max; c1++) for (c2 = c2min; c2 <= c2max; c2++) { histp = &histogram[c0][c1][c2][c3min]; for (c3 = c3min; c3 <= c3max; c3++, histp++) if (*histp != 0) { ccount++; } } boxp->colorcount = ccount; } static int median_cut (gdImagePtr im, my_cquantize_ptr cquantize, boxptr boxlist, int numboxes, int desired_colors) /* Repeatedly select and split the largest box until we have enough boxes */ { int n, lb; int c0, c1, c2, c3, cmax; register boxptr b1, b2; while (numboxes < desired_colors) { /* Select box to split. * Current algorithm: by population for first half, then by volume. */ if (numboxes * 2 <= desired_colors) { b1 = find_biggest_color_pop (boxlist, numboxes); } else { b1 = find_biggest_volume (boxlist, numboxes); } if (b1 == NULL) /* no splittable boxes left! */ break; b2 = &boxlist[numboxes]; /* where new box will go */ /* Copy the color bounds to the new box. */ b2->c0max = b1->c0max; b2->c1max = b1->c1max; b2->c2max = b1->c2max; b2->c3max = b1->c3max; b2->c0min = b1->c0min; b2->c1min = b1->c1min; b2->c2min = b1->c2min; b2->c3min = b1->c3min; /* Choose which axis to split the box on. * Current algorithm: longest scaled axis. * See notes in update_box about scaling distances. */ c0 = ((b1->c0max - b1->c0min) << C0_SHIFT) * C0_SCALE; c1 = ((b1->c1max - b1->c1min) << C1_SHIFT) * C1_SCALE; c2 = ((b1->c2max - b1->c2min) << C2_SHIFT) * C2_SCALE; c3 = ((b1->c3max - b1->c3min) << C3_SHIFT) * C3_SCALE; /* We want to break any ties in favor of green, then red, then blue, with alpha last. */ cmax = c1; n = 1; if (c0 > cmax) { cmax = c0; n = 0; } if (c2 > cmax) { cmax = c2; n = 2; } if (c3 > cmax) { n = 3; } /* Choose split point along selected axis, and update box bounds. * Current algorithm: split at halfway point. * (Since the box has been shrunk to minimum volume, * any split will produce two nonempty subboxes.) * Note that lb value is max for lower box, so must be < old max. */ switch (n) { case 0: lb = (b1->c0max + b1->c0min) / 2; b1->c0max = lb; b2->c0min = lb + 1; break; case 1: lb = (b1->c1max + b1->c1min) / 2; b1->c1max = lb; b2->c1min = lb + 1; break; case 2: lb = (b1->c2max + b1->c2min) / 2; b1->c2max = lb; b2->c2min = lb + 1; break; case 3: lb = (b1->c3max + b1->c3min) / 2; b1->c3max = lb; b2->c3min = lb + 1; break; } /* Update stats for boxes */ update_box (im, cquantize, b1); update_box (im, cquantize, b2); numboxes++; } return numboxes; } static void compute_color (gdImagePtr im, my_cquantize_ptr cquantize, boxptr boxp, int icolor) /* Compute representative color for a box, put it in palette index icolor */ { /* Current algorithm: mean weighted by pixels (not colors) */ /* Note it is important to get the rounding correct! */ hist4d histogram = cquantize->histogram; histptr histp; int c0, c1, c2, c3; int c0min, c0max, c1min, c1max, c2min, c2max, c3min, c3max; long count; long total = 0; long c0total = 0; long c1total = 0; long c2total = 0; long c3total = 0; c0min = boxp->c0min; c0max = boxp->c0max; c1min = boxp->c1min; c1max = boxp->c1max; c2min = boxp->c2min; c2max = boxp->c2max; c3min = boxp->c3min; c3max = boxp->c3max; for (c0 = c0min; c0 <= c0max; c0++) { for (c1 = c1min; c1 <= c1max; c1++) { for (c2 = c2min; c2 <= c2max; c2++) { histp = &histogram[c0][c1][c2][c3min]; for (c3 = c3min; c3 <= c3max; c3++) { if ((count = *histp++) != 0) { total += count; c0total += ((c0 << C0_SHIFT) + ((1 << C0_SHIFT) >> 1)) * count; c1total += ((c1 << C1_SHIFT) + ((1 << C1_SHIFT) >> 1)) * count; c2total += ((c2 << C2_SHIFT) + ((1 << C2_SHIFT) >> 1)) * count; c3total += ((c3 << C3_SHIFT) + ((1 << C3_SHIFT) >> 1)) * count; } } } } } im->red[icolor] = (int) ((c0total + (total >> 1)) / total); im->green[icolor] = (int) ((c1total + (total >> 1)) / total); im->blue[icolor] = (int) ((c2total + (total >> 1)) / total); im->alpha[icolor] = (int) ((c3total + (total >> 1)) / total); im->open[icolor] = 0; if (im->colorsTotal <= icolor) { im->colorsTotal = icolor + 1; } } static void select_colors (gdImagePtr im, my_cquantize_ptr cquantize, int desired_colors) /* Master routine for color selection */ { boxptr boxlist; int numboxes; int i; /* Allocate workspace for box list */ boxlist = (boxptr) gdMalloc (desired_colors * sizeof (box)); /* Initialize one box containing whole space */ numboxes = 1; /* Note maxval for alpha is different */ boxlist[0].c0min = 0; boxlist[0].c0max = 255 >> C0_SHIFT; boxlist[0].c1min = 0; boxlist[0].c1max = 255 >> C1_SHIFT; boxlist[0].c2min = 0; boxlist[0].c2max = 255 >> C2_SHIFT; boxlist[0].c3min = 0; boxlist[0].c3max = gdAlphaMax >> C3_SHIFT; /* Shrink it to actually-used volume and set its statistics */ update_box (im, cquantize, &boxlist[0]); /* Perform median-cut to produce final box list */ numboxes = median_cut (im, cquantize, boxlist, numboxes, desired_colors); /* Compute the representative color for each box, fill colormap */ for (i = 0; i < numboxes; i++) compute_color (im, cquantize, &boxlist[i], i); /* TBB: if the image contains colors at both scaled ends of the alpha range, rescale slightly to make sure alpha covers the full spectrum from 100% transparent to 100% opaque. Even a faint distinct background color is generally considered failure with regard to alpha. */ im->colorsTotal = numboxes; gdFree (boxlist); } /* * These routines are concerned with the time-critical task of mapping input * colors to the nearest color in the selected colormap. * * We re-use the histogram space as an "inverse color map", essentially a * cache for the results of nearest-color searches. All colors within a * histogram cell will be mapped to the same colormap entry, namely the one * closest to the cell's center. This may not be quite the closest entry to * the actual input color, but it's almost as good. A zero in the cache * indicates we haven't found the nearest color for that cell yet; the array * is cleared to zeroes before starting the mapping pass. When we find the * nearest color for a cell, its colormap index plus one is recorded in the * cache for future use. The pass2 scanning routines call fill_inverse_cmap * when they need to use an unfilled entry in the cache. * * Our method of efficiently finding nearest colors is based on the "locally * sorted search" idea described by Heckbert and on the incremental distance * calculation described by Spencer W. Thomas in chapter III.1 of Graphics * Gems II (James Arvo, ed. Academic Press, 1991). Thomas points out that * the distances from a given colormap entry to each cell of the histogram can * be computed quickly using an incremental method: the differences between * distances to adjacent cells themselves differ by a constant. This allows a * fairly fast implementation of the "brute force" approach of computing the * distance from every colormap entry to every histogram cell. Unfortunately, * it needs a work array to hold the best-distance-so-far for each histogram * cell (because the inner loop has to be over cells, not colormap entries). * The work array elements have to be INT32s, so the work array would need * 256Kb at our recommended precision. This is not feasible in DOS machines. * * To get around these problems, we apply Thomas' method to compute the * nearest colors for only the cells within a small subbox of the histogram. * The work array need be only as big as the subbox, so the memory usage * problem is solved. Furthermore, we need not fill subboxes that are never * referenced in pass2; many images use only part of the color gamut, so a * fair amount of work is saved. An additional advantage of this * approach is that we can apply Heckbert's locality criterion to quickly * eliminate colormap entries that are far away from the subbox; typically * three-fourths of the colormap entries are rejected by Heckbert's criterion, * and we need not compute their distances to individual cells in the subbox. * The speed of this approach is heavily influenced by the subbox size: too * small means too much overhead, too big loses because Heckbert's criterion * can't eliminate as many colormap entries. Empirically the best subbox * size seems to be about 1/512th of the histogram (1/8th in each direction). * * Thomas' article also describes a refined method which is asymptotically * faster than the brute-force method, but it is also far more complex and * cannot efficiently be applied to small subboxes. It is therefore not * useful for programs intended to be portable to DOS machines. On machines * with plenty of memory, filling the whole histogram in one shot with Thomas' * refined method might be faster than the present code --- but then again, * it might not be any faster, and it's certainly more complicated. */ /* log2(histogram cells in update box) for each axis; this can be adjusted */ #define BOX_C0_LOG (HIST_C0_BITS-3) #define BOX_C1_LOG (HIST_C1_BITS-3) #define BOX_C2_LOG (HIST_C2_BITS-3) #define BOX_C3_LOG (HIST_C3_BITS-3) #define BOX_C0_ELEMS (1<colorsTotal; int maxc0, maxc1, maxc2, maxc3; int centerc0, centerc1, centerc2, centerc3; int i, x, ncolors; int minmaxdist, min_dist, max_dist, tdist; int mindist[MAXNUMCOLORS]; /* min distance to colormap entry i */ /* Compute true coordinates of update box's upper corner and center. * Actually we compute the coordinates of the center of the upper-corner * histogram cell, which are the upper bounds of the volume we care about. * Note that since ">>" rounds down, the "center" values may be closer to * min than to max; hence comparisons to them must be "<=", not "<". */ maxc0 = minc0 + ((1 << BOX_C0_SHIFT) - (1 << C0_SHIFT)); centerc0 = (minc0 + maxc0) >> 1; maxc1 = minc1 + ((1 << BOX_C1_SHIFT) - (1 << C1_SHIFT)); centerc1 = (minc1 + maxc1) >> 1; maxc2 = minc2 + ((1 << BOX_C2_SHIFT) - (1 << C2_SHIFT)); centerc2 = (minc2 + maxc2) >> 1; maxc3 = minc3 + ((1 << BOX_C3_SHIFT) - (1 << C3_SHIFT)); centerc3 = (minc3 + maxc3) >> 1; /* For each color in colormap, find: * 1. its minimum squared-distance to any point in the update box * (zero if color is within update box); * 2. its maximum squared-distance to any point in the update box. * Both of these can be found by considering only the corners of the box. * We save the minimum distance for each color in mindist[]; * only the smallest maximum distance is of interest. */ minmaxdist = 0x7FFFFFFFL; for (i = 0; i < numcolors; i++) { /* We compute the squared-c0-distance term, then add in the other three. */ x = im->red[i]; if (x < minc0) { tdist = (x - minc0) * C0_SCALE; min_dist = tdist * tdist; tdist = (x - maxc0) * C0_SCALE; max_dist = tdist * tdist; } else if (x > maxc0) { tdist = (x - maxc0) * C0_SCALE; min_dist = tdist * tdist; tdist = (x - minc0) * C0_SCALE; max_dist = tdist * tdist; } else { /* within cell range so no contribution to min_dist */ min_dist = 0; if (x <= centerc0) { tdist = (x - maxc0) * C0_SCALE; max_dist = tdist * tdist; } else { tdist = (x - minc0) * C0_SCALE; max_dist = tdist * tdist; } } x = im->green[i]; if (x < minc1) { tdist = (x - minc1) * C1_SCALE; min_dist += tdist * tdist; tdist = (x - maxc1) * C1_SCALE; max_dist += tdist * tdist; } else if (x > maxc1) { tdist = (x - maxc1) * C1_SCALE; min_dist += tdist * tdist; tdist = (x - minc1) * C1_SCALE; max_dist += tdist * tdist; } else { /* within cell range so no contribution to min_dist */ if (x <= centerc1) { tdist = (x - maxc1) * C1_SCALE; max_dist += tdist * tdist; } else { tdist = (x - minc1) * C1_SCALE; max_dist += tdist * tdist; } } x = im->blue[i]; if (x < minc2) { tdist = (x - minc2) * C2_SCALE; min_dist += tdist * tdist; tdist = (x - maxc2) * C2_SCALE; max_dist += tdist * tdist; } else if (x > maxc2) { tdist = (x - maxc2) * C2_SCALE; min_dist += tdist * tdist; tdist = (x - minc2) * C2_SCALE; max_dist += tdist * tdist; } else { /* within cell range so no contribution to min_dist */ if (x <= centerc2) { tdist = (x - maxc2) * C2_SCALE; max_dist += tdist * tdist; } else { tdist = (x - minc2) * C2_SCALE; max_dist += tdist * tdist; } } x = im->alpha[i]; if (x < minc3) { tdist = (x - minc3) * C3_SCALE; min_dist += tdist * tdist; tdist = (x - maxc3) * C3_SCALE; max_dist += tdist * tdist; } else if (x > maxc3) { tdist = (x - maxc3) * C3_SCALE; min_dist += tdist * tdist; tdist = (x - minc3) * C3_SCALE; max_dist += tdist * tdist; } else { /* within cell range so no contribution to min_dist */ if (x <= centerc3) { tdist = (x - maxc3) * C3_SCALE; max_dist += tdist * tdist; } else { tdist = (x - minc3) * C3_SCALE; max_dist += tdist * tdist; } } mindist[i] = min_dist; /* save away the results */ if (max_dist < minmaxdist) minmaxdist = max_dist; } /* Now we know that no cell in the update box is more than minmaxdist * away from some colormap entry. Therefore, only colors that are * within minmaxdist of some part of the box need be considered. */ ncolors = 0; for (i = 0; i < numcolors; i++) { if (mindist[i] <= minmaxdist) colorlist[ncolors++] = i; } return ncolors; } static void find_best_colors (gdImagePtr im, my_cquantize_ptr cquantize, int minc0, int minc1, int minc2, int minc3, int numcolors, int colorlist[], int bestcolor[]) /* Find the closest colormap entry for each cell in the update box, * given the list of candidate colors prepared by find_nearby_colors. * Return the indexes of the closest entries in the bestcolor[] array. * This routine uses Thomas' incremental distance calculation method to * find the distance from a colormap entry to successive cells in the box. */ { int ic0, ic1, ic2, ic3; int i, icolor; register int *bptr; /* pointer into bestdist[] array */ int *cptr; /* pointer into bestcolor[] array */ int dist0, dist1, dist2; /* initial distance values */ register int dist3 = 0; /* current distance in inner loop */ int xx0, xx1, xx2; /* distance increments */ register int xx3 = 0; int inc0, inc1, inc2, inc3; /* initial values for increments */ /* This array holds the distance to the nearest-so-far color for each cell */ int bestdist[BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS * BOX_C3_ELEMS]; /* Initialize best-distance for each cell of the update box */ bptr = bestdist; for (i = BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS * BOX_C3_ELEMS - 1; i >= 0; i--) *bptr++ = 0x7FFFFFFFL; /* For each color selected by find_nearby_colors, * compute its distance to the center of each cell in the box. * If that's less than best-so-far, update best distance and color number. */ /* Nominal steps between cell centers ("x" in Thomas article) */ #define STEP_C0 ((1 << C0_SHIFT) * C0_SCALE) #define STEP_C1 ((1 << C1_SHIFT) * C1_SCALE) #define STEP_C2 ((1 << C2_SHIFT) * C2_SCALE) #define STEP_C3 ((1 << C3_SHIFT) * C3_SCALE) for (i = 0; i < numcolors; i++) { icolor = colorlist[i]; /* Compute (square of) distance from minc0/c1/c2 to this color */ inc0 = (minc0 - (im->red[icolor])) * C0_SCALE; dist0 = inc0 * inc0; inc1 = (minc1 - (im->green[icolor])) * C1_SCALE; dist0 += inc1 * inc1; inc2 = (minc2 - (im->blue[icolor])) * C2_SCALE; dist0 += inc2 * inc2; inc3 = (minc3 - (im->alpha[icolor])) * C3_SCALE; dist0 += inc3 * inc3; /* Form the initial difference increments */ inc0 = inc0 * (2 * STEP_C0) + STEP_C0 * STEP_C0; inc1 = inc1 * (2 * STEP_C1) + STEP_C1 * STEP_C1; inc2 = inc2 * (2 * STEP_C2) + STEP_C2 * STEP_C2; inc3 = inc3 * (2 * STEP_C3) + STEP_C3 * STEP_C3; /* Now loop over all cells in box, updating distance per Thomas method */ bptr = bestdist; cptr = bestcolor; xx0 = inc0; for (ic0 = BOX_C0_ELEMS - 1; ic0 >= 0; ic0--) { dist1 = dist0; xx1 = inc1; for (ic1 = BOX_C1_ELEMS - 1; ic1 >= 0; ic1--) { dist2 = dist1; xx2 = inc2; for (ic2 = BOX_C2_ELEMS - 1; ic2 >= 0; ic2--) { for (ic3 = BOX_C3_ELEMS - 1; ic3 >= 0; ic3--) { if (dist3 < *bptr) { *bptr = dist3; *cptr = icolor; } dist3 += xx3; xx3 += 2 * STEP_C3 * STEP_C3; bptr++; cptr++; } dist2 += xx2; xx2 += 2 * STEP_C2 * STEP_C2; } dist1 += xx1; xx1 += 2 * STEP_C1 * STEP_C1; } dist0 += xx0; xx0 += 2 * STEP_C0 * STEP_C0; } } } static void fill_inverse_cmap (gdImagePtr im, my_cquantize_ptr cquantize, int c0, int c1, int c2, int c3) /* Fill the inverse-colormap entries in the update box that contains */ /* histogram cell c0/c1/c2/c3. (Only that one cell MUST be filled, but */ /* we can fill as many others as we wish.) */ { hist4d histogram = cquantize->histogram; int minc0, minc1, minc2, minc3; /* lower left corner of update box */ int ic0, ic1, ic2, ic3; register int *cptr; /* pointer into bestcolor[] array */ register histptr cachep; /* pointer into main cache array */ /* This array lists the candidate colormap indexes. */ int colorlist[MAXNUMCOLORS]; int numcolors; /* number of candidate colors */ /* This array holds the actually closest colormap index for each cell. */ int bestcolor[BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS * BOX_C3_ELEMS]; /* Convert cell coordinates to update box ID */ c0 >>= BOX_C0_LOG; c1 >>= BOX_C1_LOG; c2 >>= BOX_C2_LOG; c3 >>= BOX_C3_LOG; /* Compute true coordinates of update box's origin corner. * Actually we compute the coordinates of the center of the corner * histogram cell, which are the lower bounds of the volume we care about. */ minc0 = (c0 << BOX_C0_SHIFT) + ((1 << C0_SHIFT) >> 1); minc1 = (c1 << BOX_C1_SHIFT) + ((1 << C1_SHIFT) >> 1); minc2 = (c2 << BOX_C2_SHIFT) + ((1 << C2_SHIFT) >> 1); minc3 = (c3 << BOX_C3_SHIFT) + ((1 << C3_SHIFT) >> 1); /* Determine which colormap entries are close enough to be candidates * for the nearest entry to some cell in the update box. */ numcolors = find_nearby_colors (im, cquantize, minc0, minc1, minc2, minc3, colorlist); /* Determine the actually nearest colors. */ find_best_colors (im, cquantize, minc0, minc1, minc2, minc3, numcolors, colorlist, bestcolor); /* Save the best color numbers (plus 1) in the main cache array */ c0 <<= BOX_C0_LOG; /* convert ID back to base cell indexes */ c1 <<= BOX_C1_LOG; c2 <<= BOX_C2_LOG; c3 <<= BOX_C3_LOG; cptr = bestcolor; for (ic0 = 0; ic0 < BOX_C0_ELEMS; ic0++) { for (ic1 = 0; ic1 < BOX_C1_ELEMS; ic1++) { for (ic2 = 0; ic2 < BOX_C2_ELEMS; ic2++) { cachep = &histogram[c0 + ic0][c1 + ic1][c2 + ic2][c3]; for (ic3 = 0; ic3 < BOX_C3_ELEMS; ic3++) { *cachep++ = (histcell) ((*cptr++) + 1); } } } } } /* * Map some rows of pixels to the output colormapped representation. */ void pass2_no_dither (gdImagePtr im, my_cquantize_ptr cquantize) /* This version performs no dithering */ { hist4d histogram = cquantize->histogram; register int *inptr; register unsigned char *outptr; register histptr cachep; register int c0, c1, c2, c3; int row; int col; int width = im->sx; int num_rows = im->sy; for (row = 0; row < num_rows; row++) { inptr = im->tpixels[row]; outptr = im->pixels[row]; for (col = 0; col < width; col++) { int r, g, b, a; /* get pixel value and index into the cache */ r = gdTrueColorGetRed (*inptr); g = gdTrueColorGetGreen (*inptr); b = gdTrueColorGetBlue (*inptr); a = gdTrueColorGetAlpha (*inptr++); c0 = r >> C0_SHIFT; c1 = g >> C1_SHIFT; c2 = b >> C2_SHIFT; c3 = a >> C3_SHIFT; cachep = &histogram[c0][c1][c2][c3]; /* If we have not seen this color before, find nearest colormap entry */ /* and update the cache */ if (*cachep == 0) { #if 0 /* TBB: quick and dirty approach for use when testing fill_inverse_cmap for errors */ int i; int best = -1; int mindist = 0x7FFFFFFF; for (i = 0; (i < im->colorsTotal); i++) { int rdist = (im->red[i] >> C0_SHIFT) - c0; int gdist = (im->green[i] >> C1_SHIFT) - c1; int bdist = (im->blue[i] >> C2_SHIFT) - c2; int adist = (im->alpha[i] >> C3_SHIFT) - c3; int dist = (rdist * rdist) * R_SCALE + (gdist * gdist) * G_SCALE + (bdist * bdist) * B_SCALE + (adist * adist) * A_SCALE; if (dist < mindist) { best = i; mindist = dist; } } *cachep = best + 1; #endif fill_inverse_cmap (im, cquantize, c0, c1, c2, c3); } /* Now emit the colormap index for this cell */ *outptr++ = (*cachep - 1); } } } /* We assume that right shift corresponds to signed division by 2 with * rounding towards minus infinity. This is correct for typical "arithmetic * shift" instructions that shift in copies of the sign bit. But some * C compilers implement >> with an unsigned shift. For these machines you * must define RIGHT_SHIFT_IS_UNSIGNED. * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity. * It is only applied with constant shift counts. SHIFT_TEMPS must be * included in the variables of any routine using RIGHT_SHIFT. */ #ifdef RIGHT_SHIFT_IS_UNSIGNED #define SHIFT_TEMPS INT32 shift_temp; #define RIGHT_SHIFT(x,shft) \ ((shift_temp = (x)) < 0 ? \ (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \ (shift_temp >> (shft))) #else #define SHIFT_TEMPS #define RIGHT_SHIFT(x,shft) ((x) >> (shft)) #endif void pass2_fs_dither (gdImagePtr im, my_cquantize_ptr cquantize) /* This version performs Floyd-Steinberg dithering */ { hist4d histogram = cquantize->histogram; register LOCFSERROR cur0, cur1, cur2, cur3; /* current error or pixel value */ LOCFSERROR belowerr0, belowerr1, belowerr2, belowerr3; /* error for pixel below cur */ LOCFSERROR bpreverr0, bpreverr1, bpreverr2, bpreverr3; /* error for below/prev col */ register FSERRPTR errorptr; /* => fserrors[] at column before current */ int *inptr; /* => current input pixel */ unsigned char *outptr; /* => current output pixel */ histptr cachep; int dir; /* +1 or -1 depending on direction */ int dir4; /* 4*dir, for advancing errorptr */ int row; int col; int width = im->sx; int num_rows = im->sy; int *error_limit = cquantize->error_limiter; int *colormap0 = im->red; int *colormap1 = im->green; int *colormap2 = im->blue; int *colormap3 = im->alpha; SHIFT_TEMPS for (row = 0; row < num_rows; row++) { inptr = im->tpixels[row]; outptr = im->pixels[row]; if (cquantize->on_odd_row) { /* work right to left in this row */ inptr += (width - 1); /* so point to rightmost pixel */ outptr += width - 1; dir = -1; dir4 = -4; errorptr = cquantize->fserrors + (width + 1) * 4; /* => entry after last column */ cquantize->on_odd_row = FALSE; /* flip for next time */ } else { /* work left to right in this row */ dir = 1; dir4 = 4; errorptr = cquantize->fserrors; /* => entry before first real column */ cquantize->on_odd_row = TRUE; /* flip for next time */ } /* Preset error values: no error propagated to first pixel from left */ cur0 = cur1 = cur2 = cur3 = 0; /* and no error propagated to row below yet */ belowerr0 = belowerr1 = belowerr2 = belowerr3 = 0; bpreverr0 = bpreverr1 = bpreverr2 = bpreverr3 = 0; for (col = width; col > 0; col--) { int a; /* curN holds the error propagated from the previous pixel on the * current line. Add the error propagated from the previous line * to form the complete error correction term for this pixel, and * round the error term (which is expressed * 16) to an integer. * RIGHT_SHIFT rounds towards minus infinity, so adding 8 is correct * for either sign of the error value. * Note: errorptr points to *previous* column's array entry. */ cur0 = RIGHT_SHIFT (cur0 + errorptr[dir4 + 0] + 8, 4); cur1 = RIGHT_SHIFT (cur1 + errorptr[dir4 + 1] + 8, 4); cur2 = RIGHT_SHIFT (cur2 + errorptr[dir4 + 2] + 8, 4); cur3 = RIGHT_SHIFT (cur3 + errorptr[dir4 + 3] + 8, 4); /* Limit the error using transfer function set by init_error_limit. * See comments with init_error_limit for rationale. */ cur0 = error_limit[cur0]; cur1 = error_limit[cur1]; cur2 = error_limit[cur2]; cur3 = error_limit[cur3]; /* Form pixel value + error, and range-limit to 0..MAXJSAMPLE. * The maximum error is +- MAXJSAMPLE (or less with error limiting); * but we'll be lazy and just clamp this with an if test (TBB). */ cur0 += gdTrueColorGetRed (*inptr); cur1 += gdTrueColorGetGreen (*inptr); cur2 += gdTrueColorGetBlue (*inptr); /* Expand to 8 bits for consistency with dithering algorithm -- TBB */ a = gdTrueColorGetAlpha (*inptr); cur3 += (a << 1) + (a >> 6); if (cur0 < 0) { cur0 = 0; } if (cur0 > 255) { cur0 = 255; } if (cur1 < 0) { cur1 = 0; } if (cur1 > 255) { cur1 = 255; } if (cur2 < 0) { cur2 = 0; } if (cur2 > 255) { cur2 = 255; } if (cur3 < 0) { cur3 = 0; } if (cur3 > 255) { cur3 = 255; } /* Index into the cache with adjusted pixel value */ cachep = &histogram [cur0 >> C0_SHIFT] [cur1 >> C1_SHIFT] [cur2 >> C2_SHIFT] [cur3 >> (C3_SHIFT + 1)]; /* If we have not seen this color before, find nearest colormap */ /* entry and update the cache */ if (*cachep == 0) fill_inverse_cmap (im, cquantize, cur0 >> C0_SHIFT, cur1 >> C1_SHIFT, cur2 >> C2_SHIFT, cur3 >> (C3_SHIFT + 1)); /* Now emit the colormap index for this cell */ { register int pixcode = *cachep - 1; *outptr = pixcode; /* Compute representation error for this pixel */ cur0 -= colormap0[pixcode]; cur1 -= colormap1[pixcode]; cur2 -= colormap2[pixcode]; cur3 -= ((colormap3[pixcode] << 1) + (colormap3[pixcode] >> 6)); } /* Compute error fractions to be propagated to adjacent pixels. * Add these into the running sums, and simultaneously shift the * next-line error sums left by 1 column. */ { register LOCFSERROR bnexterr, delta; bnexterr = cur0; /* Process component 0 */ delta = cur0 * 2; cur0 += delta; /* form error * 3 */ errorptr[0] = (FSERROR) (bpreverr0 + cur0); cur0 += delta; /* form error * 5 */ bpreverr0 = belowerr0 + cur0; belowerr0 = bnexterr; cur0 += delta; /* form error * 7 */ bnexterr = cur1; /* Process component 1 */ delta = cur1 * 2; cur1 += delta; /* form error * 3 */ errorptr[1] = (FSERROR) (bpreverr1 + cur1); cur1 += delta; /* form error * 5 */ bpreverr1 = belowerr1 + cur1; belowerr1 = bnexterr; cur1 += delta; /* form error * 7 */ bnexterr = cur2; /* Process component 2 */ delta = cur2 * 2; cur2 += delta; /* form error * 3 */ errorptr[2] = (FSERROR) (bpreverr2 + cur2); cur2 += delta; /* form error * 5 */ bpreverr2 = belowerr2 + cur2; belowerr2 = bnexterr; cur2 += delta; /* form error * 7 */ bnexterr = cur3; /* Process component 3 */ delta = cur3 * 2; cur3 += delta; /* form error * 3 */ errorptr[3] = (FSERROR) (bpreverr3 + cur3); cur3 += delta; /* form error * 5 */ bpreverr3 = belowerr3 + cur3; belowerr3 = bnexterr; cur3 += delta; /* form error * 7 */ } /* At this point curN contains the 7/16 error value to be propagated * to the next pixel on the current line, and all the errors for the * next line have been shifted over. We are therefore ready to move on. */ inptr += dir; /* Advance pixel pointers to next column */ outptr += dir; errorptr += dir4; /* advance errorptr to current column */ } /* Post-loop cleanup: we must unload the final error values into the * final fserrors[] entry. Note we need not unload belowerrN because * it is for the dummy column before or after the actual array. */ errorptr[0] = (FSERROR) bpreverr0; /* unload prev errs into array */ errorptr[1] = (FSERROR) bpreverr1; errorptr[2] = (FSERROR) bpreverr2; errorptr[3] = (FSERROR) bpreverr3; } } /* * Initialize the error-limiting transfer function (lookup table). * The raw F-S error computation can potentially compute error values of up to * +- MAXJSAMPLE. But we want the maximum correction applied to a pixel to be * much less, otherwise obviously wrong pixels will be created. (Typical * effects include weird fringes at color-area boundaries, isolated bright * pixels in a dark area, etc.) The standard advice for avoiding this problem * is to ensure that the "corners" of the color cube are allocated as output * colors; then repeated errors in the same direction cannot cause cascading * error buildup. However, that only prevents the error from getting * completely out of hand; Aaron Giles reports that error limiting improves * the results even with corner colors allocated. * A simple clamping of the error values to about +- MAXJSAMPLE/8 works pretty * well, but the smoother transfer function used below is even better. Thanks * to Aaron Giles for this idea. */ static int init_error_limit (gdImagePtr im, my_cquantize_ptr cquantize) /* Allocate and fill in the error_limiter table */ { int *table; int in, out; cquantize->error_limiter_storage = (int *) gdMalloc ((255 * 2 + 1) * sizeof (int)); if (!cquantize->error_limiter_storage) { return 0; } /* so can index -MAXJSAMPLE .. +MAXJSAMPLE */ cquantize->error_limiter = cquantize->error_limiter_storage + 255; table = cquantize->error_limiter; #define STEPSIZE ((255+1)/16) /* Map errors 1:1 up to +- MAXJSAMPLE/16 */ out = 0; for (in = 0; in < STEPSIZE; in++, out++) { table[in] = out; table[-in] = -out; } /* Map errors 1:2 up to +- 3*MAXJSAMPLE/16 */ for (; in < STEPSIZE * 3; in++, out += (in & 1) ? 0 : 1) { table[in] = out; table[-in] = -out; } /* Clamp the rest to final out value (which is (MAXJSAMPLE+1)/8) */ for (; in <= 255; in++) { table[in] = out; table[-in] = -out; } #undef STEPSIZE return 1; } static void zeroHistogram (hist4d histogram) { int i; int j; /* Zero the histogram or inverse color map */ for (i = 0; i < HIST_C0_ELEMS; i++) { for (j = 0; j < HIST_C1_ELEMS; j++) { memset (histogram[i][j], 0, HIST_C2_ELEMS * HIST_C3_ELEMS * sizeof (histcell)); } } } /* Here we go at last. */ void gdImageTrueColorToPalette (gdImagePtr im, int dither, int colorsWanted) { my_cquantize_ptr cquantize = 0; int i; size_t arraysize; if (!im->trueColor) { /* Nothing to do! */ return; } if (colorsWanted > gdMaxColors) { colorsWanted = gdMaxColors; } im->pixels = gdCalloc (sizeof (unsigned char *), im->sy); if (!im->pixels) { /* No can do */ goto outOfMemory; } for (i = 0; (i < im->sy); i++) { im->pixels[i] = gdCalloc (sizeof (unsigned char *), im->sx); if (!im->pixels[i]) { goto outOfMemory; } } cquantize = (my_cquantize_ptr) gdCalloc (sizeof (my_cquantizer), 1); if (!cquantize) { /* No can do */ goto outOfMemory; } /* Allocate the histogram/inverse colormap storage */ cquantize->histogram = (hist4d) gdMalloc (HIST_C0_ELEMS * sizeof (hist3d)); for (i = 0; i < HIST_C0_ELEMS; i++) { int j; cquantize->histogram[i] = (hist3d) gdCalloc (HIST_C1_ELEMS, sizeof (hist2d)); if (!cquantize->histogram[i]) { goto outOfMemory; } for (j = 0; (j < HIST_C1_ELEMS); j++) { cquantize->histogram[i][j] = (hist2d) gdCalloc (HIST_C2_ELEMS * HIST_C3_ELEMS, sizeof (histcell)); if (!cquantize->histogram[i][j]) { goto outOfMemory; } } } cquantize->fserrors = (FSERRPTR) gdMalloc (4 * sizeof (FSERROR)); init_error_limit (im, cquantize); arraysize = (size_t) ((im->sx + 2) * (4 * sizeof (FSERROR))); /* Allocate Floyd-Steinberg workspace. */ cquantize->fserrors = gdCalloc (arraysize, 1); if (!cquantize->fserrors) { goto outOfMemory; } cquantize->on_odd_row = FALSE; /* Do the work! */ zeroHistogram (cquantize->histogram); prescan_quantize (im, cquantize); select_colors (im, cquantize, 256); /* TBB HACK REMOVE */ { FILE *out = fopen ("palettemap.png", "wb"); int i; gdImagePtr im2 = gdImageCreateTrueColor (256, 256); for (i = 0; (i < 256); i++) { gdImageFilledRectangle (im2, (i % 16) * 16, (i / 16) * 16, (i % 16) * 16 + 15, (i / 16) * 16 + 15, gdTrueColorAlpha (im->red[i], im->green[i], im->blue[i], im->alpha[i])); } gdImagePng (im2, out); fclose (out); gdImageDestroy (im2); } zeroHistogram (cquantize->histogram); if (dither) { pass2_fs_dither (im, cquantize); } else { pass2_no_dither (im, cquantize); } if (cquantize->transparentIsPresent) { int mt = -1; int mtIndex = -1; for (i = 0; (i < im->colorsTotal); i++) { if (im->alpha[i] > mt) { mtIndex = i; mt = im->alpha[i]; } } for (i = 0; (i < im->colorsTotal); i++) { if (im->alpha[i] == mt) { im->alpha[i] = gdAlphaTransparent; } } } if (cquantize->opaqueIsPresent) { int mo = 128; int moIndex = -1; for (i = 0; (i < im->colorsTotal); i++) { if (im->alpha[i] < mo) { moIndex = i; mo = im->alpha[i]; } } for (i = 0; (i < im->colorsTotal); i++) { if (im->alpha[i] == mo) { im->alpha[i] = gdAlphaOpaque; } } } /* Success! Get rid of the truecolor image data. */ im->trueColor = 0; /* Junk the truecolor pixels */ for (i = 0; i < im->sy; i++) { gdFree (im->tpixels[i]); } gdFree (im->tpixels); im->tpixels = 0; /* Tediously free stuff. */ outOfMemory: if (im->trueColor) { /* On failure only */ for (i = 0; i < im->sy; i++) { if (im->pixels[i]) { gdFree (im->pixels[i]); } } if (im->pixels) { gdFree (im->pixels); } im->pixels = 0; } for (i = 0; i < HIST_C0_ELEMS; i++) { if (cquantize->histogram[i]) { int j; for (j = 0; j < HIST_C1_ELEMS; j++) { if (cquantize->histogram[i][j]) { gdFree (cquantize->histogram[i][j]); } } gdFree (cquantize->histogram[i]); } } if (cquantize->histogram) { gdFree (cquantize->histogram); } if (cquantize->fserrors) { gdFree (cquantize->fserrors); } if (cquantize->error_limiter_storage) { gdFree (cquantize->error_limiter_storage); } if (cquantize) { gdFree (cquantize); } } libwmf-0.2.8.4/src/extra/gd/gd_clip.c0000644000077100007710000000301507260330331016550 0ustar fjffjf00000000000000#include "gd.h" extern void* gdMalloc (size_t); extern void* gdRealloc (void*,size_t); extern void gdFree (void*); int gdImageBoundsSafe(gdImagePtr im, int x, int y) { int unsafe = 0; int safe = 1; int status; int i; gdClipRectanglePtr r; if (y < 0 ) return (unsafe); if (y >= im->sy) return (unsafe); if (x < 0 ) return (unsafe); if (x >= im->sx) return (unsafe); if (im->clip == 0) return (safe); if (im->clip->count == 0) return (safe); status = unsafe; for (i = 0; i < im->clip->count; i++) { r = &(im->clip->list[i]); if (y < r->y_min) continue; if (y > r->y_max) continue; if (x < r->x_min) continue; if (x > r->x_max) continue; status = safe; break; } return (status); } void gdClipSetFree(gdImagePtr im) { if (im->clip) { gdFree (im->clip->list); gdFree (im->clip); im->clip = 0; } } void gdClipSetReset(gdImagePtr im) { if (im->clip) { im->clip->count = 0; } } void gdClipSetAdd(gdImagePtr im,gdClipRectanglePtr rect) { gdClipRectanglePtr more; if (im->clip == 0) { im->clip = gdMalloc (sizeof (gdClipSet)); if (im->clip == 0) return; im->clip->max = 8; im->clip->count = 0; im->clip->list = gdMalloc (im->clip->max * sizeof (gdClipRectangle)); if (im->clip->list == 0) { gdFree (im->clip); im->clip = 0; return; } } if (im->clip->count == im->clip->max) { more = gdRealloc (im->clip->list,(im->clip->max + 8) * sizeof (gdClipRectangle)); if (more == 0) return; im->clip->max += 8; } im->clip->list[im->clip->count] = (*rect); im->clip->count++; } libwmf-0.2.8.4/src/extra/gd/Makefile.gd0000644000077100007710000001366407301470216017052 0ustar fjffjf00000000000000#Depending on your system and the libraries and features you have #and want, you WILL need to modify this Makefile! #If you do not have gcc, change the setting for COMPILER, but you must #use an ANSI standard C compiler (NOT the old SunOS 4.1.3 cc #compiler; get gcc if you are still using that). COMPILER=gcc #If the ar command fails on your system, consult the ar manpage #for your system. AR=ar #Typical configuration: support for PNG images, JPEG images, and FreeType text. #Remove -DHAVE_LIBFREETYPE if you can live without FreeType text. #Add -DHAVE_XPM if you have X and xpm installed and you want that feature. CFLAGS=-g -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE #PLEASE NOTE: YOU MAY HAVE TO JUGGLE THE ORDER OF THE LIBRARIES. #Some systems are very picky about link order. They don't all agree #on the right order, either. # #Best for most users. If you don't have FreeType, remove -lfreetype. #Add -lxpm if you need XPM support. LIBS=-lgd -lpng -lz -ljpeg -lfreetype -lm #Typical install locations for freetype 2.0, zlib, xpm, libjpeg #and libpng header files. If yours are somewhere else, change this. #-I. is important to ensure that the version of gd you are installing #is used, and not an older release in your directory tree somewhere. INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include #Typical install locations for freetype, zlib, xpm and libpng libraries. #If yours are somewhere else, other than a standard location #such as /lib or /usr/lib, then change this. This line shouldn't hurt #if you don't actually have some of the optional libraries and directories. LIBDIRS=-L/usr/local/lib -L/usr/lib/X11 -L/usr/X11R6/lib #Location where libgd.so should be installed by "make install". #THIS MUST BE ONE OF YOUR STANDARD SHARED LIBRARY LOCATIONS, unless #you add a new directory to your LD_LIBRARY_PATH environment setting. #Otherwise applications will NOT find libgd.so and will produce an #error. INSTALL_LIB=/usr/lib #Location where .h files should be installed by "make install". INSTALL_INCLUDE=/usr/include #Location where useful non-test programs should be installed by "make install". INSTALL_BIN=/usr/local/bin # # # Changes should not be required below here. # # # Update these with each release! MAJOR_VERSION=2 VERSION=2.0.0 CC=$(COMPILER) $(INCLUDEDIRS) LINK=$(CC) $(LIBDIRS) $(LIBS) PROGRAMS=$(BIN_PROGRAMS) $(TEST_PROGRAMS) BIN_PROGRAMS=pngtogd pngtogd2 gdtopng gd2topng gd2copypal gdparttopng webpng TEST_PROGRAMS=gdtest gddemo gd2time gdtestft testac default: instructions instructions: @echo First, edit this Makefile. Read the comments at @echo the beginning thoroughly. @echo @echo Second, type \'make install\' as root. @echo @echo This installs the GD ${VERSION} shared library, @echo which is required in order to use the included @echo utility programs, such as webpng, pngtogd, etc. @echo @echo OPTIONAL third step: type \'make test\' to build @echo the optional test programs. Type \'make install\' FIRST. test: $(TEST_PROGRAMS) install: libgd.so.${VERSION} $(BIN_PROGRAMS) sh ./install-item 755 pngtogd $(INSTALL_BIN)/pngtogd sh ./install-item 755 pngtogd2 $(INSTALL_BIN)/pngtogd2 sh ./install-item 755 gdtopng $(INSTALL_BIN)/gdtopng sh ./install-item 755 gd2topng $(INSTALL_BIN)/gd2topng sh ./install-item 755 gd2copypal $(INSTALL_BIN)/gd2copypal sh ./install-item 755 gdparttopng $(INSTALL_BIN)/gdparttopng sh ./install-item 755 webpng $(INSTALL_BIN)/webpng sh ./install-item 755 bdftogd $(INSTALL_BIN)/bdftogd sh ./install-item 644 gd.h $(INSTALL_INCLUDE)/gd.h sh ./install-item 644 gdcache.h $(INSTALL_INCLUDE)/gdcache.h sh ./install-item 644 gd_io.h $(INSTALL_INCLUDE)/gd_io.h sh ./install-item 644 gdfontg.h $(INSTALL_INCLUDE)/gdfontg.h sh ./install-item 644 gdfontl.h $(INSTALL_INCLUDE)/gdfontl.h sh ./install-item 644 gdfontmb.h $(INSTALL_INCLUDE)/gdfontmb.h sh ./install-item 644 gdfonts.h $(INSTALL_INCLUDE)/gdfonts.h sh ./install-item 644 gdfontt.h $(INSTALL_INCLUDE)/gdfontt.h gddemo: gddemo.o $(CC) gddemo.o -o gddemo $(LIBDIRS) $(LIBS) testac: testac.o $(CC) testac.o -o testac $(LIBDIRS) $(LIBS) pngtogd: pngtogd.o $(CC) pngtogd.o -o pngtogd $(LIBDIRS) $(LIBS) webpng: webpng.o $(CC) webpng.o -o webpng $(LIBDIRS) $(LIBS) pngtogd2: pngtogd2.o $(CC) pngtogd2.o -o pngtogd2 $(LIBDIRS) $(LIBS) gdtopng: gdtopng.o $(CC) gdtopng.o -o gdtopng $(LIBDIRS) $(LIBS) gd2topng: gd2topng.o $(CC) gd2topng.o -o gd2topng $(LIBDIRS) $(LIBS) gd2copypal: gd2copypal.o $(CC) gd2copypal.o -o gd2copypal $(LIBDIRS) $(LIBS) gdparttopng: gdparttopng.o $(CC) gdparttopng.o -o gdparttopng $(LIBDIRS) $(LIBS) gdtest: gdtest.o $(CC) gdtest.o -o gdtest $(LIBDIRS) $(LIBS) gd2time: gd2time.o $(CC) gd2time.o -o gd2time $(LIBDIRS) $(LIBS) gdtestft: gdtestft.o $(CC) --verbose gdtestft.o -o gdtestft $(LIBDIRS) $(LIBS) LIBOBJS=gd.o gd_gd.o gd_gd2.o gd_io.o gd_io_dp.o \ gd_io_file.o gd_ss.o gd_io_ss.o gd_png.o gd_jpeg.o gdxpm.o \ gdfontt.o gdfonts.o gdfontmb.o gdfontl.o gdfontg.o \ gdtables.o gdft.o gdcache.o gdkanji.o wbmp.o \ gd_wbmp.o gdhelpers.o gd_topal.o #Shared library. This should work fine on any ELF platform (Linux, etc.) with #GNU ld or something similarly intelligent. To avoid the chicken-and-egg #problem, this target also installs the library so that applications can #actually find it. libgd.so.${VERSION}: ${LIBOBJS} -rm -f libgd.so.${VERSION} 2>/dev/null ld -shared -o libgd.so.${VERSION} ${LIBOBJS} sh ./install-item 644 libgd.so.${VERSION} \ $(INSTALL_LIB)/libgd.so.${VERSION} -rm $(INSTALL_LIB)/libgd.so.${MAJOR_VERSION} 2>/dev/null ln -s $(INSTALL_LIB)/libgd.so.${VERSION} \ $(INSTALL_LIB)/libgd.so.${MAJOR_VERSION} -rm $(INSTALL_LIB)/libgd.so 2>/dev/null ln -s $(INSTALL_LIB)/libgd.so.${VERSION} \ $(INSTALL_LIB)/libgd.so #Static library, if you really need one for some reason. libgd.a: ${LIBOBJS} rm -f libgd.a $(AR) rc libgd.a ${LIBOBJS} -ranlib libgd.a clean: rm -f *.o *.a *.so ${PROGRAMS} test/gdtest.jpg test/gdtest.wbmp libwmf-0.2.8.4/src/extra/gd/Makefile.nt0000644000077100007710000000675607260330332017103 0ustar fjffjf00000000000000#NMAKE makefile for Windows 95/98/NT developers. #Produces a static library (libgd.lib). Thanks to Joe Gregorio. #THIS IS OUT OF DATE. COMPILER=cl #If the ar command fails on your system, consult the ar manpage #for your system. AR=LIB #If the install command is not in your path, provide #an explicit path for it here, or install manually. INSTALL=install #If you don't have FreeType and/or Xpm installed, including the #header files, uncomment this (default). CFLAGS=-Ox -GX #If you do have FreeType and/or Xpm fully installed, uncomment a #variation of this and comment out the line above. See also LIBS below. #CFLAGS=-O -DHAVE_LIBXPM -DHAVE_LIBJPEG -DHAVE_LIBPNG -DHAVE_LIBTTF # -DHAVE_LIBFREETYPE can be used instead of -DHAVE_TTF to use the # newer FreeType2 libraries #Libraries required for applications LIBS=gd.lib libpng.lib zlib.lib #LIBS=gd.lib libpng.lib zlib.lib libjpeg.lib libttf.lib #Libraries required for gd.lib itself GDLIBS=libpng.lib zlib.lib #GDLIBS=libpng.lib zlib.lib libjpeg.lib libttf.lib #Typical install locations for freetype, zlib, jpeg, xpm and #libpng header files. If yours are somewhere else, change this. INCLUDEDIRS=-I d:\zlib -I d:\libpng -I d:\libjpeg -I d:\libttf #Typical install locations for freetype, zlib, xpm, libjpeg and #libpng libraries. # #If yours are somewhere else, other than a standard location #such as /lib or /usr/lib, then change this. Be sure to keep #-L. as this allows the gd library itself to be found. #Put -L. first so that old versions of the gd library elsewhere #on your system can't cause conflicts while building a new one. LIB=d:\devstudio\vc\lib;d:\zlib;d:\libpng;d:\libjpeg;d:\libttf #Location where gd.lib should be installed by "make install". INSTALL_LIB=/usr/local/lib #Location where .h files should be installed by "make install". INSTALL_INCLUDE=/usr/local/include #Location where useful non-test programs should be installed by "make install". INSTALL_BIN=/usr/local/bin # # # Changes should not be required below here. # # VERSION=1.8.1 CC=$(COMPILER) $(INCLUDEDIRS) LINK=$(CC) $(LIBS) PROGRAMS=$(BIN_PROGRAMS) $(TEST_PROGRAMS) BIN_PROGRAMS=pngtogd.exe pngtogd2.exe gdtopng.exe gd2topng.exe gd2copypal.exe gdparttopng.exe webpng.exe TEST_PROGRAMS=gdtest.exe gddemo.exe gd2time.exe gdtestttf.exe gdtestft.exe all: gd.lib $(PROGRAMS) gddemo.exe: gddemo.c gd.lib $(CC) gddemo.c $(LIBDIRS) $(LIBS) pngtogd.exe: pngtogd.c gd.lib $(CC) pngtogd.c $(LIBDIRS) $(LIBS) webpng.exe: webpng.c gd.lib $(CC) webpng.c $(LIBDIRS) $(LIBS) pngtogd2.exe: pngtogd2.c gd.lib $(CC) pngtogd2.c $(LIBDIRS) $(LIBS) gdtopng.exe: gdtopng.c gd.lib $(CC) gdtopng.c $(LIBDIRS) $(LIBS) gd2topng.exe: gd2topng.c gd.lib $(CC) gd2topng.c $(LIBDIRS) $(LIBS) gd2copypal.exe: gd2copypal.c gd.lib $(CC) gd2copypal.c $(LIBDIRS) $(LIBS) gdparttopng.exe: gdparttopng.c gd.lib $(CC) gdparttopng.c $(LIBDIRS) $(LIBS) gdtest.exe: gdtest.c gd.lib $(CC) gdtest.c $(LIBDIRS) $(LIBS) gd2time.exe: gd2time.c gd.lib $(CC) gd2time.c $(LIBDIRS) $(LIBS) gdtestttf.exe: gdtestttf.c gd.lib $(CC) gdtestttf.c $(LIBDIRS) $(LIBS) gdtestft.exe: gdtestft.c gd.lib $(CC) gdtestft.c $(LIBDIRS) $(LIBS) OBJS=gd.obj gd_gd.obj gd_gd2.obj gd_io.obj gd_io_dp.obj gd_io_file.obj gd_ss.obj \ gd_io_ss.obj gd_png.obj gdxpm.obj gdfontt.obj gdfonts.obj gdfontmb.obj gdfontl.obj \ gdfontg.obj gdtables.obj gdttf.obj gdft.c gdcache.obj gdkanji.obj gd_jpeg.obj gd.lib: $(OBJS) gd.h gdfontt.h gdfonts.h gdfontmb.h gdfontl.h gdfontg.h $(AR) $(OBJS) $(GDLIBS) clean: del *.obj *.lib $(PROGRAMS) libwmf-0.2.8.4/src/extra/gd/Readme.wmf0000644000077100007710000000104307307634746016735 0ustar fjffjf00000000000000This directory contains the sources for gd-2.0.1 (beta) 1. Makefile has been renamed Makefile.gd 2. This file (Readme.wmf), Makefile.am & Makefile.in have been added 3. Especially when clipping, fill needs to check that initial point is in bounds! Other minor changes have been made. Please see the file gd.html for information regarding gd. Possible changes: make the following extern...? /* draw_bitmap - transfers glyph bitmap to GD image */ static char * gdft_draw_bitmap(gdImage *im, int fg, FT_Bitmap bitmap, int pen_x, int pen_y) { libwmf-0.2.8.4/src/extra/gd/README-JPEG.TXT0000644000077100007710000004675107260330332017103 0ustar fjffjf00000000000000The Independent JPEG Group's JPEG software ========================================== README for release 6b of 27-Mar-1998 ==================================== This distribution contains the sixth public release of the Independent JPEG Group's free JPEG software. You are welcome to redistribute this software and to use it for any purpose, subject to the conditions under LEGAL ISSUES, below. Serious users of this software (particularly those incorporating it into larger programs) should contact IJG at jpeg-info@uunet.uu.net to be added to our electronic mailing list. Mailing list members are notified of updates and have a chance to participate in technical discussions, etc. This software is the work of Tom Lane, Philip Gladstone, Jim Boucher, Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG Group. IJG is not affiliated with the official ISO JPEG standards committee. DOCUMENTATION ROADMAP ===================== This file contains the following sections: OVERVIEW General description of JPEG and the IJG software. LEGAL ISSUES Copyright, lack of warranty, terms of distribution. REFERENCES Where to learn more about JPEG. ARCHIVE LOCATIONS Where to find newer versions of this software. RELATED SOFTWARE Other stuff you should get. FILE FORMAT WARS Software *not* to get. TO DO Plans for future IJG releases. Other documentation files in the distribution are: User documentation: install.doc How to configure and install the IJG software. usage.doc Usage instructions for cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom. *.1 Unix-style man pages for programs (same info as usage.doc). wizard.doc Advanced usage instructions for JPEG wizards only. change.log Version-to-version change highlights. Programmer and internal documentation: libjpeg.doc How to use the JPEG library in your own programs. example.c Sample code for calling the JPEG library. structure.doc Overview of the JPEG library's internal structure. filelist.doc Road map of IJG files. coderules.doc Coding style rules --- please read if you contribute code. Please read at least the files install.doc and usage.doc. Useful information can also be found in the JPEG FAQ (Frequently Asked Questions) article. See ARCHIVE LOCATIONS below to find out where to obtain the FAQ article. If you want to understand how the JPEG code works, we suggest reading one or more of the REFERENCES, then looking at the documentation files (in roughly the order listed) before diving into the code. OVERVIEW ======== This package contains C software to implement JPEG image compression and decompression. JPEG (pronounced "jay-peg") is a standardized compression method for full-color and gray-scale images. JPEG is intended for compressing "real-world" scenes; line drawings, cartoons and other non-realistic images are not its strong suit. JPEG is lossy, meaning that the output image is not exactly identical to the input image. Hence you must not use JPEG if you have to have identical output bits. However, on typical photographic images, very good compression levels can be obtained with no visible change, and remarkably high compression levels are possible if you can tolerate a low-quality image. For more details, see the references, or just experiment with various compression settings. This software implements JPEG baseline, extended-sequential, and progressive compression processes. Provision is made for supporting all variants of these processes, although some uncommon parameter settings aren't implemented yet. For legal reasons, we are not distributing code for the arithmetic-coding variants of JPEG; see LEGAL ISSUES. We have made no provision for supporting the hierarchical or lossless processes defined in the standard. We provide a set of library routines for reading and writing JPEG image files, plus two sample applications "cjpeg" and "djpeg", which use the library to perform conversion between JPEG and some other popular image file formats. The library is intended to be reused in other applications. In order to support file conversion and viewing software, we have included considerable functionality beyond the bare JPEG coding/decoding capability; for example, the color quantization modules are not strictly part of JPEG decoding, but they are essential for output to colormapped file formats or colormapped displays. These extra functions can be compiled out of the library if not required for a particular application. We have also included "jpegtran", a utility for lossless transcoding between different JPEG processes, and "rdjpgcom" and "wrjpgcom", two simple applications for inserting and extracting textual comments in JFIF files. The emphasis in designing this software has been on achieving portability and flexibility, while also making it fast enough to be useful. In particular, the software is not intended to be read as a tutorial on JPEG. (See the REFERENCES section for introductory material.) Rather, it is intended to be reliable, portable, industrial-strength code. We do not claim to have achieved that goal in every aspect of the software, but we strive for it. We welcome the use of this software as a component of commercial products. No royalty is required, but we do ask for an acknowledgement in product documentation, as described under LEGAL ISSUES. LEGAL ISSUES ============ In plain English: 1. We don't promise that this software works. (But if you find any bugs, please let us know!) 2. You can use this software for whatever you want. You don't have to pay us. 3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code. In legalese: The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. This software is copyright (C) 1991-1998, Thomas G. Lane. All Rights Reserved except as specified below. Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: (1) If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. (2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group". (3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind. These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us. Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software". We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor. ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally, that you must include source code if you redistribute it. (See the file ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do. The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, ltconfig, ltmain.sh). Another support script, install-sh, is copyright by M.I.T. but is also freely distributable. It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining one or more licenses. For this reason, support for arithmetic coding has been removed from the free JPEG software. (Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) So far as we are aware, there are no patent restrictions on the remaining code. The IJG distribution formerly included code to read and write GIF files. To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders. We are required to state that "The Graphics Interchange Format(c) is the Copyright property of CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated." REFERENCES ========== We highly recommend reading one or more of these references before trying to understand the innards of the JPEG software. The best short technical introduction to the JPEG compression algorithm is Wallace, Gregory K. "The JPEG Still Picture Compression Standard", Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44. (Adjacent articles in that issue discuss MPEG motion picture compression, applications of JPEG, and related topics.) If you don't have the CACM issue handy, a PostScript file containing a revised version of Wallace's article is available at ftp://ftp.uu.net/graphics/jpeg/wallace.ps.gz. The file (actually a preprint for an article that appeared in IEEE Trans. Consumer Electronics) omits the sample images that appeared in CACM, but it includes corrections and some added material. Note: the Wallace article is copyright ACM and IEEE, and it may not be used for commercial purposes. A somewhat less technical, more leisurely introduction to JPEG can be found in "The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides good explanations and example C code for a multitude of compression methods including JPEG. It is an excellent source if you are comfortable reading C code but don't know much about data compression in general. The book's JPEG sample code is far from industrial-strength, but when you are ready to look at a full implementation, you've got one here... The best full description of JPEG is the textbook "JPEG Still Image Data Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp. The book includes the complete text of the ISO JPEG standards (DIS 10918-1 and draft DIS 10918-2). This is by far the most complete exposition of JPEG in existence, and we highly recommend it. The JPEG standard itself is not available electronically; you must order a paper copy through ISO or ITU. (Unless you feel a need to own a certified official copy, we recommend buying the Pennebaker and Mitchell book instead; it's much cheaper and includes a great deal of useful explanatory material.) In the USA, copies of the standard may be ordered from ANSI Sales at (212) 642-4900, or from Global Engineering Documents at (800) 854-7179. (ANSI doesn't take credit card orders, but Global does.) It's not cheap: as of 1992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7% shipping/handling. The standard is divided into two parts, Part 1 being the actual specification, while Part 2 covers compliance testing methods. Part 1 is titled "Digital Compression and Coding of Continuous-tone Still Images, Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS 10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of Continuous-tone Still Images, Part 2: Compliance testing" and has document numbers ISO/IEC IS 10918-2, ITU-T T.83. Some extensions to the original JPEG standard are defined in JPEG Part 3, a newer ISO standard numbered ISO/IEC IS 10918-3 and ITU-T T.84. IJG currently does not support any Part 3 extensions. The JPEG standard does not specify all details of an interchangeable file format. For the omitted details we follow the "JFIF" conventions, revision 1.02. A copy of the JFIF spec is available from: Literature Department C-Cube Microsystems, Inc. 1778 McCarthy Blvd. Milpitas, CA 95035 phone (408) 944-6300, fax (408) 944-6314 A PostScript version of this document is available by FTP at ftp://ftp.uu.net/graphics/jpeg/jfif.ps.gz. There is also a plain text version at ftp://ftp.uu.net/graphics/jpeg/jfif.txt.gz, but it is missing the figures. The TIFF 6.0 file format specification can be obtained by FTP from ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems. IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6). Instead, we recommend the JPEG design proposed by TIFF Technical Note #2 (Compression tag 7). Copies of this Note can be obtained from ftp.sgi.com or from ftp://ftp.uu.net/graphics/jpeg/. It is expected that the next revision of the TIFF spec will replace the 6.0 JPEG design with the Note's design. Although IJG's own code does not support TIFF/JPEG, the free libtiff library uses our library to implement TIFF/JPEG per the Note. libtiff is available from ftp://ftp.sgi.com/graphics/tiff/. ARCHIVE LOCATIONS ================= The "official" archive site for this software is ftp.uu.net (Internet address 192.48.96.9). The most recent released version can always be found there in directory graphics/jpeg. This particular version will be archived as ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz. If you don't have direct Internet access, UUNET's archives are also available via UUCP; contact help@uunet.uu.net for information on retrieving files that way. Numerous Internet sites maintain copies of the UUNET files. However, only ftp.uu.net is guaranteed to have the latest official version. You can also obtain this software in DOS-compatible "zip" archive format from the SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or on CompuServe in the Graphics Support forum (GO CIS:GRAPHSUP), library 12 "JPEG Tools". Again, these versions may sometimes lag behind the ftp.uu.net release. The JPEG FAQ (Frequently Asked Questions) article is a useful source of general information about JPEG. It is updated constantly and therefore is not included in this distribution. The FAQ is posted every two weeks to Usenet newsgroups comp.graphics.misc, news.answers, and other groups. It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/ and other news.answers archive sites, including the official news.answers archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/. If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu with body send usenet/news.answers/jpeg-faq/part1 send usenet/news.answers/jpeg-faq/part2 RELATED SOFTWARE ================ Numerous viewing and image manipulation programs now support JPEG. (Quite a few of them use this library to do so.) The JPEG FAQ described above lists some of the more popular free and shareware viewers, and tells where to obtain them on Internet. If you are on a Unix machine, we highly recommend Jef Poskanzer's free PBMPLUS software, which provides many useful operations on PPM-format image files. In particular, it can convert PPM images to and from a wide range of other formats, thus making cjpeg/djpeg considerably more useful. The latest version is distributed by the NetPBM group, and is available from numerous sites, notably ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/. Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software is; you are likely to have difficulty making it work on any non-Unix machine. A different free JPEG implementation, written by the PVRG group at Stanford, is available from ftp://havefun.stanford.edu/pub/jpeg/. This program is designed for research and experimentation rather than production use; it is slower, harder to use, and less portable than the IJG code, but it is easier to read and modify. Also, the PVRG code supports lossless JPEG, which we do not. (On the other hand, it doesn't do progressive JPEG.) FILE FORMAT WARS ================ Some JPEG programs produce files that are not compatible with our library. The root of the problem is that the ISO JPEG committee failed to specify a concrete file format. Some vendors "filled in the blanks" on their own, creating proprietary formats that no one else could read. (For example, none of the early commercial JPEG implementations for the Macintosh were able to exchange compressed files.) The file format we have adopted is called JFIF (see REFERENCES). This format has been agreed to by a number of major commercial JPEG vendors, and it has become the de facto standard. JFIF is a minimal or "low end" representation. We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF Technical Note #2) for "high end" applications that need to record a lot of additional data about an image. TIFF/JPEG is fairly new and not yet widely supported, unfortunately. The upcoming JPEG Part 3 standard defines a file format called SPIFF. SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should be able to read the most common variant of SPIFF. SPIFF has some technical advantages over JFIF, but its major claim to fame is simply that it is an official standard rather than an informal one. At this point it is unclear whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto standard. IJG intends to support SPIFF once the standard is frozen, but we have not decided whether it should become our default output format or not. (In any case, our decoder will remain capable of reading JFIF indefinitely.) Various proprietary file formats incorporating JPEG compression also exist. We have little or no sympathy for the existence of these formats. Indeed, one of the original reasons for developing this free software was to help force convergence on common, open format standards for JPEG files. Don't use a proprietary file format! TO DO ===== The major thrust for v7 will probably be improvement of visual quality. The current method for scaling the quantization tables is known not to be very good at low Q values. We also intend to investigate block boundary smoothing, "poor man's variable quantization", and other means of improving quality-vs-file-size performance without sacrificing compatibility. In future versions, we are considering supporting some of the upcoming JPEG Part 3 extensions --- principally, variable quantization and the SPIFF file format. As always, speeding things up is of great interest. Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net. libwmf-0.2.8.4/src/extra/gd/alphachanneltest.html0000644000077100007710000000330107260330332021206 0ustar fjffjf00000000000000 gd Alpha Channel Test

gd Alpha Channel Test

If your browser fully supports PNG alpha channels, the "blended" and "alpha channel" images should appear identical to the naked eye. Miniscule mathematical differences may exist due to the 7-bit alpha channel resolution of gd.

Palette and truecolor images will look slightly different, as the palette versions are limited to 256 palette entries, which are used as well as possible to approach the effect of the original truecolor version.
Truecolor Images
Blending against light blue, Half Size
Alpha channel, Half Size
Blending against light blue, Full Size
Alpha channel, Full Size
Blending against light blue, Double Size
Alpha channel, Double Size
Palette Images
Blending against light blue, Half Size
Alpha channel, Half Size
Blending against light blue, Full Size
Alpha channel, Full Size
Blending against light blue, Double Size
Alpha channel, Double Size
libwmf-0.2.8.4/src/extra/gd/arc0000644000077100007710000000170707301470216015504 0ustar fjffjf00000000000000/* s and e are integers modulo 360 (degrees), with 0 degrees being the rightmost extreme and degrees changing clockwise. cx and cy are the center in pixels; w and h are the horizontal and vertical diameter in pixels. Nice interface, but slow, since I don't yet use Bresenham (I'm using an inefficient but simple solution with too much work going on in it; generalizing Bresenham to ellipses and partial arcs of ellipses is non-trivial, at least for me) and there are other inefficiencies (small circles do far too much work). */ void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) { int i; int lx = 0, ly = 0; int w2, h2; w2 = w/2; h2 = h/2; while (e < s) { e += 360; } for (i=s; (i <= e); i++) { int x, y; x = ((long)gdCosT[i % 360] * (long)w2 / 1024) + cx; y = ((long)gdSinT[i % 360] * (long)h2 / 1024) + cy; if (i != s) { gdImageLine(im, lx, ly, x, y, color); } lx = x; ly = y; } } libwmf-0.2.8.4/src/extra/gd/bdftogd0000755000077100007710000000764607260330332016361 0ustar fjffjf00000000000000#!/usr/bin/perl -w # # Simple convertor from bdf to gd font format. # # Author: Jan Pazdziora, adelton@fi.muni.cz, http://www.fi.muni.cz/~adelton/ # at Faculty of Informatics, Masaryk University in Brno, Czech Republic. # # Example of use: # fstobdf -s fontserverhost:7100 -fn 8x16 | ./bdftogd FontLarge gdfontl # use strict; my $VERSION = '0.60'; my $now = localtime; if (@ARGV != 2) { die "usage: bdftogd fontname filename, eg. bdftogd FontLarge gdfontl\n"; } my $gdname = shift; $gdname = 'gd' . $gdname unless $gdname =~ /^gd/i; my $filename = shift; $filename = 'gd' . $filename unless $filename =~ /^gd/i; if (-f "$filename.c") { die "File $filename.c already exists, won't overwrite\n"; } if (-f "$filename.h") { die "File $filename.h already exists, won't overwrite\n"; } my ($width, $height); my (@data, @left, @bottom); my ($globalleft, $globaltop); my ($minchar, $maxchar); my ($copyright, $fontdef); my $currentchar; my $gobitmap = 0; while (<>) { chomp; s/\r$//; my ($tag, $value) = split / /, $_, 2; die "Font is not fixed width\n" if $tag eq 'SPACING' and not $value =~ /[CM]/i; $currentchar = $value if $tag eq 'ENCODING'; $minchar = $currentchar if not defined $minchar or $currentchar < $minchar; $maxchar = $currentchar if not defined $maxchar or $currentchar > $maxchar; if ($tag eq 'ENDCHAR') { $gobitmap = 0; my $bottom = $globaltop - $bottom[$currentchar]; if ($bottom > 0) { $data[$currentchar] = substr $data[$currentchar], 0, length($data[$currentchar]) - $bottom * $width; } else { $data[$currentchar] .= '0' x (-$bottom * $width); } } if ($tag eq 'FONTBOUNDINGBOX') { my ($tag, $wid, $hei, $left, $top) = split / /; if (defined $top) { $globalleft = $left; $globaltop = $top; $height = $hei; $width = $wid; } } if ($tag eq 'FONT' and not defined $fontdef) { $fontdef = $value; } if ($tag eq 'COPYRIGHT' and not defined $copyright) { $copyright = $value; } if ($tag eq 'BBX') { my ($tag, $wid, $hei, $left, $bottom) = split / /; if (defined $bottom) { $left[$currentchar] = $left; $bottom[$currentchar] = $bottom; } } if ($gobitmap) { my $value = pack 'H*', $_; my $bits = unpack 'B*', $value; $bits = ('0' x $left[$currentchar]) . $bits; $bits .= '0' x ($width - length $bits); $bits = substr $bits, 0, $width; $data[$currentchar] .= $bits; } if ($tag eq 'BITMAP') { $gobitmap = 1; $data[$currentchar] = ''; } } my $info = <<"EOF"; /* This is a header file for gd font, generated using bdftogd version $VERSION by Jan Pazdziora, adelton\@fi.muni.cz from bdf font $fontdef at $now. EOF if (defined $copyright) { $info .= <<"EOF"; The original bdf was holding following copyright: $copyright */ EOF } else { $info .= <<"EOF"; No copyright info was found in the original bdf. */ EOF } open FILEC, "> $filename.c" or die "Error writing $filename.c: $!\n"; open FILEH, "> $filename.h" or die "Error writing $filename.h: $!\n"; print FILEC <<"EOF"; $info #include "$filename.h" char ${gdname}Data[] = { EOF $minchar = 0 unless defined $minchar; $maxchar = 255 unless defined $maxchar; for (my $i = $minchar; $i <= $maxchar; $i++) { $data[$i] = '' unless defined $data[$i]; $data[$i] = '0' x ($width * $height - length $data[$i]) . $data[$i]; print FILEC "/* Char $i */\n"; for my $line (0 .. $height - 1) { print FILEC join ',', split(//, substr($data[$i], $line * $width, $width)), "\n"; } print FILEC "\n"; next; for my $line (0 .. $height - 1) { print substr($data[$i], $line * $width, $width), "\n"; } } my $capdef = "\U_${filename}_H_"; print FILEC <<"EOF"; }; gdFont ${gdname}Rep = { @{[ $maxchar - $minchar + 1]}, $minchar, $width, $height, ${gdname}Data }; gdFontPtr ${gdname} = &${gdname}Rep; /* This file has not been truncated. */ EOF close FILEC; print FILEH <<"EOF"; #ifndef $capdef #define $capdef 1 $info #include "gd.h" extern gdFontPtr $gdname; #endif EOF 1; libwmf-0.2.8.4/src/extra/gd/bresenham_ellipse0000644000077100007710000000427007301470216020416 0ustar fjffjf00000000000000void gdImageEllipse (gdImagePtr im, int cx, int cy, int w, int h, int color) { long d, b_sq, b_sq_4, b_sq_6; long a_sq, a_sq_4, a_sq_6; int x, y, switchem; long lsqrt (long); int pix, half, pstart; int thick = im->thick; half = thick / 2; w /= 2; /* ImageArc uses diameter, not radius */ h /= 2; d = 2 * (long) h *h + (long) w *w - 2 * (long) w *w * h; b_sq = (long) h *h; b_sq_4 = 4 * (long) h *h; b_sq_6 = 6 * (long) h *h; a_sq = (long) w *w; a_sq_4 = 4 * (long) w *w; a_sq_6 = 6 * (long) w *w; x = 0; y = -h; switchem = a_sq / lsqrt (a_sq + b_sq); while (x <= switchem) { pstart = y - half; for (pix = pstart; pix < pstart + thick; pix++) { gdImageSetPixel (im, cx + x, cy + pix, color); gdImageSetPixel (im, cx - x, cy + pix, color); gdImageSetPixel (im, cx + x, cy - pix, color); gdImageSetPixel (im, cx - x, cy - pix, color); } if (d < 0) d += b_sq_4 * x++ + b_sq_6; else d += b_sq_4 * x++ + b_sq_6 + a_sq_4 * (++y); } /* Middlesplat! ** Go a little further if the thickness is not nominal... */ if (thick > 1) { int xp = x; int yp = y; int dp = d; int thick2 = thick + 2; int half2 = half + 1; while (xp <= switchem + half) { pstart = yp - half2; for (pix = pstart; pix < pstart + thick2; pix++) { gdImageSetPixel (im, cx + xp, cy + pix, color); gdImageSetPixel (im, cx - xp, cy + pix, color); gdImageSetPixel (im, cx + xp, cy - pix, color); gdImageSetPixel (im, cx - xp, cy - pix, color); } if (dp < 0) dp += b_sq_4 * xp++ + b_sq_6; else dp += b_sq_4 * xp++ + b_sq_6 + a_sq_4 * (++yp); } } d += -2 * (long) b_sq + 2 * (long) a_sq - 2 * (long) b_sq *(x - 1) + 2 * (long) a_sq *(y - 1); while (y <= 0) { pstart = x - half; for (pix = pstart; pix < pstart + thick; pix++) { gdImageSetPixel (im, cx + pix, cy + y, color); gdImageSetPixel (im, cx - pix, cy + y, color); gdImageSetPixel (im, cx + pix, cy - y, color); gdImageSetPixel (im, cx - pix, cy - y, color); } if (d < 0) d += a_sq_4 * y++ + a_sq_6 + b_sq_4 * (++x); else d += a_sq_4 * y++ + a_sq_6; } } libwmf-0.2.8.4/src/extra/gd/errs0000644000077100007710000000027607301470216015712 0ustar fjffjf00000000000000gcc -I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include -O -DHAVE_LIBXPM -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE -c gd_gd2.c -o gd_gd2.o libwmf-0.2.8.4/src/extra/gd/gd2copypal.c0000644000077100007710000000247007301470216017222 0ustar fjffjf00000000000000 #include #include "gd.h" /* A short program which converts a .png file into a .gd file, for your convenience in creating images on the fly from a basis image that must be loaded quickly. The .gd format is not intended to be a general-purpose format. */ int main (int argc, char **argv) { gdImagePtr im; gdImagePtr pal; FILE *in, *out; if (argc != 3) { fprintf (stderr, "Usage: gd2copypal palettefile.gd2 filename.gd2\n"); exit (1); } in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Palette file does not exist!\n"); exit (1); } pal = gdImageCreateFromGd2 (in); fclose (in); if (!pal) { fprintf (stderr, "Palette is not in GD2 format!\n"); exit (1); } in = fopen (argv[2], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } im = gdImageCreateFromGd2 (in); fclose (in); if (!im) { fprintf (stderr, "Input is not in GD2 format!\n"); exit (1); } gdImagePaletteCopy (im, pal); out = fopen (argv[2], "wb"); if (!out) { fprintf (stderr, "Output file cannot be written to!\n"); gdImageDestroy (im); exit (1); } gdImageGd2 (im, out, 128, 2); fclose (out); gdImageDestroy (pal); gdImageDestroy (im); return 0; } libwmf-0.2.8.4/src/extra/gd/gdhelpers.h0000644000077100007710000000076607260330333017145 0ustar fjffjf00000000000000#ifndef GDHELPERS_H #define GDHELPERS_H 1 /* TBB: strtok_r is not universal; provide an implementation of it. */ extern char *gd_strtok_r(char *s, char *sep, char **state); /* These functions wrap memory management. gdFree is in gd.h, where callers can utilize it to correctly free memory allocated by these functions with the right version of free(). */ void *gdCalloc(size_t nmemb, size_t size); void *gdMalloc(size_t size); void *gdRealloc(void *ptr, size_t size); #endif /* GDHELPERS_H */ libwmf-0.2.8.4/src/extra/gd/gd2time.c0000644000077100007710000000232107301470216016504 0ustar fjffjf00000000000000 #include #include /* for atoi */ #include /* For time */ #include "gd.h" /* A short program which converts a .png file into a .gd file, for your convenience in creating images on the fly from a basis image that must be loaded quickly. The .gd format is not intended to be a general-purpose format. */ int main (int argc, char **argv) { gdImagePtr im; FILE *in; int x, y, w, h; int c; int i; int t0; if (argc != 7) { fprintf (stderr, "Usage: gd2time filename.gd count x y w h\n"); exit (1); } c = atoi (argv[2]); x = atoi (argv[3]); y = atoi (argv[4]); w = atoi (argv[5]); h = atoi (argv[6]); printf ("Extracting %d times from (%d, %d), size is %dx%d\n", c, x, y, w, h); t0 = time (0); for (i = 0; i < c; i++) { in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } im = gdImageCreateFromGd2Part (in, x, y, w, h); fclose (in); if (!im) { fprintf (stderr, "Error reading source file!\n"); exit (1); } gdImageDestroy (im); }; t0 = time (0) - t0; printf ("%d seconds to extract (& destroy) %d times\n", t0, c); return 0; } libwmf-0.2.8.4/src/extra/gd/gd2topng.c0000644000077100007710000000171207301470216016700 0ustar fjffjf00000000000000 #include #include "gd.h" /* A short program which converts a .png file into a .gd file, for your convenience in creating images on the fly from a basis image that must be loaded quickly. The .gd format is not intended to be a general-purpose format. */ int main (int argc, char **argv) { gdImagePtr im; FILE *in, *out; if (argc != 3) { fprintf (stderr, "Usage: gd2topng filename.gd2 filename.png\n"); exit (1); } in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } im = gdImageCreateFromGd2 (in); fclose (in); if (!im) { fprintf (stderr, "Input is not in GD2 format!\n"); exit (1); } out = fopen (argv[2], "wb"); if (!out) { fprintf (stderr, "Output file cannot be written to!\n"); gdImageDestroy (im); exit (1); } gdImagePng (im, out); fclose (out); gdImageDestroy (im); return 0; } libwmf-0.2.8.4/src/extra/gd/gd_arc_f_buggy.c0000644000077100007710000003715607301470216020110 0ustar fjffjf00000000000000/* This is potentially great stuff, but fails against the test program at the end. This would probably be much more efficent than the implementation currently in gd.c if the errors in the output were corrected. TBB */ #if 0 #include "gd.h" #include /* Courtesy of F J Franklin. */ static gdPoint gdArcClosest (int width, int height, int angle); void gdImageFilledEllipse (gdImagePtr im, int cx, int cy, int width, int height, int color) { gdImageFilledArc (im, cx, cy, width, height, 0, 360, color, gdChord); } void gdImageFilledArc (gdImagePtr im, int cx, int cy, int width, int height, int s, int e, int color, int style) { gdPoint pt[7]; gdPoint axis_pt[4]; int angle; int have_s = 0; int have_e = 0; int flip_x = 0; int flip_y = 0; int conquer = 0; int i; int a; int b; int x; int y; long s_sin = 0; long s_cos = 0; long e_sin = 0; long e_cos = 0; long w; /* a * 2 */ long h; /* b * 2 */ long x2; /* x * 2 */ long y2; /* y * 2 */ long lx2; /* x * 2 (line) */ long ly2; /* y * 2 (line) */ long ws; /* (a * 2)^2 */ long hs; /* (b * 2)^2 */ long whs; /* (a * 2)^2 * (b * 2)^2 */ long g; /* decision variable */ long lg; /* decision variable (line) */ width = (width & 1) ? (width + 1) : (width); height = (height & 1) ? (height + 1) : (height); a = width / 2; b = height / 2; axis_pt[0].x = a; axis_pt[0].y = 0; axis_pt[1].x = 0; axis_pt[1].y = b; axis_pt[2].x = -a; axis_pt[2].y = 0; axis_pt[3].x = 0; axis_pt[3].y = -b; if (s == e) return; if ((e - s) >= 360) { s = 0; e = 0; } while (s < 0) s += 360; while (s >= 360) s -= 360; while (e < 0) e += 360; while (e >= 360) e -= 360; if (e <= s) e += 360; /* I'm assuming a chord-rule at the moment. Need to add origin to get a * pie-rule, but will need to set chord-rule before recursion... */ for (i = 0; i < 4; i++) { if ((s < (i + 1) * 90) && (e > (i + 1) * 90)) { gdImageFilledArc (im, cx, cy, width, height, s, (i + 1) * 90, color, gdChord); pt[0] = gdArcClosest (width, height, s); pt[0].x += cx; pt[0].y += cy; pt[1].x = cx + axis_pt[(i + 1) & 3].x; pt[1].y = cy + axis_pt[(i + 1) & 3].y; if (e <= (i + 2) * 90) { gdImageFilledArc (im, cx, cy, width, height, (i + 1) * 90, e, color, gdChord); pt[2] = gdArcClosest (width, height, e); pt[2].x += cx; pt[2].y += cy; if (style == gdChord) { gdImageFilledPolygon (im, pt, 3, color); gdImagePolygon (im, pt, 3, color); } else if (style == gdPie) { pt[3].x = cx; pt[3].y = cy; gdImageFilledPolygon (im, pt, 4, color); gdImagePolygon (im, pt, 4, color); } } else { gdImageFilledArc (im, cx, cy, width, height, (i + 1) * 90, (i + 2) * 90, color, gdChord); pt[2].x = cx + axis_pt[(i + 2) & 3].x; pt[2].y = cy + axis_pt[(i + 2) & 3].y; if (e <= (i + 3) * 90) { gdImageFilledArc (im, cx, cy, width, height, (i + 2) * 90, e, color, gdChord); pt[3] = gdArcClosest (width, height, e); pt[3].x += cx; pt[3].y += cy; if (style == gdChord) { gdImageFilledPolygon (im, pt, 4, color); gdImagePolygon (im, pt, 4, color); } else if (style == gdPie) { pt[4].x = cx; pt[4].y = cy; gdImageFilledPolygon (im, pt, 5, color); gdImagePolygon (im, pt, 5, color); } } else { gdImageFilledArc (im, cx, cy, width, height, (i + 2) * 90, (i + 3) * 90, color, gdChord); pt[3].x = cx + axis_pt[(i + 3) & 3].x; pt[3].y = cy + axis_pt[(i + 3) & 3].y; if (e <= (i + 4) * 90) { gdImageFilledArc (im, cx, cy, width, height, (i + 3) * 90, e, color, gdChord); pt[4] = gdArcClosest (width, height, e); pt[4].x += cx; pt[4].y += cy; if (style == gdChord) { gdImageFilledPolygon (im, pt, 5, color); gdImagePolygon (im, pt, 5, color); } else if (style == gdPie) { pt[5].x = cx; pt[5].y = cy; gdImageFilledPolygon (im, pt, 6, color); gdImagePolygon (im, pt, 6, color); } } else { gdImageFilledArc (im, cx, cy, width, height, (i + 3) * 90, (i + 4) * 90, color, gdChord); pt[4].x = cx + axis_pt[(i + 4) & 3].x; pt[4].y = cy + axis_pt[(i + 4) & 3].y; gdImageFilledArc (im, cx, cy, width, height, (i + 4) * 90, e, color, gdChord); pt[5] = gdArcClosest (width, height, e); pt[5].x += cx; pt[5].y += cy; if (style == gdChord) { gdImageFilledPolygon (im, pt, 6, color); gdImagePolygon (im, pt, 6, color); } else if (style == gdPie) { pt[6].x = cx; pt[6].y = cy; gdImageFilledPolygon (im, pt, 7, color); gdImagePolygon (im, pt, 7, color); } } } } return; } } /* At this point we have only arcs that lies within a quadrant - * map this to first quadrant... */ if ((s >= 90) && (e <= 180)) { angle = s; s = 180 - e; e = 180 - angle; flip_x = 1; } if ((s >= 180) && (e <= 270)) { s = s - 180; e = e - 180; flip_x = 1; flip_y = 1; } if ((s >= 270) && (e <= 360)) { angle = s; s = 360 - e; e = 360 - angle; flip_y = 1; } if (s == 0) { s_sin = 0; s_cos = (long) ((double) 32768); } else { s_sin = (long) ((double) 32768 * sin ((double) s * M_PI / (double) 180)); s_cos = (long) ((double) 32768 * cos ((double) s * M_PI / (double) 180)); } if (e == 0) { e_sin = (long) ((double) 32768); e_cos = 0; } else { e_sin = (long) ((double) 32768 * sin ((double) e * M_PI / (double) 180)); e_cos = (long) ((double) 32768 * cos ((double) e * M_PI / (double) 180)); } w = (long) width; h = (long) height; ws = w * w; hs = h * h; whs = 1; while ((ws > 32768) || (hs > 32768)) { ws = (ws + 1) / 2; /* Unfortunate limitations on integers makes */ hs = (hs + 1) / 2; /* drawing large ellipses problematic... */ whs *= 2; } while ((ws * hs) > (0x04000000L / whs)) { ws = (ws + 1) / 2; hs = (hs + 1) / 2; whs *= 2; } whs *= ws * hs; pt[0].x = w / 2; pt[0].y = 0; pt[2].x = 0; pt[2].y = h / 2; have_s = 0; have_e = 0; if (s == 0) have_s = 1; if (e == 90) have_e = 1; x2 = w; y2 = 0; /* Starting point is exactly on ellipse */ g = x2 - 1; g = g * g * hs + 4 * ws - whs; while ((x2 * hs) > (y2 * ws)) /* Keep |tangent| > 1 */ { y2 += 2; g += ws * 4 * (y2 + 1); if (g > 0) /* Need to drop */ { x2 -= 2; g -= hs * 4 * x2; } if ((have_s == 0) && ((s_sin * x2) <= (y2 * s_cos))) { pt[0].x = (int) (x2 / 2); pt[0].y = (int) (y2 / 2); have_s = 1; } if ((have_e == 0) && ((e_sin * x2) <= (y2 * e_cos))) { pt[2].x = (int) (x2 / 2); pt[2].y = (int) (y2 / 2); have_e = 1; } } pt[1].x = (int) (x2 / 2); pt[1].y = (int) (y2 / 2); x2 = 0; y2 = h; /* Starting point is exactly on ellipse */ g = y2 - 1; g = g * g * ws + 4 * hs - whs; while ((x2 * hs) < (y2 * ws)) { x2 += 2; g += hs * 4 * (x2 + 1); if (g > 0) /* Need to drop */ { y2 -= 2; g -= ws * 4 * y2; } if ((have_s == 0) && ((s_sin * x2) >= (y2 * s_cos))) { pt[0].x = (int) (x2 / 2); pt[0].y = (int) (y2 / 2); have_s = 1; } if ((have_e == 0) && ((e_sin * x2) >= (y2 * e_cos))) { pt[2].x = (int) (x2 / 2); pt[2].y = (int) (y2 / 2); have_e = 1; } } if ((have_s == 0) || (have_e == 0)) return; /* Bizarre case */ if (style == gdPie) { pt[3] = pt[0]; pt[4] = pt[1]; pt[5] = pt[2]; pt[0].x = cx + (flip_x ? (-pt[0].x) : pt[0].x); pt[0].y = cy + (flip_y ? (-pt[0].y) : pt[0].y); pt[1].x = cx; pt[1].y = cy; pt[2].x = cx + (flip_x ? (-pt[2].x) : pt[2].x); pt[2].y = cy + (flip_y ? (-pt[2].y) : pt[2].y); gdImageFilledPolygon (im, pt, 3, color); gdImagePolygon (im, pt, 3, color); pt[0] = pt[3]; pt[1] = pt[4]; pt[2] = pt[5]; } if (((s_cos * hs) > (s_sin * ws)) && ((e_cos * hs) < (e_sin * ws))) { /* the points are on different parts of the curve... * this is too tricky to try to handle, so divide and conquer: */ pt[3] = pt[0]; pt[4] = pt[1]; pt[5] = pt[2]; pt[0].x = cx + (flip_x ? (-pt[0].x) : pt[0].x); pt[0].y = cy + (flip_y ? (-pt[0].y) : pt[0].y); pt[1].x = cx + (flip_x ? (-pt[1].x) : pt[1].x); pt[1].y = cy + (flip_y ? (-pt[1].y) : pt[1].y); pt[2].x = cx + (flip_x ? (-pt[2].x) : pt[2].x); pt[2].y = cy + (flip_y ? (-pt[2].y) : pt[2].y); gdImageFilledPolygon (im, pt, 3, color); gdImagePolygon (im, pt, 3, color); pt[0] = pt[3]; pt[2] = pt[4]; conquer = 1; } if (conquer || (((s_cos * hs) > (s_sin * ws)) && ((e_cos * hs) > (e_sin * ws)))) { /* This is the best bit... */ /* steep line + ellipse */ /* go up & left from pt[0] to pt[2] */ x2 = w; y2 = 0; /* Starting point is exactly on ellipse */ g = x2 - 1; g = g * g * hs + 4 * ws - whs; while ((x2 * hs) > (y2 * ws)) /* Keep |tangent| > 1 */ { if ((s_sin * x2) <= (y2 * s_cos)) break; y2 += 2; g += ws * 4 * (y2 + 1); if (g > 0) /* Need to drop */ { x2 -= 2; g -= hs * 4 * x2; } } lx2 = x2; ly2 = y2; lg = lx2 * (pt[0].y - pt[2].y) - ly2 * (pt[0].x - pt[2].x); lg = (lx2 - 1) * (pt[0].y - pt[2].y) - (ly2 + 2) * (pt[0].x - pt[2].x) - lg; while (y2 < (2 * pt[2].y)) { y2 += 2; g += ws * 4 * (y2 + 1); if (g > 0) /* Need to drop */ { x2 -= 2; g -= hs * 4 * x2; } ly2 += 2; lg -= 2 * (pt[0].x - pt[2].x); if (lg < 0) /* Need to drop */ { lx2 -= 2; lg -= 2 * (pt[0].y - pt[2].y); } y = (int) (y2 / 2); for (x = (int) (lx2 / 2); x <= (int) (x2 / 2); x++) { gdImageSetPixel (im, ((flip_x) ? (cx - x) : (cx + x)), ((flip_y) ? (cy - y) : (cy + y)), color); } } } if (conquer) { pt[0] = pt[4]; pt[2] = pt[5]; } if (conquer || (((s_cos * hs) < (s_sin * ws)) && ((e_cos * hs) < (e_sin * ws)))) { /* This is the best bit... */ /* gradual line + ellipse */ /* go down & right from pt[2] to pt[0] */ x2 = 0; y2 = h; /* Starting point is exactly on ellipse */ g = y2 - 1; g = g * g * ws + 4 * hs - whs; while ((x2 * hs) < (y2 * ws)) { x2 += 2; g += hs * 4 * (x2 + 1); if (g > 0) /* Need to drop */ { y2 -= 2; g -= ws * 4 * y2; } if ((e_sin * x2) >= (y2 * e_cos)) break; } lx2 = x2; ly2 = y2; lg = lx2 * (pt[0].y - pt[2].y) - ly2 * (pt[0].x - pt[2].x); lg = (lx2 + 2) * (pt[0].y - pt[2].y) - (ly2 - 1) * (pt[0].x - pt[2].x) - lg; while (x2 < (2 * pt[0].x)) { x2 += 2; g += hs * 4 * (x2 + 1); if (g > 0) /* Need to drop */ { y2 -= 2; g -= ws * 4 * y2; } lx2 += 2; lg += 2 * (pt[0].y - pt[2].y); if (lg < 0) /* Need to drop */ { ly2 -= 2; lg += 2 * (pt[0].x - pt[2].x); } x = (int) (x2 / 2); for (y = (int) (ly2 / 2); y <= (int) (y2 / 2); y++) { gdImageSetPixel (im, ((flip_x) ? (cx - x) : (cx + x)), ((flip_y) ? (cy - y) : (cy + y)), color); } } } } static gdPoint gdArcClosest (int width, int height, int angle) { gdPoint pt; int flip_x = 0; int flip_y = 0; long a_sin = 0; long a_cos = 0; long w; /* a * 2 */ long h; /* b * 2 */ long x2; /* x * 2 */ long y2; /* y * 2 */ long ws; /* (a * 2)^2 */ long hs; /* (b * 2)^2 */ long whs; /* (a * 2)^2 * (b * 2)^2 */ long g; /* decision variable */ w = (long) ((width & 1) ? (width + 1) : (width)); h = (long) ((height & 1) ? (height + 1) : (height)); while (angle < 0) angle += 360; while (angle >= 360) angle -= 360; if (angle == 0) { pt.x = w / 2; pt.y = 0; return (pt); } if (angle == 90) { pt.x = 0; pt.y = h / 2; return (pt); } if (angle == 180) { pt.x = -w / 2; pt.y = 0; return (pt); } if (angle == 270) { pt.x = 0; pt.y = -h / 2; return (pt); } pt.x = 0; pt.y = 0; if ((angle > 90) && (angle < 180)) { angle = 180 - angle; flip_x = 1; } if ((angle > 180) && (angle < 270)) { angle = angle - 180; flip_x = 1; flip_y = 1; } if ((angle > 270) && (angle < 360)) { angle = 360 - angle; flip_y = 1; } a_sin = (long) ((double) 32768 * sin ((double) angle * M_PI / (double) 180)); a_cos = (long) ((double) 32768 * cos ((double) angle * M_PI / (double) 180)); ws = w * w; hs = h * h; whs = 1; while ((ws > 32768) || (hs > 32768)) { ws = (ws + 1) / 2; /* Unfortunate limitations on integers makes */ hs = (hs + 1) / 2; /* drawing large ellipses problematic... */ whs *= 2; } while ((ws * hs) > (0x04000000L / whs)) { ws = (ws + 1) / 2; hs = (hs + 1) / 2; whs *= 2; } whs *= ws * hs; if ((a_cos * hs) > (a_sin * ws)) { x2 = w; y2 = 0; /* Starting point is exactly on ellipse */ g = x2 - 1; g = g * g * hs + 4 * ws - whs; while ((x2 * hs) > (y2 * ws)) /* Keep |tangent| > 1 */ { y2 += 2; g += ws * 4 * (y2 + 1); if (g > 0) /* Need to drop */ { x2 -= 2; g -= hs * 4 * x2; } if ((a_sin * x2) <= (y2 * a_cos)) { pt.x = (int) (x2 / 2); pt.y = (int) (y2 / 2); break; } } } else { x2 = 0; y2 = h; /* Starting point is exactly on ellipse */ g = y2 - 1; g = g * g * ws + 4 * hs - whs; while ((x2 * hs) < (y2 * ws)) { x2 += 2; g += hs * 4 * (x2 + 1); if (g > 0) /* Need to drop */ { y2 -= 2; g -= ws * 4 * y2; } if ((a_sin * x2) >= (y2 * a_cos)) { pt.x = (int) (x2 / 2); pt.y = (int) (y2 / 2); break; } } } if (flip_x) pt.x = -pt.x; if (flip_y) pt.y = -pt.y; return (pt); } #include "gd.h" #include #include #define WIDTH 500 #define HEIGHT 300 int main (int argc, char *argv[]) { gdImagePtr im = gdImageCreate (WIDTH, HEIGHT); int white = gdImageColorResolve (im, 0xFF, 0xFF, 0xFF), black = gdImageColorResolve (im, 0, 0, 0), red = gdImageColorResolve (im, 0xFF, 0xA0, 0xA0); FILE *out; /* filled arc - circle */ gdImageFilledArc (im, WIDTH / 5, HEIGHT / 4, 200, 200, 45, 90, red, gdPie); gdImageArc (im, WIDTH / 5, HEIGHT / 4, 200, 200, 45, 90, black); /* filled arc - ellipse */ gdImageFilledArc (im, WIDTH / 2, HEIGHT / 4, 200, 150, 45, 90, red, gdPie); gdImageArc (im, WIDTH / 2, HEIGHT / 4, 200, 150, 45, 90, black); /* reference lines */ gdImageLine (im, 0, HEIGHT / 4, WIDTH, HEIGHT / 4, black); gdImageLine (im, WIDTH / 5, 0, WIDTH / 5, HEIGHT, black); gdImageLine (im, WIDTH / 2, 0, WIDTH / 2, HEIGHT, black); gdImageLine (im, WIDTH / 2, HEIGHT / 4, WIDTH / 2 + 300, HEIGHT / 4 + 300, black); gdImageLine (im, WIDTH / 5, HEIGHT / 4, WIDTH / 5 + 300, HEIGHT / 4 + 300, black); /* TBB: Write img to test/arctest.png */ out = fopen ("test/arctest.png", "wb"); if (!out) { fprintf (stderr, "Can't create test/arctest.png\n"); exit (1); } gdImagePng (im, out); fclose (out); fprintf (stderr, "Test image written to test/arctest.png\n"); /* Destroy it */ gdImageDestroy (im); return 0; } #endif libwmf-0.2.8.4/src/extra/gd/tc0000644000077100007710000000121507260330341015335 0ustar fjffjf00000000000000 if (im->trueColor) { a->tweencolor = gdTrueColorAlpha(im, (pixel * gdTrueColorGetRed(fg) + npixel * gdTrueColorGetRed(bg)) / NUMCOLORS, (pixel * gdTrueColorGetGreen(fg) + npixel * gdTrueColorGetGreen(bg)) / NUMCOLORS, (pixel * gdTrueColorGetBlue(fg) + npixel * gdTrueColorGetBlue(bg)) / NUMCOLORS, (pixel * gdTrueColorGetAlpha(fg) + npixel * gdTrueColorGetAlpha(bg)) / NUMCOLORS); } else { a->tweencolor = gdImageColorResolve(im, (pixel * im->red[fg] + npixel * im->red[bg]) / NUMCOLORS, (pixel * im->green[fg] + npixel * im->green[bg]) / NUMCOLORS, (pixel * im->blue[fg] + npixel * im->blue[bg]) / NUMCOLORS); } libwmf-0.2.8.4/src/extra/gd/gddemo.c0000644000077100007710000000627507301470216016424 0ustar fjffjf00000000000000#include #include "gd.h" #include "gdfontg.h" #include "gdfonts.h" int main (void) { /* Input and output files */ FILE *in; FILE *out; /* Input and output images */ gdImagePtr im_in = 0, im_out = 0; /* Brush image */ gdImagePtr brush; /* Color indexes */ int white; int blue; int red; int green; /* Points for polygon */ gdPoint points[3]; /* Create output image, 256 by 256 pixels, true color. */ im_out = gdImageCreateTrueColor (256, 256); /* First color allocated is background. */ white = gdImageColorAllocate (im_out, 255, 255, 255); /* Set transparent color. */ gdImageColorTransparent (im_out, white); /* Try to load demoin.png and paste part of it into the output image. */ in = fopen ("demoin.png", "rb"); if (!in) { fprintf (stderr, "Can't load source image; this demo\n"); fprintf (stderr, "is much more impressive if demoin.png\n"); fprintf (stderr, "is available.\n"); im_in = 0; } else { im_in = gdImageCreateFromPng (in); fclose (in); /* Now copy, and magnify as we do so */ gdImageCopyResized (im_out, im_in, 32, 32, 0, 0, 192, 192, 255, 255); } red = gdImageColorAllocate (im_out, 255, 0, 0); green = gdImageColorAllocate (im_out, 0, 255, 0); blue = gdImageColorAllocate (im_out, 0, 0, 255); /* Rectangle */ gdImageLine (im_out, 16, 16, 240, 16, green); gdImageLine (im_out, 240, 16, 240, 240, green); gdImageLine (im_out, 240, 240, 16, 240, green); gdImageLine (im_out, 16, 240, 16, 16, green); /* Circle */ gdImageArc (im_out, 128, 128, 60, 20, 0, 720, blue); /* Arc */ gdImageArc (im_out, 128, 128, 40, 40, 90, 270, blue); /* Flood fill: doesn't do much on a continuously variable tone jpeg original. */ gdImageFill (im_out, 8, 8, blue); /* Polygon */ points[0].x = 64; points[0].y = 0; points[1].x = 0; points[1].y = 128; points[2].x = 128; points[2].y = 128; gdImageFilledPolygon (im_out, points, 3, green); /* Brush. A fairly wild example also involving a line style! */ if (im_in) { int style[8]; brush = gdImageCreateTrueColor (16, 16); gdImageCopyResized (brush, im_in, 0, 0, 0, 0, gdImageSX (brush), gdImageSY (brush), gdImageSX (im_in), gdImageSY (im_in)); gdImageSetBrush (im_out, brush); /* With a style, so they won't overprint each other. Normally, they would, yielding a fat-brush effect. */ style[0] = 0; style[1] = 0; style[2] = 0; style[3] = 0; style[4] = 0; style[5] = 0; style[6] = 0; style[7] = 1; gdImageSetStyle (im_out, style, 8); /* Draw the styled, brushed line */ gdImageLine (im_out, 0, 255, 255, 0, gdStyledBrushed); } /* Text */ gdImageString (im_out, gdFontGiant, 32, 32, (unsigned char *) "hi", red); gdImageStringUp (im_out, gdFontSmall, 64, 64, (unsigned char *) "hi", red); /* Make output image interlaced (progressive, in the case of JPEG) */ gdImageInterlace (im_out, 1); out = fopen ("demoout.png", "wb"); /* Write PNG */ gdImagePng (im_out, out); fclose (out); gdImageDestroy (im_out); if (im_in) { gdImageDestroy (im_in); } return 0; } libwmf-0.2.8.4/src/extra/gd/gdparttopng.c0000644000077100007710000000227107301470216017506 0ustar fjffjf00000000000000#include #include /* For atoi */ #include "gd.h" /* A short program which converts a .png file into a .gd file, for your convenience in creating images on the fly from a basis image that must be loaded quickly. The .gd format is not intended to be a general-purpose format. */ int main (int argc, char **argv) { gdImagePtr im; FILE *in, *out; int x, y, w, h; if (argc != 7) { fprintf (stderr, "Usage: gdparttopng filename.gd filename.png x y w h\n"); exit (1); } in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } x = atoi (argv[3]); y = atoi (argv[4]); w = atoi (argv[5]); h = atoi (argv[6]); printf ("Extracting from (%d, %d), size is %dx%d\n", x, y, w, h); im = gdImageCreateFromGd2Part (in, x, y, w, h); fclose (in); if (!im) { fprintf (stderr, "Input is not in PNG format!\n"); exit (1); } out = fopen (argv[2], "wb"); if (!out) { fprintf (stderr, "Output file cannot be written to!\n"); gdImageDestroy (im); exit (1); } gdImagePng (im, out); fclose (out); gdImageDestroy (im); return 0; } libwmf-0.2.8.4/src/extra/gd/gdtest.c0000644000077100007710000002205707301470216016453 0ustar fjffjf00000000000000#include #ifdef _WIN32 #include int unlink (const char *filename) { return _unlink (filename); } #else #include /* for getpid(), unlink() */ #endif #include "gd.h" void CompareImages (char *msg, gdImagePtr im1, gdImagePtr im2); static int freadWrapper (void *context, char *buf, int len); static int fwriteWrapper (void *context, const char *buffer, int len); int main (int argc, char **argv) { gdImagePtr im, ref, im2, im3; FILE *in, *out; void *iptr; int sz; gdIOCtxPtr ctx; char of[256]; int colRed, colBlu; gdSource imgsrc; gdSink imgsnk; int foreground; int i; if (argc != 2) { fprintf (stderr, "Usage: gdtest filename.png\n"); exit (1); } in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } im = gdImageCreateFromPng (in); rewind (in); ref = gdImageCreateFromPng (in); fclose (in); printf ("Reference File has %d Palette entries\n", ref->colorsTotal); CompareImages ("Initial Versions", ref, im); /* */ /* Send to PNG File then Ptr */ /* */ sprintf (of, "%s.png", argv[1]); out = fopen (of, "wb"); gdImagePng (im, out); fclose (out); in = fopen (of, "rb"); if (!in) { fprintf (stderr, "PNG Output file does not exist!\n"); exit (1); } im2 = gdImageCreateFromPng (in); fclose (in); CompareImages ("GD->PNG File->GD", ref, im2); unlink (of); gdImageDestroy (im2); iptr = gdImagePngPtr (im, &sz); ctx = gdNewDynamicCtx (sz, iptr); im2 = gdImageCreateFromPngCtx (ctx); CompareImages ("GD->PNG ptr->GD", ref, im2); gdImageDestroy (im2); ctx->free (ctx); /* */ /* Send to GD2 File then Ptr */ /* */ sprintf (of, "%s.gd2", argv[1]); out = fopen (of, "wb"); gdImageGd2 (im, out, 128, 2); fclose (out); in = fopen (of, "rb"); if (!in) { fprintf (stderr, "GD2 Output file does not exist!\n"); exit (1); } im2 = gdImageCreateFromGd2 (in); fclose (in); CompareImages ("GD->GD2 File->GD", ref, im2); unlink (of); gdImageDestroy (im2); iptr = gdImageGd2Ptr (im, 128, 2, &sz); /*printf("Got ptr %d (size %d)\n",iptr, sz); */ ctx = gdNewDynamicCtx (sz, iptr); /*printf("Got ctx %d\n",ctx); */ im2 = gdImageCreateFromGd2Ctx (ctx); /*printf("Got img2 %d\n",im2); */ CompareImages ("GD->GD2 ptr->GD", ref, im2); gdImageDestroy (im2); ctx->free (ctx); /* */ /* Send to GD File then Ptr */ /* */ sprintf (of, "%s.gd", argv[1]); out = fopen (of, "wb"); gdImageGd (im, out); fclose (out); in = fopen (of, "rb"); if (!in) { fprintf (stderr, "GD Output file does not exist!\n"); exit (1); } im2 = gdImageCreateFromGd (in); fclose (in); CompareImages ("GD->GD File->GD", ref, im2); unlink (of); gdImageDestroy (im2); iptr = gdImageGdPtr (im, &sz); /*printf("Got ptr %d (size %d)\n",iptr, sz); */ ctx = gdNewDynamicCtx (sz, iptr); /*printf("Got ctx %d\n",ctx); */ im2 = gdImageCreateFromGdCtx (ctx); /*printf("Got img2 %d\n",im2); */ CompareImages ("GD->GD ptr->GD", ref, im2); gdImageDestroy (im2); ctx->free (ctx); /* ** Test gdImageCreateFromPngSource' * */ in = fopen (argv[1], "rb"); imgsrc.source = freadWrapper; imgsrc.context = in; im2 = gdImageCreateFromPngSource (&imgsrc); fclose (in); if (im2 == NULL) { printf ("GD Source: ERROR Null returned by gdImageCreateFromPngSource\n"); } else { CompareImages ("GD Source", ref, im2); gdImageDestroy (im2); }; /* ** Test gdImagePngToSink' * */ sprintf (of, "%s.snk", argv[1]); out = fopen (of, "wb"); imgsnk.sink = fwriteWrapper; imgsnk.context = out; gdImagePngToSink (im, &imgsnk); fclose (out); in = fopen (of, "rb"); if (!in) { fprintf (stderr, "GD Sink: ERROR - GD Sink Output file does not exist!\n"); } else { im2 = gdImageCreateFromPng (in); fclose (in); CompareImages ("GD Sink", ref, im2); gdImageDestroy (im2); }; unlink (of); /* */ /* Test Extraction */ /* */ in = fopen ("test/gdtest_200_300_150_100.png", "rb"); if (!in) { fprintf (stderr, "gdtest_200_300_150_100.png does not exist!\n"); exit (1); } im2 = gdImageCreateFromPng (in); fclose (in); in = fopen ("test/gdtest.gd2", "rb"); if (!in) { fprintf (stderr, "gdtest.gd2 does not exist!\n"); exit (1); } im3 = gdImageCreateFromGd2Part (in, 200, 300, 150, 100); fclose (in); CompareImages ("GD2Part (gdtest_200_300_150_100.png, gdtest.gd2(part))", im2, im3); gdImageDestroy (im2); gdImageDestroy (im3); /* */ /* Copy Blend */ /* */ in = fopen ("test/gdtest.png", "rb"); if (!in) { fprintf (stderr, "gdtest.png does not exist!\n"); exit (1); } im2 = gdImageCreateFromPng (in); fclose (in); im3 = gdImageCreate (100, 60); colRed = gdImageColorAllocate (im3, 255, 0, 0); colBlu = gdImageColorAllocate (im3, 0, 0, 255); gdImageFilledRectangle (im3, 0, 0, 49, 30, colRed); gdImageFilledRectangle (im3, 50, 30, 99, 59, colBlu); gdImageCopyMerge (im2, im3, 150, 200, 10, 10, 90, 50, 50); gdImageCopyMerge (im2, im3, 180, 70, 10, 10, 90, 50, 50); gdImageCopyMergeGray (im2, im3, 250, 160, 10, 10, 90, 50, 50); gdImageCopyMergeGray (im2, im3, 80, 70, 10, 10, 90, 50, 50); gdImageDestroy (im3); in = fopen ("test/gdtest_merge.png", "rb"); if (!in) { fprintf (stderr, "gdtest_merge.png does not exist!\n"); exit (1); } im3 = gdImageCreateFromPng (in); fclose (in); printf ("[Merged Image has %d colours]\n", im2->colorsTotal); CompareImages ("Merged (gdtest.png, gdtest_merge.png)", im2, im3); gdImageDestroy (im2); gdImageDestroy (im3); #ifdef HAVE_JPEG out = fopen ("test/gdtest.jpg", "wb"); if (!out) { fprintf (stderr, "Can't create file test/gdtest.jpg.\n"); exit (1); } gdImageJpeg (im, out, -1); fclose (out); in = fopen ("test/gdtest.jpg", "rb"); if (!in) { fprintf (stderr, "Can't open file test/gdtest.jpg.\n"); exit (1); } im2 = gdImageCreateFromJpeg (in); fclose (in); if (!im2) { fprintf (stderr, "gdImageCreateFromJpeg failed.\n"); exit (1); } gdImageDestroy (im2); printf ("Created test/gdtest.jpg successfully. Compare this image\n" "to the input image manually. Some difference must be\n" "expected as JPEG is a lossy file format.\n"); #endif /* HAVE_JPEG */ /* Assume the color closest to black is the foreground color for the B&W wbmp image. */ fprintf (stderr, "NOTE: the WBMP output image will NOT match the original unless the original\n" "is also black and white. This is OK!\n"); foreground = gdImageColorClosest (im, 0, 0, 0); fprintf (stderr, "Foreground index is %d\n", foreground); if (foreground == -1) { fprintf (stderr, "Source image has no colors, skipping wbmp test.\n"); } else { out = fopen ("test/gdtest.wbmp", "wb"); if (!out) { fprintf (stderr, "Can't create file test/gdtest.wbmp.\n"); exit (1); } gdImageWBMP (im, foreground, out); fclose (out); in = fopen ("test/gdtest.wbmp", "rb"); if (!in) { fprintf (stderr, "Can't open file test/gdtest.wbmp.\n"); exit (1); } im2 = gdImageCreateFromWBMP (in); fprintf (stderr, "WBMP has %d colors\n", gdImageColorsTotal (im2)); fprintf (stderr, "WBMP colors are:\n"); for (i = 0; (i < gdImageColorsTotal (im2)); i++) { fprintf (stderr, "%02X%02X%02X\n", gdImageRed (im2, i), gdImageGreen (im2, i), gdImageBlue (im2, i)); } fclose (in); if (!im2) { fprintf (stderr, "gdImageCreateFromWBMP failed.\n"); exit (1); } CompareImages ("WBMP test (gdtest.png, gdtest.wbmp)", ref, im2); out = fopen ("test/gdtest_wbmp_to_png.png", "wb"); if (!out) { fprintf (stderr, "Can't create file test/gdtest_wbmp_to_png.png.\n"); exit (1); } gdImagePng (im2, out); fclose (out); gdImageDestroy (im2); } gdImageDestroy (im); gdImageDestroy (ref); return 0; } void CompareImages (char *msg, gdImagePtr im1, gdImagePtr im2) { int cmpRes; cmpRes = gdImageCompare (im1, im2); if (cmpRes & GD_CMP_IMAGE) { printf ("%%%s: ERROR images differ: BAD\n", msg); } else if (cmpRes != 0) { printf ("%%%s: WARNING images differ: WARNING - Probably OK\n", msg); } else { printf ("%%%s: OK\n", msg); return; } if (cmpRes & (GD_CMP_SIZE_X + GD_CMP_SIZE_Y)) { printf ("-%s: INFO image sizes differ\n", msg); } if (cmpRes & GD_CMP_NUM_COLORS) { printf ("-%s: INFO number of pallette entries differ %d Vs. %d\n", msg, im1->colorsTotal, im2->colorsTotal); } if (cmpRes & GD_CMP_COLOR) { printf ("-%s: INFO actual colours of pixels differ\n", msg); } } static int freadWrapper (void *context, char *buf, int len) { int got = fread (buf, 1, len, (FILE *) context); return got; } static int fwriteWrapper (void *context, const char *buffer, int len) { return fwrite (buffer, 1, len, (FILE *) context); } libwmf-0.2.8.4/src/extra/gd/gdtestft.c0000644000077100007710000000540007301470216016776 0ustar fjffjf00000000000000 #include "gd.h" #include #define PI 3.141592 #define DEG2RAD(x) ((x)*PI/180.) #define MAX(x,y) ((x) > (y) ? (x) : (y)) #define MIN(x,y) ((x) < (y) ? (x) : (y)) #define MAX4(x,y,z,w) \ ((MAX((x),(y))) > (MAX((z),(w))) ? (MAX((x),(y))) : (MAX((z),(w)))) #define MIN4(x,y,z,w) \ ((MIN((x),(y))) < (MIN((z),(w))) ? (MIN((x),(y))) : (MIN((z),(w)))) #define MAXX(x) MAX4(x[0],x[2],x[4],x[6]) #define MINX(x) MIN4(x[0],x[2],x[4],x[6]) #define MAXY(x) MAX4(x[1],x[3],x[5],x[7]) #define MINY(x) MIN4(x[1],x[3],x[5],x[7]) int main (int argc, char *argv[]) { #ifndef HAVE_LIBFREETYPE fprintf (stderr, "gd was not compiled with HAVE_LIBFREETYPE defined.\n"); fprintf (stderr, "Install the FreeType library, including the\n"); fprintf (stderr, "header files. Then edit the gd Makefile, type\n"); fprintf (stderr, "make clean, and type make again.\n"); return 1; #else gdImagePtr im; int black; int white; int brect[8]; int x, y; char *err; FILE *out; #ifdef JISX0208 char *s = "Hello. ɂ Qyjpqg,"; /* String to draw. */ #else char *s = "Hello. Qyjpqg,"; /* String to draw. */ #endif double sz = 40.; #if 0 double angle = 0.; #else double angle = DEG2RAD (-90); #endif #ifdef JISX0208 char *f = "/usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf"; /* UNICODE */ /* char *f = "/usr/local/lib/fonts/truetype/DynaFont/dfpop1.ttf"; *//* SJIS */ #else char *f = "times"; /* TrueType font */ #endif /* obtain brect so that we can size the image */ err = gdImageStringFT ((gdImagePtr) NULL, &brect[0], 0, f, sz, angle, 0, 0, s); if (err) { fprintf (stderr, err); return 1; } /* create an image just big enough for the string */ x = MAXX (brect) - MINX (brect) + 6; y = MAXY (brect) - MINY (brect) + 6; #if 0 im = gdImageCreate (500, 500); #else /* gd 2.0: true color images can use freetype too */ im = gdImageCreateTrueColor (x, y); #endif /* Background color. gd 2.0: fill the image with it; truecolor images have a black background otherwise. */ white = gdImageColorResolve (im, 255, 255, 255); gdImageFilledRectangle (im, 0, 0, x, y, white); black = gdImageColorResolve (im, 0, 0, 0); /* render the string, offset origin to center string */ x = 0 - MINX (brect) + 3; y = 0 - MINY (brect) + 3; err = gdImageStringFT (im, NULL, black, f, sz, angle, x, y, s); if (err) { fprintf (stderr, err); return 1; } /* TBB: Write img to test/fttest.png */ out = fopen ("test/fttest.png", "wb"); if (!out) { fprintf (stderr, "Can't create test/fttest.png\n"); exit (1); } gdImagePng (im, out); fclose (out); fprintf (stderr, "Test image written to test/fttest.png\n"); /* Destroy it */ gdImageDestroy (im); return 0; #endif /* HAVE_FREETYPE */ } libwmf-0.2.8.4/src/extra/gd/gdtopng.c0000644000077100007710000000170607301470216016621 0ustar fjffjf00000000000000#include #include "gd.h" /* A short program which converts a .png file into a .gd file, for your convenience in creating images on the fly from a basis image that must be loaded quickly. The .gd format is not intended to be a general-purpose format. */ int main (int argc, char **argv) { gdImagePtr im; FILE *in, *out; if (argc != 3) { fprintf (stderr, "Usage: gdtopng filename.gd filename.png\n"); exit (1); } in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } im = gdImageCreateFromGd (in); fclose (in); if (!im) { fprintf (stderr, "Input is not in PNG format!\n"); exit (1); } out = fopen (argv[2], "wb"); if (!out) { fprintf (stderr, "Output file cannot be written to!\n"); gdImageDestroy (im); exit (1); } gdImagePng (im, out); fclose (out); gdImageDestroy (im); return 0; } libwmf-0.2.8.4/src/extra/gd/index.html0000644000077100007710000047032607301470216017020 0ustar fjffjf00000000000000 gd 2.0.1

This is gd 2.0.1 BETA.

If you have problems, report them in detail, and consider using gd 1.8.4 until gd 2.0 final is out.

The gd 2.0 documentation update is not complete, but most new features are documented to some degree and the what's new section is reasonably complete. Enjoy!

gd 2.0.1

A graphics library for fast image creation

Follow this link to the latest version of this document.

HEY! READ THIS! gd 2.0.1 creates PNG, JPEG and WBMP images, not GIF images. This is a good thing. PNG is a more compact format, and full compression is available. JPEG works well with photographic images, and is still more compatible with the major Web browsers than even PNG is. WBMP is intended for wireless devices (not regular web browsers). Existing code will need modification to call gdImagePng or gdImageJpeg instead of gdImageGif. Please do not ask us to send you the old GIF version of GD. Unisys holds a patent on the LZW compression algorithm, which is used in fully compressed GIF images. The best solution is to move to legally unencumbered, well-compressed, modern image formats such as PNG and JPEG as soon as possible.

gd 2.0.1 requires that the following libraries also be installed:

libpng (see the libpng home page)

zlib (see the info-zip home page) zlib

jpeg-6b or later, if desired (see the Independent JPEG Group home page)

If you want to use the TrueType font support, you must also install the FreeType 2.x library, including the header files. See the Freetype Home Page, or SourceForge. No, I cannot explain why that site is down on a particular day, and no, I can't send you a copy.

If you want to use the Xpm color bitmap loading support, you must also have the X Window System and the Xpm library installed (Xpm is often included in modern X distributions).

Please read the documentation and install the required libraries. Do not send email asking why png.h is not found. Do not send email asking why libgd.so is not found, either. See the requirements section for more information. Thank you!

Table of Contents

Up to the Boutell.Com, Inc. Home Page

Credits and license terms

In order to resolve any possible confusion regarding the authorship of gd, the following copyright statement covers all of the authors who have required such a statement. If you are aware of any oversights in this copyright notice, please contact Thomas Boutell who will be pleased to correct them.

COPYRIGHT STATEMENT FOLLOWS THIS LINE
Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 by Cold Spring Harbor Laboratory. Funded under Grant P41-RR02188 by the National Institutes of Health.

Portions copyright 1996, 1997, 1998, 1999, 2000, 2001 by Boutell.Com, Inc.

Portions relating to GD2 format copyright 1999, 2000 Philip Warner.

Portions relating to PNG copyright 1999, 2000 Greg Roelofs.

Portions relating to libttf copyright 1999, 2000 John Ellson (ellson@lucent.com).

Portions relating to JPEG and to color quantization copyright 2000, Doug Becker and copyright (C) 1994-1998, Thomas G. Lane. This software is based in part on the work of the Independent JPEG Group. See the file README-JPEG.TXT for more information.

Portions relating to WBMP copyright 2000 Maurice Szmurlo and Johan Van den Brande.

Permission has been granted to copy, distribute and modify gd in any context without fee, including a commercial application, provided that this notice is present in user-accessible supporting documentation.

This does not affect your ownership of the derived work itself, and the intent is to assure proper credit for the authors of gd, not to interfere with your productive use of gd. If you have questions, ask. "Derived works" includes all programs that utilize the library. Credit must be given in user-accessible documentation.

This software is provided "AS IS." The copyright holders disclaim all warranties, either express or implied, including but not limited to implied warranties of merchantability and fitness for a particular purpose, with respect to this code and accompanying documentation.

Although their code does not appear in gd 2.0.1, the authors wish to thank David Koblas, David Rowley, and Hutchison Avenue Software Corporation for their prior contributions.

END OF COPYRIGHT STATEMENT

What is gd?

gd is a graphics library. It allows your code to quickly draw images complete with lines, arcs, text, multiple colors, cut and paste from other images, and flood fills, and write out the result as a PNG or JPEG file. This is particularly useful in World Wide Web applications, where PNG and JPEG are two of the formats accepted for inline images by most browsers.

gd is not a paint program. If you are looking for a paint program, you are looking in the wrong place. If you are not a programmer, you are looking in the wrong place, unless you are installing a required library in order to run an application.

gd does not provide for every possible desirable graphics operation. It is not necessary or desirable for gd to become a kitchen-sink graphics package, but version 2.0 does include most frequently requested features, including both truecolor and palette images, resampling (smooth resizing of truecolor images) and so forth.

What if I want to use another programming language?

Not all of these tools are necessarily up to date and fully compatible with 2.0.1.

Perl

gd can also be used from Perl, courtesy of Lincoln Stein's GD.pm library, which uses gd as the basis for a set of Perl 5.x classes. Highly recommended.

Tcl

gd can be used from Tcl with John Ellson's Gdtclft dynamically loaded extension package. (Gdtclft2.0 or later is needed for gd-1.6 and up with PNG output.)

Pascal

Pascal enthusiasts should look into Michael Bradbury's gdfp package.

Haskell

A new gd interface is now available for Haskell programmers.

REXX

A gd interface for the REXX language is available.

Any Language

There are, at the moment, at least three simple interpreters that perform gd operations. You can output the desired commands to a simple text file from whatever scripting language you prefer to use, then invoke the interpreter.

  • tgd, by Bradley K. Sherman
  • fly, by Martin Gleeson

What's new in version 2.0.1?

  • Workaround for a bug in gcc, apparently found in gcc 2.7.2 and up. I reproduced and fixed it while using gcc 2.9.5.2. The bug occurred only when the -g option was in use. This problem caused gcc to spew internal error messages unrelated to the correctness of the code in gd_gd2.c. Howard Jones was first to report it.
  • gdImageFilledEllipse documented and altered; no longer requires a superfluous style argument. Thanks to Francis James Franklin.
  • The Makefile now offers the correct syntax for optionally creating a static library. Thanks to Jean-Lous Regez, among others.
  • A nested comment, an attempt to return the value of a void function, and a potentially significant error in gdImageCopyResampled were fixed thanks to Joseph Shirley.
  • A bug preventing proper truecolor text rendering was fixed, thanks to Jason Gallagher.
  • gdImageStringFT (FreeType) should now work better against a transparent or semitransparent background, and should act in a manner consistent with the most recent gdImageAlphaBlending setting. Antialiasing is now done via the alpha channel mechanism if the image is a truecolor image.
  • Bugs in the output of gdImageArc and gdImageFilledArc were reported by Bruce Verderaime. A simple and correct but inefficient implementation has been substituted until fixes are contributed for the faster code, which is in gd_arc_f_buggy.c along with the test program that reproduces the bug(s).
  • gdImageFilledArc now offers additional style options, which can be combined to produce various effects.
  • Masahito Yamaga (ma@yama-ga.com) sent a patch to improve support for Japanese output via gdImageStringFT. He also added a new readme.jpn file.
  • Zillions of documentation fixes.

What's new in version 2.0?

  • Support for truecolor images! Version 2.0 can load truecolor PNGs with no loss of color information, and almost no loss of alpha channel information. Version 2.0 can also load truecolor JPEGs with as little loss as possible; however, bear in mind that JPEG is a lossy format, so repeated load/save cycles always reduce image quality. This is not a bug. To create a truecolor image from scratch, call the new gdImageCreateTrueColor function. The gdImageCreate function is still available to create palette images, and may also be referred to as gdImageCreatePalette.
  • Support for alpha channels! In addition to 24 bits of color information for each pixel (eight bits of red, green, and blue respectively), version 2.0 supports 7 bits of "alpha channel" information. This is used to determine exactly how transparent the pixel should be. There is also support for a full 7 bits of transparency for each individual palette index in a palette-based image. Please note that, as of this writing, only Macintosh Internet Explorer 5.x and Mozilla/Netscape 6.x display partial transparency properly.
  • The new gdImageAlphaBlending function allows for two different modes of drawing. In blending mode, the alpha channel component of the color supplied to all drawing functions, such as gdImageSetPixel, determines how much of the underlying color should be allowed to shine through. The resulting image is not transparent. In non-blending mode, drawing color is copied literally with the alpha channel information, resulting in a transparent image. Blending mode is not available when drawing on palette images.
  • The gdImageCopyResampled function provides "smooth" copying from a large image to a smaller one, using a weighted average of the pixels of the source area rather than selecting one representative pixel. This function is identical to gdImageCopyResized when the destination image is a palette image.
  • The gdImageTrueColorToPalette function converts a truecolor image to a palette image. The code for this function was originally drawn from the Independent JPEG Group library code, which is excellent. The code has been modified to preserve as much alpha channel information as possible in the resulting palette, in addition to preserving colors as well as possible. This does not work as well as might be hoped. It is usually best to simply produce a truecolor output image instead, which guarantees the highest output quality.
  • A very high degree of backwards compatibility with existing gd 1.x code has been maintained, at both the source code and binary level. Code which directly accesses the pixels array will fail only if it encounters an existing truecolor image, which may happen if the code attempts to open and modify an existing JPEG or truecolor PNG. Such code should be modified to check the trueColor flag of the gdImage structure, and refer to the tpixels array instead when it is set.
  • gd is now compiled and installed as a shared library. However, gd still does not use autoconf, because I (TBB) have very limited patience with autoconf. These days, most Unix systems provide a fairly POSIX-standard environment, and the provided Makefile is likely to work well if users read it and follow the instructions at the top.
  • Support for line thickness was added by Michael Schwartz. My apologies to him for sitting on his patches for so long. See the new gdImageSetThickness function, which affects all standard gd functions that draw lines and curves. In addition, Michael added a convenient gdImageEllipse function.
  • The new gdImageFilledArc function provides a straightforward way to draw filled arcs. Also, gdImageFilledEllipse is a convenient way to fill an ellipse without specifying starting and ending angles. Thanks go out to F J Franklin.
  • To put an end to the confusion, TrueType 1.x support has been removed in favor of TrueType 2.x support. The old gdImageStringTTF function simply invokes gdImageStringFT.
  • The specialized .gd and .gd2 file formats have been upgraded to support truecolor. New images written by the versions of these functions found in 2.0 will be rejected, with varying degrees of grace, by older versions of gd. THIS AFFECTS THE .GD and .GD2 FORMATS ONLY. IF YOU ARE CONFUSED BY THIS PARAGRAPH, IT PROBABLY DOESN'T APPLY TO ANYTHING YOU WILL EVER ENCOUNTER. Since these file formats are absolutely, positively *not* designed for distributing images, just for preprocessing them, this should not be a big problem. gd 2.0 should read old .gd and .gd2 files correctly.

What's new in version 1.8.4?

  • Add support for FreeType2 (John Ellson ellson@lucent.com)
  • Add support for finding in fonts in a builtin DEFAULT_FONTPATH, or in a path from the GDFONTPATH environment variable.
  • remove some unused symbols to reduce compiler warnings
  • bugfix in size comparisons in gdImageCompare
  • REXX now mentioned
  • All memory allocation functions are now wrapped within the library; gdFree is exported and recommended for freeing memory returned by the gdImage(Something)Ptr family of functions.

What's new in version 1.8.3?

  • WBMP output memory leak fixed
  • #include <gd.h> corrected to #include "gd.h" in gd_wbmp.c
  • Documented the fact that the source and output images shouldn't match in the WBMP test except for black and white source images

What's new in version 1.8.2?

  • WBMP support debugged and improved by Johann Van den Brande
  • WBMP tests added to gdtest.c by Thomas Boutell
  • Use of platform-dependent 'install' command removed by Thomas Boutell
  • Comments added to Makefile warning users to juggle the order of the libraries if the linker complains; is there any portable way to do this automatically, short of using autoconf?
  • Documentation of gdImageCreateFromXpm corrected
  • Updated links to fast-moving, always dodging libpng and zlib web sites

What's new in version 1.8.1?

  • Optional components no longer built by default (following the documentation)
  • JPEG code no longer requires inappropriate header files
  • Win32 patches from Joe Gregorio
  • 16-bit font support for bdftogd, from Honza Pazdziora

What's new in version 1.8?

  • Support for JPEG output, courtesy of Doug Becker
  • A link to Michael Bradbery's Pascal wrapper
  • Support for WBMP output, courtesy of Maurice Szmurlo
  • gdImageColorClosestHWB function based on hue, whiteness, blackness, superior to the regular gdImageColorClosest function, courtesy of Philip Warner
  • License clarification: yes, you can modify gd

Additional JPEG Information

Support for reading and writing JPEG-format images is courtesy of Doug Becker and the Independent JPEG Group / Thomas G. Lane. You can get the latest version of the IJG JPEG software from ftp://ftp.uu.net/graphics/jpeg/ (e.g., the jpegsrc.v6b.tar.gz file). You must use version 6b or later of the IJG JPEG software. You might also consult the JPEG FAQ at http://www.faqs.org/faqs/jpeg-faq/.

What's new in version 1.7.3?

Another attempt at Makefile fixes to permit linking with all libraries required on platforms with order- dependent linkers. Perhaps it will work this time.

What's new in version 1.7.2?

An uninitialized-pointer bug in gdtestttf.c was corrected. This bug caused crashes at the end of each call to gdImageStringTTF on some platforms. Thanks to Wolfgang Haefelinger.

Documentation fixes. Thanks to Dohn Arms.

Makefile fixes to permit linking with all libraries required on platforms with order- dependent linkers.

What's new in version 1.7.1?

A minor buglet in the Makefile was corrected, as well as an inaccurate error message in gdtestttf.c. Thanks to Masahito Yamaga.

What's new in version 1.7?

Version 1.7 contains the following changes:
  • Japanese language support for the TrueType functions. Thanks to Masahito Yamaga.
  • autoconf and configure have been removed, in favor of a carefully designed Makefile which produces and properly installs the library and the binaries. System-dependent variables are at the top of the Makefile for easy modification. I'm sorry, folks, but autoconf generated many, many confused email messages from people who didn't have things where autoconf expected to find them. I am not an autoconf/automake wizard, and gd is a simple, very compact library which does not need to be a shared library. I did make many improvements over the old gd 1.3 Makefile, which were directly inspired by the autoconf version found in the 1.6 series (thanks to John Ellson).
  • Completely ANSI C compliant, according to the -pedantic-errors flag of gcc. Several pieces of not-quite-ANSI-C code were causing problems for those with non-gcc compilers.
  • gdttf.c patched to allow the use of Windows symbol fonts, when present (thanks to Joseph Peppin).
  • extern "C" wrappers added to gd.h and the font header files for the convenience of C++ programmers. bdftogd was also modified to automatically insert these wrappers into future font header files. Thanks to John Lindal.
  • Compiles correctly on platforms that don't define SEEK_SET. Thanks to Robert Bonomi.
  • Loads Xpm images via the gdImageCreateFromXpm function, if the Xpm library is available. Thanks to Caolan McNamara.

What's new in version 1.6.3?

Version 1.6.3 corrects a memory leak in gd_png.c. This leak caused a significant amount of memory to be allocated and not freed when writing a PNG image.

What's new in version 1.6.2?

Version 1.6.2 from John Ellson adds two new functions:
  • gdImageStringTTF - scalable, rotatable, anti-aliased, TrueType strings using the FreeType library, but only if libttf is found by configure. We do not provide TrueType fonts. Obtaining them is entirely up to you.
  • gdImageColorResolve - an efficient alternative for the common code fragment:
    
          if ((color=gdImageColorExact(im,R,G,B)) < 0)
              if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
                  color=gdImageColorClosest(im,R,G,B);
    

Also in this release the build process has been converted to GNU autoconf/automake/libtool conventions so that both (or either) static and shared libraries can be built.

What's new in version 1.6.1?

Version 1.6.1 incorporates superior PNG reading and writing code from Greg Roelofs, with minor modifications by Tom Boutell. Specifically, I altered his code to read non-palette images (converting them to palette images badly, by dithering them), and to tolerate palette images with types of transparency that gd doesn't actually support (it just ignores the advanced transparency features). Any bugs in this area are therefore my fault, not Greg's.

Unlike gd 1.6, users should have no trouble linking with gd 1.6.1 if they follow the instructions and install all of the pieces. However, If you get undefined symbol errors, be sure to check for older versions of libpng in your library directories!

What's new in version 1.6?

Version 1.6 features the following changes:

Support for 8-bit palette PNG images has been added. Support for GIF has been removed. This step was taken to completely avoid the legal controversy regarding the LZW compression algorithm used in GIF. Unisys holds a patent which is relevant to LZW compression. PNG is a superior image format in any case. Now that PNG is supported by both Microsoft Internet Explorer and Netscape (in their recent releases), we highly recommend that GD users upgrade in order to get well-compressed images in a format which is legally unemcumbered.

What's new in version 1.5?

Version 1.5 featured the following changes:
New GD2 format
An improvement over the GD format, the GD2 format uses the zlib compression library to compress the image in chunks. This results in file sizes comparable to GIFs, with the ability to access parts of large images without having to read the entire image into memory.

This format also supports version numbers and rudimentary validity checks, so it should be more 'supportable' than the previous GD format.

Re-arranged source files
gd.c has been broken into constituant parts: io, gif, gd, gd2 and graphics functions are now in separate files.

Extended I/O capabilities.
The source/sink feature has been extended to support GD2 file formats (which require seek/tell functions), and to allow more general non-file I/O.

Better support for Lincoln Stein's Perl Module
The new gdImage*Ptr function returns the chosen format stored in a block of memory. This can be directly used by the GD perl module.

Added functions
gdImageCreateFromGd2Part - allows retrieval of part of an image (good for huge images, like maps),
gdImagePaletteCopy - Copies a palette from one image to another, doing it's best to match the colors in the target image to the colors in the source palette.
gdImageGd2, gdImageCreateFromGd2 - Support for new format
gdImageCopyMerge - Merges two images (useful to highlight part of an image)
gdImageCopyMergeGray - Similar to gdImageCopyMerge, but tries to preserve source image hue.
gdImagePngPtr, gdImageJpegPtr, gdImageWBMPPtr, gdImageGdPtr, gdImageGd2Ptr - return memory blocks for each type of image.
gdImageCreateFromPngCtx, gdImageCreateFromGdCtx, gdImageCreateFromGd2Ctx, gdImageCreateFromGd2PartCtx - Support for new I/O context.
NOTE: In fairness to Thomas Boutell, any bug/problems with any of the above features should probably be reported to Philip Warner.

What's new in version 1.4?

Version 1.4 features the following changes:
Fixed polygon fill routine (again)
Thanks to Kirsten Schulz, version 1.4 is able to fill numerous types of polygons that caused problems with previous releases, including version 1.3.
Support for alternate data sources
Programmers who wish to load a GIF from something other than a stdio FILE * stream can use the new gdImageCreateFromPngSource function.
Support for alternate data destinations
Programmers who wish to write a GIF to something other than a stdio FILE * stream can use the new gdImagePngToSink function.
More tolerant when reading GIFs
Version 1.4 does not crash when reading certain animated GIFs, although it still only reads the first frame. Version 1.4 also has overflow testing code to prevent crashes when reading damaged GIFs.

What's new in version 1.3?

Version 1.3 features the following changes:
Non-LZW-based GIF compression code
Version 1.3 contained GIF compression code that uses simple Run Length Encoding instead of LZW compression, while still retaining compatibility with normal LZW-based GIF decoders (your browser will still like your GIFs). LZW compression is patented by Unisys. We are currently reevaluating the approach taken by gd 1.3. The current release of gd does not support this approach. We recommend that you use the current release, and generate PNG images. Thanks to Hutchison Avenue Software Corporation for contributing the RLE GIF code.
8-bit fonts, and 8-bit font support
This improves support for European languages. Thanks are due to Honza Pazdziora and also to Jan Pazdziora . Also see the provided bdftogd Perl script if you wish to convert fixed-width X11 fonts to gd fonts.
16-bit font support (no fonts provided)
Although no such fonts are provided in the distribution, fonts containing more than 256 characters should work if the gdImageString16 and gdImageStringUp16 routines are used.
Improvements to the "webpng" example/utility
The "webpng" utility is now a slightly more useful application. Thanks to Brian Dowling for this code.
Corrections to the color resolution field of GIF output
Thanks to Bruno Aureli.
Fixed polygon fills
A one-line patch for the infamous polygon fill bug, courtesy of Jim Mason. I believe this fix is sufficient. However, if you find a situation where polygon fills still fail to behave properly, please send code that demonstrates the problem, and a fix if you have one. Verifying the fix is important.
Row-major, not column-major
Internally, gd now represents the array of pixels as an array of rows of pixels, rather than an array of columns of pixels. This improves the performance of compression and decompression routines slightly, because horizontally adjacent pixels are now next to each other in memory. This should not affect properly written gd applications, but applications that directly manipulate the pixels array will require changes.

What else do I need to use gd?

To use gd, you will need an ANSI C compiler. All popular Windows 95 and NT C compilers are ANSI C compliant. Any full-ANSI-standard C compiler should be adequate. The cc compiler released with SunOS 4.1.3 is not an ANSI C compiler. Most Unix users who do not already have gcc should get it. gcc is free, ANSI compliant and a de facto industry standard. Ask your ISP why it is missing.

As of version 1.6, you also need the zlib compression library, and the libpng library. As of version 1.6.2, you can draw text using antialiased TrueType fonts if you also have the libttf library installed, but this is not mandatory. zlib is available for a variety of platforms from the zlib web site. libpng is available for a variety of platforms from the PNG web site.

You will also want a PNG viewer, if you do not already have one for your system, since you will need a good way to check the results of your work. Netscape 4.04 and higher, and Microsoft Internet Explorer 4.0 or higher, both support PNG. For some purposes you might be happier with a package like Lview Pro for Windows or xv for X. There are PNG viewers available for every graphics-capable modern operating system, so consult newsgroups relevant to your particular system.

How do I get gd?

By HTTP

By FTP

How do I build gd?

In order to build gd, you must first unpack the archive you have downloaded. If you are not familiar with tar and gunzip (Unix) or ZIP (Windows), please consult with an experienced user of your system. Sorry, we cannot answer questions about basic Internet skills.

Unpacking the archive will produce a directory called "gd-2.0.1".

For Unix

cd to the 2.0.1 directory. Edit the Makefile with your preferred text editor and make any necessary changes to the settings at the top, especially if you want Xpm or TrueType support. Next, type "make install". Because gd 2.0 and above installs as a shared library, it is necessary to install the library properly before running gd-based programs.

If you get errors, edit the Makefile again, paying special attention to the INCLUDEDIRS and LIBDIRS settings.

IF YOU GET LINKER ERRORS, TRY JUGGLING THE ORDER OF THE -l DIRECTIVES IN THE MAKEFILE. Some platforms may prefer that the libraries be listed in the opposite order.

For Windows, Mac, Et Cetera

Create a project using your favorite programming environment. Copy all of the gd files to the project directory. Add gd.c to your project. Add other source files as appropriate. Learning the basic skills of creating projects with your chosen C environment is up to you.

If you wish to test the library, type "make test" AFTER you have successfully executed "make install". This will build several test programs, including "gddemo". Run gddemo to see some of the capabilities of gd.

gddemo should execute without incident, creating the file demoout.png. (Note there is also a file named demoin.png, which is provided in the package as part of the demonstration.)

Display demoout.png in your PNG viewer. The image should be 128x128 pixels and should contain an image of the space shuttle with quite a lot of graphical elements drawn on top of it.

(If you are missing the demoin.png file, the other items should appear anyway.)

Look at demoin.png to see the original space shuttle image which was scaled and copied into the output image.

gd basics: using gd in your program

gd lets you create PNG or JPEG images on the fly. To use gd in your program, include the file gd.h, and link with the libgd.a library produced by "make libgd.a", under Unix. Under other operating systems you will add gd.c to your own project.

If you want to use the provided fonts, include gdfontt.h, gdfonts.h, gdfontmb.h, gdfontl.h and/or gdfontg.h. For more impressive results, install FreeType 2.x and use the new gdImageStringFT function. If you are not using the provided Makefile and/or a library-based approach, be sure to include the source modules as well in your project. (They may be too large for 16-bit memory models, that is, 16-bit DOS and Windows.)

Here is a short example program. (For a more advanced example, see gddemo.c, included in the distribution. gddemo.c is NOT the same program; it demonstrates additional features!)

/* Bring in gd library functions */
#include "gd.h"

/* Bring in standard I/O so we can output the PNG to a file */
#include <stdio.h>

int main() {
	/* Declare the image */
	gdImagePtr im;
	/* Declare output files */
	FILE *pngout, *jpegout;
	/* Declare color indexes */
	int black;
	int white;

	/* Allocate the image: 64 pixels across by 64 pixels tall */
	im = gdImageCreate(64, 64);

	/* Allocate the color black (red, green and blue all minimum).
		Since this is the first color in a new image, it will
		be the background color. */
	black = gdImageColorAllocate(im, 0, 0, 0);	

	/* Allocate the color white (red, green and blue all maximum). */
	white = gdImageColorAllocate(im, 255, 255, 255);	
	
	/* Draw a line from the upper left to the lower right,
		using white color index. */
	gdImageLine(im, 0, 0, 63, 63, white);	

	/* Open a file for writing. "wb" means "write binary", important
		under MSDOS, harmless under Unix. */
	pngout = fopen("test.png", "wb");

	/* Do the same for a JPEG-format file. */
	jpegout = fopen("test.jpg", "wb");

	/* Output the image to the disk file in PNG format. */
	gdImagePng(im, pngout);

	/* Output the same image in JPEG format, using the default
		JPEG quality setting. */
	gdImageJpeg(im, jpegout, -1);

	/* Close the files. */
	fclose(pngout);
	fclose(jpegout);

	/* Destroy the image in memory. */
	gdImageDestroy(im);
}
When executed, this program creates an image, allocates two colors (the first color allocated becomes the background color), draws a diagonal line (note that 0, 0 is the upper left corner), writes the image to PNG and JPEG files, and destroys the image.

The above example program should give you an idea of how the package works. gd provides many additional functions, which are listed in the following reference chapters, complete with code snippets demonstrating each. There is also an alphabetical index.

Webpng: a more powerful gd example

Webpng is a simple utility program to manipulate PNGs from the command line. It is written for Unix and similar command-line systems, but should be easily adapted for other environments. Webpng allows you to set transparency and interlacing and output interesting information about the PNG in question.

webpng.c is provided in the distribution. Unix users can simply type "make webpng" to compile the program. Type "webpng" with no arguments to see the available options.

Function and type reference

Types

gdImage(TYPE)
The data structure in which gd stores images. gdImageCreate, gdImageCreateTrueColor and the various image file-loading functions return a pointer to this type, and the other functions expect to receive a pointer to this type as their first argument. It is reasonably safe to examine any of the members of this structure. It is also reasonably safe to modify individual pixels within the pixels or tpixels arrays. If the trueColor flag is set, the tpixels array is valid; otherwise the pixels array is valid.

The colorsTotal, red, green, blue, alpha and open arrays manage the palette. They are valid only when the trueColor flag is not set. The transparent value contains the palette index of the first transparent color as read-only information for backwards compatibility; gd 2.0 stores this information in the alpha array so that variable transparency can be supported for each palette entry. However, for truecolor images, transparent represents a single RGB color which is always 100% transparent, and this feature is generally supported by browsers which do not support full alpha channels.

typedef struct {
	/* Palette-based image pixels */
	unsigned char ** pixels;
	int sx;
	int sy;
	/* These are valid in palette images only. See also
	/* 'alpha', which appears later in the structure to
		preserve binary backwards compatibility */
	int colorsTotal;
	int red[gdMaxColors];
	int green[gdMaxColors];
	int blue[gdMaxColors]; 
	int open[gdMaxColors];
	/* For backwards compatibility, this is set to the
		first palette entry with 100% transparency,
		and is also set and reset by the 
		gdImageColorTransparent function. Newer
		applications can allocate palette entries
		with any desired level of transparency; however,
		bear in mind that many viewers, notably
		many web browsers, fail to implement
		full alpha channel for PNG and provide
		support for full opacity or transparency only. */
	int transparent;
	int *polyInts;
	int polyAllocated;
	struct gdImageStruct *brush;
	struct gdImageStruct *tile;	
	int brushColorMap[gdMaxColors];
	int tileColorMap[gdMaxColors];
	int styleLength;
	int stylePos;
	int *style;
	int interlace;
	/* New in 2.0: alpha channel for palettes. Note that only
		Macintosh Internet Explorer and (possibly) Netscape 6
		really support multiple levels of transparency in
		palettes, to my knowledge, as of 2/15/01. Most
		common browsers will display 100% opaque and
		100% transparent correctly, and do something 
		unpredictable and/or undesirable for levels
		in between. TBB */
	int alpha[gdMaxColors]; 
	/* Truecolor flag and pixels. New 2.0 fields appear here at the
		end to minimize breakage of existing object code. */
	int trueColor;
	int ** tpixels;
	/* Should alpha channel be copied, or applied, each time a
		pixel is drawn? This applies to truecolor images only.
		No attempt is made to alpha-blend in palette images,
		even if semitransparent palette entries exist. 
		To do that, build your image as a truecolor image,
		then quantize down to 8 bits. */
	int alphaBlendingFlag;
	/* Should the alpha channel of the image be saved? This affects
		PNG at the moment; other future formats may also
		have that capability. JPEG doesn't. */
	int saveAlphaFlag;
} gdImage;

The order of the structure members may appear confusing, but was chosen deliberately to increase backwards compatibility with existing gd 1.x-based binary code that references particular structure members.

gdImagePtr (TYPE)
A pointer to an image structure. gdImageCreate returns this type, and the other functions expect it as the first argument.
gdFont (TYPE)
A font structure. Used to declare the characteristics of a font. Plese see the files gdfontl.c and gdfontl.h for an example of the proper declaration of this structure. You can provide your own font data by providing such a structure and the associated pixel array. You can determine the width and height of a single character in a font by examining the w and h members of the structure. If you will not be creating your own fonts, you will not need to concern yourself with the rest of the components of this structure.
typedef struct {
	/* # of characters in font */
	int nchars;
	/* First character is numbered... (usually 32 = space) */
	int offset;
	/* Character width and height */
	int w;
	int h;
	/* Font data; array of characters, one row after another.
		Easily included in code, also easily loaded from
		data files. */
	char *data;
} gdFont;
gdFontPtr (TYPE)
A pointer to a font structure. Text-output functions expect these as their second argument, following the gdImagePtr argument. Two such pointers are declared in the provided include files gdfonts.h and gdfontl.h.
gdPoint (TYPE)
Represents a point in the coordinate space of the image; used by gdImagePolygon and gdImageFilledPolygon.
typedef struct {
        int x, y;
} gdPoint, *gdPointPtr;
gdPointPtr (TYPE)
A pointer to a gdPoint structure; passed as an argument to gdImagePolygon and gdImageFilledPolygon.
gdSource (TYPE)
typedef struct {
        int (*source) (void *context, char *buffer, int len);
        void *context;
} gdSource, *gdSourcePtr;
Represents a source from which a PNG can be read. Programmers who do not wish to read PNGs from a file can provide their own alternate input mechanism, using the gdImageCreateFromPngSource function. See the documentation of that function for an example of the proper use of this type.
gdSink (TYPE)
typedef struct {
        int (*sink) (void *context, char *buffer, int len);
        void *context;
} gdSink, *gdSinkPtr;
Represents a "sink" (destination) to which a PNG can be written. Programmers who do not wish to write PNGs to a file can provide their own alternate output mechanism, using the gdImagePngToSink function. See the documentation of that function for an example of the proper use of this type.

Image creation, destruction, loading and saving

gdImageCreate(sx, sy) (FUNCTION)
gdImageCreate is called to create palette-based images, with no more than 256 colors. Invoke gdImageCreate with the x and y dimensions of the desired image. gdImageCreate returns a gdImagePtr to the new image, or NULL if unable to allocate the image. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
im = gdImageCreate(64, 64);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateTrueColor(sx, sy) (FUNCTION)
gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors. Invoke gdImageCreateTrueColor with the x and y dimensions of the desired image. gdImageCreateTrueColor returns a gdImagePtr to the new image, or NULL if unable to allocate the image. The image must eventually be destroyed using gdImageDestroy().

Truecolor images are always filled with black at creation time.

... inside a function ...
gdImagePtr im;
im = gdImageCreateTrueColor(64, 64);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromJpeg(FILE *in) (FUNCTION)
gdImageCreateFromJpegCtx(FILE *in) (FUNCTION)

gdImageCreateFromJpeg(FILE *in) (FUNCTION)
gdImageCreateFromJpegCtx(FILE *in) (FUNCTION)

gdImageCreateFromJpeg is called to load images from JPEG format files. Invoke gdImageCreateFromJpeg with an already opened pointer to a file containing the desired image. gdImageCreateFromJpeg returns a gdImagePtr to the new truecolor image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a JPEG image). gdImageCreateFromJpeg does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). The returned image is always a truecolor image.
gdImagePtr im;
... inside a function ...
FILE *in;
in = fopen("myjpeg.jpg", "rb");
im = gdImageCreateFromJpeg(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromPng(FILE *in) (FUNCTION)
gdImageCreateFromPngCtx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromPng is called to load images from PNG format files. Invoke gdImageCreateFromPng with an already opened pointer to a file containing the desired image. gdImageCreateFromPng returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a PNG image). gdImageCreateFromPng does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().

If the PNG image being loaded is a truecolor image, the resulting gdImagePtr will refer to a truecolor image. If the PNG image being loaded is a palette or grayscale image, the resulting gdImagePtr will refer to a palette image. gd retains only 8 bits of resolution for each of the red, green and blue channels, and only 7 bits of resolution for the alpha channel. The former restriction affects only a handful of very rare 48-bit color and 16-bit grayscale PNG images. The second restriction affects all semitransparent PNG images, but the difference is essentially invisible to the eye. 7 bits of alpha channel resolution is, in practice, quite a lot.

gdImagePtr im;
... inside a function ...
FILE *in;
in = fopen("mypng.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromPngSource(gdSourcePtr in) (FUNCTION)
gdImageCreateFromPngSource is called to load a PNG from a data source other than a file. Usage is very similar to the gdImageCreateFromPng function, except that the programmer provides a custom data source.

The programmer must write an input function which accepts a context pointer, a buffer, and a number of bytes to be read as arguments. This function must read the number of bytes requested, unless the end of the file has been reached, in which case the function should return zero, or an error has occurred, in which case the function should return -1. The programmer then creates a gdSource structure and sets the source pointer to the input function and the context pointer to any value which is useful to the programmer.

The example below implements gdImageCreateFromPng by creating a custom data source and invoking gdImageCreateFromPngSource.

static int freadWrapper(void *context, char *buf, int len);

gdImagePtr gdImageCreateFromPng(FILE *in)
{
        gdSource s;
        s.source = freadWrapper;
        s.context = in;
        return gdImageCreateFromPngSource(&s);
}

static int freadWrapper(void *context, char *buf, int len)
{
        int got = fread(buf, 1, len, (FILE *) context);
        return got;
}
gdImageCreateFromGd(FILE *in) (FUNCTION)
gdImageCreateFromGdCtx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromGd is called to load images from gd format files. Invoke gdImageCreateFromGd with an already opened pointer to a file containing the desired image in the gd file format, which is specific to gd and intended for very fast loading. (It is not intended for compression; for compression, use PNG or JPEG.) gdImageCreateFromGd returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image). gdImageCreateFromGd does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("mygd.gd", "rb");
im = gdImageCreateFromGd(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromGd2(FILE *in) (FUNCTION)
gdImageCreateFromGd2Ctx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromGd2 is called to load images from gd2 format files. Invoke gdImageCreateFromGd2 with an already opened pointer to a file containing the desired image in the gd2 file format, which is specific to gd2 and intended for fast loading of parts of large images. (It is a compressed format, but generally not as good as maximum compression of the entire image would be.) gdImageCreateFromGd returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image). gdImageCreateFromGd2 does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("mygd.gd2", "rb");
im = gdImageCreateFromGd2(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromGd2Part(FILE *in, int srcX, int srcY, int w, int h) (FUNCTION)
gdImageCreateFromGd2PartCtx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromGd2Part is called to load parts of images from gd2 format files. Invoked in the same way as gdImageCreateFromGd2, but with extra parameters indicating the source (x, y) and width/height of the desired image. gdImageCreateFromGd2Part returns a gdImagePtr to the new image, or NULL if unable to load the image. The image must eventually be destroyed using gdImageDestroy().

gdImageCreateFromXbm(FILE *in) (FUNCTION)
gdImageCreateFromXbm is called to load images from X bitmap format files. Invoke gdImageCreateFromXbm with an already opened pointer to a file containing the desired image. gdImageCreateFromXbm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an X bitmap format image). gdImageCreateFromXbm does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("myxbm.xbm", "rb");
im = gdImageCreateFromXbm(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromXpm(char *filename) (FUNCTION)
gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files. This function is available only if HAVE_XPM is selected in the Makefile and the Xpm library is linked with the application. Unlike most gd file functions, the Xpm functions require filenames, not file pointers. gdImageCreateFromXpm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an XPM bitmap format image). You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("myxpm.xpm", "rb");
im = gdImageCreateFromXpm(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageDestroy(gdImagePtr im) (FUNCTION)
gdImageDestroy is used to free the memory associated with an image. It is important to invoke gdImageDestroy before exiting your program or assigning a new image to a gdImagePtr variable.
... inside a function ...
gdImagePtr im;
im = gdImageCreate(10, 10);
/* ... Use the image ... */
/* Now destroy it */
gdImageDestroy(im);
void gdImageJpeg(gdImagePtr im, FILE *out, int quality) (FUNCTION)
void gdImageJpegCtx(gdImagePtr im, gdIOCtx *out, int quality) (FUNCTION)
gdImageJpeg outputs the specified image to the specified file in JPEG format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageJpeg does not close the file; your code must do so.

If quality is negative, the default IJG JPEG quality value (which should yield a good general quality / size tradeoff for most situations) is used. Otherwise, for practical purposes, quality should be a value in the range 0-95, higher quality values usually implying both higher quality and larger image sizes.

If you have set image interlacing using gdImageInterlace, this function will interpret that to mean you wish to output a progressive JPEG. Some programs (e.g., Web browsers) can display progressive JPEGs incrementally; this can be useful when browsing over a relatively slow communications link, for example. Progressive JPEGs can also be slightly smaller than sequential (non-progressive) JPEGs.

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.jpg", "wb");
/* Write JPEG using default quality */
gdImageJpeg(im, out, -1);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageJpegPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
void gdImagePng(gdImagePtr im, FILE *out) (FUNCTION)
gdImagePng outputs the specified image to the specified file in PNG format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImagePng does not close the file; your code must do so.
... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.png", "wb");
/* Write PNG */
gdImagePng(im, out);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImagePngPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImagePng except that it returns a pointer to a memory area with the PNG data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
gdImagePngToSink(gdImagePtr im, gdSinkPtr out) (FUNCTION)
gdImagePngToSink is called to write a PNG to a data "sink" (destination) other than a file. Usage is very similar to the gdImagePng function, except that the programmer provides a custom data sink.

The programmer must write an output function which accepts a context pointer, a buffer, and a number of bytes to be written as arguments. This function must write the number of bytes requested and return that number, unless an error has occurred, in which case the function should return -1. The programmer then creates a gdSink structure and sets the sink pointer to the output function and the context pointer to any value which is useful to the programmer.

The example below implements gdImagePng by creating a custom data source and invoking gdImagePngFromSink.

static int stdioSink(void *context, char *buffer, int len)
{
	return fwrite(buffer, 1, len, (FILE *) context);
}

void gdImagePng(gdImagePtr im, FILE *out)
{
	gdSink mySink;
	mySink.context = (void *) out;
	mySink.sink = stdioSink;
	gdImagePngToSink(im, &mySink);
}
void gdImageWBMP(gdImagePtr im, int fg, FILE *out)
gdImageWBMPCtx(gdIOCtx *out) (FUNCTION)(FUNCTION)
gdImageWBMP outputs the specified image to the specified file in WBMP format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageWBMP does not close the file; your code must do so.

WBMP file support is black and white only. The color index specified by the fg argument is the "foreground," and only pixels of this color will be set in the WBMP file. All other pixels will be considered "background."

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.wbmp", "wb");
/* Write WBMP, with black as foreground */
gdImageWBMP(im, black, out);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageWBMPPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImageWBMP except that it returns a pointer to a memory area with the WBMP data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
void gdImageGd(gdImagePtr im, FILE *out) (FUNCTION)
gdImageGd outputs the specified image to the specified file in the gd image format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImagePng does not close the file; your code must do so.

The gd image format is intended for fast reads and writes of images your program will need frequently to build other images. It is not a compressed format, and is not intended for general use.

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.gd", "wb");
/* Write gd format file */
gdImageGd(im, out);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageGdPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImageGd except that it returns a pointer to a memory area with the GD data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
void gdImageGd2(gdImagePtr im, FILE *out, int chunkSize, int fmt) (FUNCTION)
gdImageGd2 outputs the specified image to the specified file in the gd2 image format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageGd2 does not close the file; your code must do so.

The gd2 image format is intended for fast reads and writes of parts of images. It is a compressed format, and well suited to retrieving smll sections of much larger images. The third and fourth parameters are the 'chunk size' and format resposectively.

The file is stored as a series of compressed subimages, and the Chunk Size determines the sub-image size - a value of zero causes the GD library to use the default.

It is also possible to store GD2 files in an uncompressed format, in which case the fourth parameter should be GD2_FMT_RAW.

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.gd", "wb");
/* Write gd2 format file */
gdImageGd2(im, out, 0, GD2_FMT_COMPRESSED);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageGd2Ptr(gdImagePtr im, int chunkSize, int fmt, int *size) (FUNCTION)
Identical to gdImageGd2 except that it returns a pointer to a memory area with the GD2 data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.

Drawing Functions

void gdImageSetPixel(gdImagePtr im, int x, int y, int color) (FUNCTION)
gdImageSetPixel sets a pixel to a particular color index. Always use this function or one of the other drawing functions to access pixels; do not access the pixels of the gdImage structure directly.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Set a pixel near the center. */
gdImageSetPixel(im, 50, 50, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageLine is used to draw a line between two endpoints (x1,y1 and x2, y2). The line is drawn using the color index specified. Note that the color index can be an actual color returned by gdImageColorAllocate or one of gdStyled, gdBrushed or gdStyledBrushed.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a line from the upper left corner to the lower right corner. */
gdImageLine(im, 0, 0, 99, 99, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageDashedLine is provided solely for backwards compatibility with gd 1.0. New programs should draw dashed lines using the normal gdImageLine function and the new gdImageSetStyle function.

gdImageDashedLine is used to draw a dashed line between two endpoints (x1,y1 and x2, y2). The line is drawn using the color index specified. The portions of the line that are not drawn are left transparent so the background is visible.

... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a dashed line from the upper left corner to the lower right corner. */
gdImageDashedLine(im, 0, 0, 99, 99);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImagePolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color) (FUNCTION)
gdImagePolygon is used to draw a polygon with the verticies (at least 3) specified, using the color index specified. See also gdImageFilledPolygon.
... inside a function ...
gdImagePtr im;
int black;
int white;
/* Points of polygon */
gdPoint points[3];
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a triangle. */
points[0].x = 50;
points[0].y = 0;
points[1].x = 99;
points[1].y = 99;
points[2].x = 0;
points[2].y = 99;
gdImagePolygon(im, points, 3, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageRectangle is used to draw a rectangle with the two corners (upper left first, then lower right) specified, using the color index specified.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a rectangle occupying the central area. */
gdImageRectangle(im, 25, 25, 74, 74, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledPolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color) (FUNCTION)
gdImageFilledPolygon is used to fill a polygon with the verticies (at least 3) specified, using the color index specified. See also gdImagePolygon.
... inside a function ...
gdImagePtr im;
int black;
int white;
int red;
/* Points of polygon */
gdPoint points[3];
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Draw a triangle. */
points[0].x = 50;
points[0].y = 0;
points[1].x = 99;
points[1].y = 99;
points[2].x = 0;
points[2].y = 99;
/* Paint it in white */
gdImageFilledPolygon(im, points, 3, white);
/* Outline it in red; must be done second */
gdImagePolygon(im, points, 3, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageFilledRectangle is used to draw a solid rectangle with the two corners (upper left first, then lower right) specified, using the color index specified.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = int gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a filled rectangle occupying the central area. */
gdImageFilledRectangle(im, 25, 25, 74, 74, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) (FUNCTION)
gdImageArc is used to draw a partial ellipse centered at the given point, with the specified width and height in pixels. The arc begins at the position in degrees specified by s and ends at the position specified by e. The arc is drawn in the color specified by the last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Inscribe an ellipse in the image. */
gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color, int style) (FUNCTION)
gdImageFilledArc is used to draw a partial ellipse centered at the given point, with the specified width and height in pixels. The arc begins at the position in degrees specified by s and ends at the position specified by e. The arc is filled in the color specified by the second to last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360. The last argument is a bitwise OR of the following possibilities:
  • gdArc
  • gdChord
  • gdPie (synonym for gdChord)
  • gdNoFill
  • gdEdged
gdArc and gdChord are mutually exclusive; gdChord just connects the starting and ending angles with a straight line, while gdArc produces a rounded edge. gdPie is a synonym for gdArc. gdNoFill indicates that the arc or chord should be outlined, not filled. gdEdged, used together with gdNoFill, indicates that the beginning and ending angles should be connected to the center; this is a good way to outline (rather than fill) a 'pie slice'.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Inscribe a filled pie slice in the image. */
gdImageFilledArc(im, 50, 25, 98, 48, 0, 45, white, gdArc);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledEllipse(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) (FUNCTION)
gdImageFilledEllipse is used to draw an ellipse centered at the given point, with the specified width and height in pixels. The ellipse is filled in the color specified by the last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Inscribe a filled ellipse in the image. */
gdImageFilledEllipse(im, 50, 25, 98, 48, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color) (FUNCTION)
gdImageFillToBorder floods a portion of the image with the specified color, beginning at the specified point and stopping at the specified border color. For a way of flooding an area defined by the color of the starting point, see gdImageFill.

The border color cannot be a special color such as gdTiled; it must be a proper solid color. The fill color can be, however.

Note that gdImageFillToBorder is recursive. It is not the most naive implementation possible, and the implementation is expected to improve, but there will always be degenerate cases in which the stack can become very deep. This can be a problem in MSDOS and MS Windows 3.1 environments. (Of course, in a Unix or Windows 95/98/NT environment with a proper stack, this is not a problem at all.)

... inside a function ...
gdImagePtr im;
int black;
int white;
int red;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Inscribe an ellipse in the image. */
gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
/* Flood-fill the ellipse. Fill color is red, border color is
	white (ellipse). */
gdImageFillToBorder(im, 50, 50, white, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFill(gdImagePtr im, int x, int y, int color) (FUNCTION)
gdImageFill floods a portion of the image with the specified color, beginning at the specified point and flooding the surrounding region of the same color as the starting point. For a way of flooding a region defined by a specific border color rather than by its interior color, see gdImageFillToBorder.

The fill color can be gdTiled, resulting in a tile fill using another image as the tile. However, the tile image cannot be transparent. If the image you wish to fill with has a transparent color index, call gdImageTransparent on the tile image and set the transparent color index to -1 to turn off its transparency.

Note that gdImageFill is recursive. It is not the most naive implementation possible, and the implementation is expected to improve, but there will always be degenerate cases in which the stack can become very deep. This can be a problem in MSDOS and MS Windows environments. (Of course, in a Unix or Windows 95/98/NT environment with a proper stack, this is not a problem at all.)

... inside a function ...
gdImagePtr im;
int black;
int white;
int red;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Inscribe an ellipse in the image. */
gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
/* Flood-fill the ellipse. Fill color is red, and will replace the
	black interior of the ellipse. */
gdImageFill(im, 50, 50, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageSetBrush(gdImagePtr im, gdImagePtr brush) (FUNCTION)
A "brush" is an image used to draw wide, shaped strokes in another image. Just as a paintbrush is not a single point, a brush image need not be a single pixel. Any gd image can be used as a brush, and by setting the transparent color index of the brush image with gdImageColorTransparent, a brush of any shape can be created. All line-drawing functions, such as gdImageLine and gdImagePolygon, will use the current brush if the special "color" gdBrushed or gdStyledBrushed is used when calling them.

gdImageSetBrush is used to specify the brush to be used in a particular image. You can set any image to be the brush. If the brush image does not have the same color map as the first image, any colors missing from the first image will be allocated. If not enough colors can be allocated, the closest colors already available will be used. This allows arbitrary PNGs to be used as brush images. It also means, however, that you should not set a brush unless you will actually use it; if you set a rapid succession of different brush images, you can quickly fill your color map, and the results will not be optimal.

You need not take any special action when you are finished with a brush. As for any other image, if you will not be using the brush image for any further purpose, you should call gdImageDestroy. You must not use the color gdBrushed if the current brush has been destroyed; you can of course set a new brush to replace it.

... inside a function ...
gdImagePtr im, brush;
FILE *in;
int black;
im = gdImageCreate(100, 100);
/* Open the brush PNG. For best results, portions of the
	brush that should be transparent (ie, not part of the
	brush shape) should have the transparent color index. */
in = fopen("star.png", "rb");
brush = gdImageCreateFromPng(in);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
gdImageSetBrush(im, brush);
/* Draw a line from the upper left corner to the lower right corner
	using the brush. */
gdImageLine(im, 0, 0, 99, 99, gdBrushed);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
/* Destroy the brush image */
gdImageDestroy(brush);
void gdImageSetTile(gdImagePtr im, gdImagePtr tile) (FUNCTION)
A "tile" is an image used to fill an area with a repeated pattern. Any gd image can be used as a tile, and by setting the transparent color index of the tile image with gdImageColorTransparent, a tile that allows certain parts of the underlying area to shine through can be created. All region-filling functions, such as gdImageFill and gdImageFilledPolygon, will use the current tile if the special "color" gdTiled is used when calling them.

gdImageSetTile is used to specify the tile to be used in a particular image. You can set any image to be the tile. If the tile image does not have the same color map as the first image, any colors missing from the first image will be allocated. If not enough colors can be allocated, the closest colors already available will be used. This allows arbitrary PNGs to be used as tile images. It also means, however, that you should not set a tile unless you will actually use it; if you set a rapid succession of different tile images, you can quickly fill your color map, and the results will not be optimal.

You need not take any special action when you are finished with a tile. As for any other image, if you will not be using the tile image for any further purpose, you should call gdImageDestroy. You must not use the color gdTiled if the current tile has been destroyed; you can of course set a new tile to replace it.

... inside a function ...
gdImagePtr im, tile;
FILE *in;
int black;
im = gdImageCreate(100, 100);
/* Open the tile PNG. For best results, portions of the
	tile that should be transparent (ie, allowing the
	background to shine through) should have the transparent
	color index. */
in = fopen("star.png", "rb");
tile = gdImageCreateFromPng(in);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
gdImageSetTile(im, tile);
/* Fill an area using the tile. */
gdImageFilledRectangle(im, 25, 25, 75, 75, gdTiled);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
/* Destroy the tile image */
gdImageDestroy(tile);
void gdImageSetStyle(gdImagePtr im, int *style, int styleLength) (FUNCTION)
It is often desirable to draw dashed lines, dotted lines, and other variations on a broken line. gdImageSetStyle can be used to set any desired series of colors, including a special color that leaves the background intact, to be repeated during the drawing of a line.

To use gdImageSetStyle, create an array of integers and assign them the desired series of color values to be repeated. You can assign the special color value gdTransparent to indicate that the existing color should be left unchanged for that particular pixel (allowing a dashed line to be attractively drawn over an existing image).

Then, to draw a line using the style, use the normal gdImageLine function with the special color value gdStyled.

As of version 1.1.1, the style array is copied when you set the style, so you need not be concerned with keeping the array around indefinitely. This should not break existing code that assumes styles are not copied.

You can also combine styles and brushes to draw the brush image at intervals instead of in a continuous stroke. When creating a style for use with a brush, the style values are interpreted differently: zero (0) indicates pixels at which the brush should not be drawn, while one (1) indicates pixels at which the brush should be drawn. To draw a styled, brushed line, you must use the special color value gdStyledBrushed. For an example of this feature in use, see gddemo.c (provided in the distribution).

gdImagePtr im;
int styleDotted[2], styleDashed[6];
FILE *in;
int black;
int red;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Set up dotted style. Leave every other pixel alone. */
styleDotted[0] = red;
styleDotted[1] = gdTransparent;
/* Set up dashed style. Three on, three off. */
styleDashed[0] = red;
styleDashed[1] = red;
styleDashed[2] = red;
styleDashed[3] = gdTransparent;
styleDashed[4] = gdTransparent;
styleDashed[5] = gdTransparent;
/* Set dotted style. Note that we have to specify how many pixels are
	in the style! */
gdImageSetStyle(im, styleDotted, 2);
/* Draw a line from the upper left corner to the lower right corner. */
gdImageLine(im, 0, 0, 99, 99, gdStyled);
/* Now the dashed line. */
gdImageSetStyle(im, styleDashed, 6);
gdImageLine(im, 0, 99, 0, 99, gdStyled);

/* ... Do something with the image, such as saving it to a file ... */

/* Destroy it */
gdImageDestroy(im);
void gdImageAlphaBlending(gdImagePtr im, int blending) (FUNCTION)
The gdImageAlphaBlending function allows for two different modes of drawing on truecolor images. In blending mode, the alpha channel component of the color supplied to all drawing functions, such as gdImageSetPixel, determines how much of the underlying color should be allowed to shine through. As a result, gd automatically blends the existing color at that point with the drawing color, and stores the result in the image. The resulting pixel is opaque. In non-blending mode, the drawing color is copied literally with its alpha channel information, replacing the destination pixel. Blending mode is not available when drawing on palette images.
gdImagePtr im;
int red, blue;
im = gdImageCreateTrueColor(100, 100);
/* Background color */
red = gdTrueColor(255, 0, 0);	
gdImageFilledRectangle(im, 0, 0, 100, 100, red);
/* Drawing color. Full transparency would be an alpha channel value
	of 127 (gd has a 7 bit alpha chnanel). 0 is opaque,
	127 is transparent. So cut gdAlphaTransparent in half to get
	50% blending. */
blue = gdTrueColorAlpha(0, 0, 255, gdAlphaTransparent / 2);	
/* Draw with blending. Result will be 50% red, 50% blue: yellow 
	(emitted light, remember, not reflected light. What you learned 
	in Kindergarten is wrong here). */
gdImageAlphaBlending(im, 1);
gdImageFilledRectangle(im, 0, 0, 25, 25, blue);
/* Draw without blending. Result will be 50% blue, 50%
	the background color of the image viewer or web browser
	used; results in browsers that don't support
	semi-transparent pixels are unpredictable! */
gdImageAlphaBlending(im, 0);
gdImageFilledRectangle(im, 75, 75, 25, 25, blue);
/* Write the image to disk, etc. */

Query Functions

int gdImageAlpha(gdImagePtr im, int color) (MACRO)
gdImageAlpha is a macro which returns the alpha channel component of the specified color index. Alpha channel values vary between 0 (gdAlphaOpaque), which does not blend at all with the background, through 127 (gdAlphaTransparent), which allows the background to shine through 100%. Use this macro rather than accessing the structure members directly. int gdImageBlue(gdImagePtr im, int color) (MACRO)
gdImageBlue is a macro which returns the blue component of the specified color index. Use this macro rather than accessing the structure members directly.
int gdImageGetPixel(gdImagePtr im, int x, int y) (FUNCTION)
gdImageGetPixel() retrieves the color index of a particular pixel. Always use this function to query pixels; do not access the pixels of the gdImage structure directly.
... inside a function ...
FILE *in;
gdImagePtr im;
int c;
in = fopen("mypng.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
c = gdImageGetPixel(im, gdImageSX(im) / 2, gdImageSY(im) / 2);
printf("The value of the center pixel is %d; RGB values are %d,%d,%d\n",
	c, im->red[c], im->green[c], im->blue[c]);
gdImageDestroy(im);
int gdImageBoundsSafe(gdImagePtr im, int x, int y) (FUNCTION)
gdImageBoundsSafe returns true (1) if the specified point is within the bounds of the image, false (0) if not. This function is intended primarily for use by those who wish to add functions to gd. All of the gd drawing functions already clip safely to the edges of the image.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
if (gdImageBoundsSafe(im, 50, 50)) {
	printf("50, 50 is within the image bounds\n");
} else {
	printf("50, 50 is outside the image bounds\n");
}
gdImageDestroy(im);
int gdImageGreen(gdImagePtr im, int color) (MACRO)
gdImageGreen is a macro which returns the green component of the specified color index. Use this macro rather than accessing the structure members directly.
int gdImageRed(gdImagePtr im, int color) (MACRO)
gdImageRed is a macro which returns the red component of the specified color index. Use this macro rather than accessing the structure members directly.
int gdImageSX(gdImagePtr im) (MACRO)
gdImageSX is a macro which returns the width of the image in pixels. Use this macro rather than accessing the structure members directly.
int gdImageSY(gdImagePtr im) (MACRO)
gdImageSY is a macro which returns the height of the image in pixels. Use this macro rather than accessing the structure members directly.

Fonts and text-handling functions

void gdImageChar(gdImagePtr im, gdFontPtr font, int x, int y, int c, int color) (FUNCTION)
gdImageChar is used to draw single characters on the image. (To draw multiple characters, use gdImageString or gdImageString16. See also gdImageStringFT for a high quality solution.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The character specified by the fifth argument is drawn from left to right in the specified color. (See gdImageCharUp for a way of drawing vertical text.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a character. */
gdImageChar(im, gdFontLarge, 0, 0, 'Q', white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageCharUp(gdImagePtr im, gdFontPtr font, int x, int y, int c, int color) (FUNCTION)
gdImageCharUp is used to draw single characters on the image, rotated 90 degrees. (To draw multiple characters, use gdImageStringUp or gdImageStringUp16.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The character specified by the fifth argument is drawn from bottom to top, rotated at a 90-degree angle, in the specified color. (See gdImageChar for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a character upwards so it rests against the top of the image. */
gdImageCharUp(im, gdFontLarge,
	0, gdFontLarge->h, 'Q', white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageString(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) (FUNCTION)
gdImageString is used to draw multiple characters on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated C string specified by the fifth argument is drawn from left to right in the specified color. (See gdImageStringUp for a way of drawing vertical text. See also gdImageStringFT for a high quality solution.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
#include <string.h>
... inside a function ...
gdImagePtr im;
int black;
int white;
/* String to draw. */
char *s = "Hello.";
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a centered string. */
gdImageString(im, gdFontLarge,
	im->w / 2 - (strlen(s) * gdFontLarge->w / 2),
	im->h / 2 - gdFontLarge->h / 2,
	s, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageString16(gdImagePtr im, gdFontPtr font, int x, int y, unsigned short *s, int color) (FUNCTION)
gdImageString is used to draw multiple 16-bit characters on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated string of characters represented as 16-bit unsigned short integers specified by the fifth argument is drawn from left to right in the specified color. (See gdImageStringUp16 for a way of drawing vertical text.) Pixels not set by a particular character retain their previous color.

This function was added in gd1.3 to provide a means of rendering fonts with more than 256 characters for those who have them. A more frequently used routine is gdImageString.

void gdImageStringUp(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) (FUNCTION)
gdImageStringUp is used to draw multiple characters on the image, rotated 90 degrees. (To draw single characters, use gdImageCharUp.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts.The null-terminated C string specified by the fifth argument is drawn from bottom to top (rotated 90 degrees) in the specified color. (See gdImageString for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
#include <string.h>
... inside a function ...
gdImagePtr im;
int black;
int white;
/* String to draw. */
char *s = "Hello.";
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a centered string going upwards. Axes are reversed,
	and Y axis is decreasing as the string is drawn. */
gdImageStringUp(im, gdFontLarge,
	im->w / 2 - gdFontLarge->h / 2,
	im->h / 2 + (strlen(s) * gdFontLarge->w / 2),
	s, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageStringUp16(gdImagePtr im, gdFontPtr font, int x, int y, unsigned short *s, int color) (FUNCTION)
gdImageString is used to draw multiple 16-bit characters vertically on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated string of characters represented as 16-bit unsigned short integers specified by the fifth argument is drawn from bottom to top in the specified color. (See gdImageStringUp16 for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color.

This function was added in gd1.3 to provide a means of rendering fonts with more than 256 characters for those who have them. A more frequently used routine is gdImageStringUp.

char *gdImageStringFT(gdImagePtr im, int *brect, int fg, char *fontname, double ptsize, double angle, int x, int y, char *string) (FUNCTION)
RECOMMENDED. New in 1.8.4. gdImageStringFT draws text using the FreeType 2.x library.

gdImageStringFT draws a string of anti-aliased characters on the image using the FreeType library to render user-supplied TrueType fonts. We do not provide TrueType fonts (.ttf and .ttc files). Obtaining them is entirely up to you. The string is anti-aliased, meaning that there should be fewer "jaggies" visible. The fontname is the full pathname to a TrueType font file, or a font face name if the GDFONTPATH environment variable or FreeType's DEFAULT_FONTPATH variable have been set intelligently. The string may be arbitrarily scaled (ptsize) and rotated (angle in radians).

The user-supplied int brect[8] array is filled on return from gdImageStringFT with the 8 elements representing the 4 corner coordinates of the bounding rectangle.
0 lower left corner, X position
lower left corner, Y position
lower right corner, X position
3 lower right corner, Y position
4 upper right corner, X position
5 upper right corner, Y position
6 upper left corner, X position
7 upper left corner, Y position

The points are relative to the text regardless of the angle, so "upper left" means in the top left-hand corner seeing the text horizontally.

Use a NULL gdImagePtr to get the bounding rectangle without rendering. This is a relatively cheap operation if followed by a rendering of the same string, because of the caching of the partial rendering during bounding rectangle calculation.

The string is rendered in the color indicated by the gf color index. Use the negative of the desired color index to disable anti-aliasing.

The string may contain UTF-8 sequences like: "&#192;"

gdImageStringFT will return a null char* on success, or an error string on failure.

#include "gd.h"
#include <string.h>
... inside a function ...
gdImagePtr im;
int black;
int white;
int brect[8];
int x, y;
char *err;

char *s = "Hello."; /* String to draw. */
double sz = 40.;
char *f = "/usr/local/share/ttf/Times.ttf";  /* User supplied font */

/* obtain brect so that we can size the image */
err = gdImageStringFT(NULL,&brect[0],0,f,sz,0.,0,0,s);
if (err) {fprintf(stderr,err); return 1;}

/* create an image big enough for the string plus a little whitespace */
x = brect[2]-brect[6] + 6;
y = brect[3]-brect[7] + 6;
im = gdImageCreate(x,y);

/* Background color (first allocated) */
white = gdImageColorResolve(im, 255, 255, 255);
black = gdImageColorResolve(im, 0, 0, 0);

/* render the string, offset origin to center string*/
/* note that we use top-left coordinate for adjustment
 * since gd origin is in top-left with y increasing downwards. */
x = 3 - brect[6];
y = 3 - brect[7];
err = gdImageStringFT(im,&brect[0],black,f,sz,0.0,x,y,s);
if (err) {fprintf(stderr,err); return 1;}

/* Write img to stdout */
gdImagePng(im, stdout);

/* Destroy it */
gdImageDestroy(im);
char *gdImageStringTTF(gdImagePtr im, int *brect, int fg, char *fontname, double ptsize, double angle, int x, int y, char *string) (FUNCTION)
DEPRECATED. THis function simply invokes gdImageStringFT for backwards compatibility with old code that was written with FreeType 1.x. /DL>

Color-handling functions

int gdImageColorAllocate(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorAllocate finds the first available color index in the image specified, sets its RGB values to those requested (255 is the maximum for each), and returns the index of the new color table entry, or an RGBA value in the case of a truecolor image; in either case you can then use the returned value as a parameter to drawing functions. When creating a new palette-based image, the first time you invoke this function, you are setting the background color for that image.

In the event that all gdMaxColors colors (256) have already been allocated, gdImageColorAllocate will return -1 to indicate failure. (This is not uncommon when working with existing PNG files that already use 256 colors.) Note that gdImageColorAllocate does not check for existing colors that match your request; see gdImageColorExact, gdImageColorClosest and gdImageColorClosestHWB for ways to locate existing colors that approximate the color desired in situations where a new color is not available. Also see gdImageColorResolve, new in gd-1.6.2.

... inside a function ...
gdImagePtr im;
int black;
int red;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Draw a dashed line from the upper left corner to the lower right corner. */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorAllocateAlpha(gdImagePtr im, int r, int g, int b, int a) (FUNCTION)
gdImageColorAllocateAlpha finds the first available color index in the image specified, sets its RGBA values to those requested (255 is the maximum for red, green and blue, and 127 represents full transparency for alpha), and returns the index of the new color table entry, or an RGBA value in the case of a truecolor image; in either case you can then use the returned value as a parameter to drawing functions. When creating a new palette-based image, the first time you invoke this function, you are setting the background color for that image.

In the event that all gdMaxColors colors (256) have already been allocated, gdImageColorAllocate will return -1 to indicate failure. (This is not uncommon when working with existing palette-based PNG files that already use 256 colors.) Note that gdImageColorAllocateAlpha does not check for existing colors that match your request; see gdImageColorExactAlpha and gdImageColorClosestAlpha for ways to locate existing colors that approximate the color desired in situations where a new color is not available. Also see gdImageColorResolveAlpha.

... inside a function ...
gdImagePtr im;
int black;
int red;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color red, 50% transparent. */
red = gdImageColorAllocateAlpha(im, 255, 0, 0, 64);	
/* Draw a dashed line from the upper left corner to the lower right corner. */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorClosest(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorClosest searches the colors which have been defined thus far in the image specified and returns the index of the color with RGB values closest to those of the request. (Closeness is determined by Euclidian distance, which is used to determine the distance in three-dimensional color space between colors.)

If no colors have yet been allocated in the image, gdImageColorClosest returns -1.

When applied to a truecolor image, this function always succeeds in returning the desired color.

This function is most useful as a backup method for choosing a drawing color when an image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing PNG files that already use many colors.) See gdImageColorExact for a method of locating exact matches only.

... inside a function ...
gdImagePtr im;
FILE *in;
int red;
/* Let's suppose that photo.png is a scanned photograph with
	many colors. */
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Try to allocate red directly */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* If we fail to allocate red... */
if (red == (-1)) {
	/* Find the closest color instead. */
	red = gdImageColorClosest(im, 255, 0, 0);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorClosestAlpha(gdImagePtr im, int r, int g, int b, int a) (FUNCTION)
gdImageColorClosest searches the colors which have been defined thus far in the image specified and returns the index of the color with RGBA values closest to those of the request. (Closeness is determined by Euclidian distance, which is used to determine the distance in four-dimensional color/alpha space between colors.)

If no colors have yet been allocated in the image, gdImageColorClosestAlpha returns -1.

When applied to a truecolor image, this function always succeeds in returning the desired color.

This function is most useful as a backup method for choosing a drawing color when a palette-based image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing palette-based PNG files that already use many colors.) See gdImageColorExactAlpha for a method of locating exact matches only.

... inside a function ...
gdImagePtr im;
FILE *in;
int red;
/* Let's suppose that photo.png is a scanned photograph with
	many colors. */
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Try to allocate red, 50% transparent, directly */
red = gdImageColorAllocateAlpha(im, 255, 0, 0, 64);	
/* If we fail to allocate red... */
if (red == (-1)) {
	/* Find the closest color instead. */
	red = gdImageColorClosestAlpha(im, 255, 0, 0, 64);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorClosestHWB(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorClosestHWB searches the colors which have been defined thus far in the image specified and returns the index of the color with hue, whiteness and blackness closest to the requested color. This scheme is typically superior to the Euclidian distance scheme used by gdImageColorClosest.

If no colors have yet been allocated in the image, gdImageColorClosestHWB returns -1.

When applied to a truecolor image, this function always succeeds in returning the desired color.

This function is most useful as a backup method for choosing a drawing color when an image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing PNG files that already use many colors.) See gdImageColorExact for a method of locating exact matches only.

... inside a function ...
gdImagePtr im;
FILE *in;
int red;
/* Let's suppose that photo.png is a scanned photograph with
	many colors. */
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Try to allocate red directly */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* If we fail to allocate red... */
if (red == (-1)) {
	/* Find the closest color instead. */
	red = gdImageColorClosestHWB(im, 255, 0, 0);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorExact(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorExact searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGB values which exactly match those of the request. If no allocated color matches the request precisely, gdImageColorExact returns -1. See gdImageColorClosest for a way to find the color closest to the color requested.

When applied to a truecolor image, this function always succeeds in returning the desired color.

... inside a function ...
gdImagePtr im;
int red;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* The image may already contain red; if it does, we'll save a slot
	in the color table by using that color. */
/* Try to allocate red directly */
red = gdImageColorExact(im, 255, 0, 0);
/* If red isn't already present... */
if (red == (-1)) {
	/* Second best: try to allocate it directly. */
	red = gdImageColorAllocate(im, 255, 0, 0);	
	/* Out of colors, so find the closest color instead. */
	red = gdImageColorClosest(im, 255, 0, 0);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorResolve(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorResolve searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGB values which exactly match those of the request. If no allocated color matches the request precisely, then gdImageColorResolve tries to allocate the exact color. If there is no space left in the color table then gdImageColorResolve returns the closest color (as in gdImageColorClosest). This function always returns an index of a color.

When applied to a truecolor image, this function always succeeds in returning the desired color.

... inside a function ...
gdImagePtr im;
int red;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* The image may already contain red; if it does, we'll save a slot
	in the color table by using that color. */
/* Get index of red, or color closest to red */
red = gdImageColorResolve(im, 255, 0, 0);
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorResolveAlpha(gdImagePtr im, int r, int g, int b, int a) (FUNCTION)
gdImageColorResolveAlpha searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGBA values which exactly match those of the request. If no allocated color matches the request precisely, then gdImageColorResolveAlpha tries to allocate the exact color. If there is no space left in the color table then gdImageColorResolveAlpha returns the closest color (as in gdImageColorClosestAlpha). This function always returns an index of a color.

When applied to a truecolor image, this function always succeeds in returning the desired color.

... inside a function ...
gdImagePtr im;
int red;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* The image may already contain red; if it does, we'll save a slot
	in the color table by using that color. */
/* Get index of red, 50% transparent, or the next best thing */
red = gdImageColorResolveAlpha(im, 255, 0, 0, 64);
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorsTotal(gdImagePtr im) (MACRO)
gdImageColorsTotal is a macro which returns the number of colors currently allocated in a palette image. For truecolor images, the result of this call is undefined and should not be used.
int gdImageColorRed(gdImagePtr im, int c) (MACRO)
gdImageColorRed is a macro which returns the red portion of the specified color in the image. This macro works for both palette and truecolor images.
int gdImageColorGreen(gdImagePtr im, int c) (MACRO)
gdImageColorGreen is a macro which returns the green portion of the specified color in the image. This macro works for both palette and truecolor images.
int gdImageColorBlue(gdImagePtr im, int c) (MACRO)
gdImageColorBlue is a macro which returns the green portion of the specified color in the image. This macro works for both palette and truecolor images.
int gdImageGetInterlaced(gdImagePtr im) (MACRO)
gdImageGetInterlaced is a macro which returns true (1) if the image is interlaced, false (0) if not. Use this macro to obtain this information; do not access the structure directly. See gdImageInterlace for a means of interlacing images.
int gdImageGetTransparent(gdImagePtr im) (MACRO)
gdImageGetTransparent is a macro which returns the current transparent color index in the image. If there is no transparent color, gdImageGetTransparent returns -1. Use this macro to obtain this information; do not access the structure directly.
void gdImageColorDeallocate(gdImagePtr im, int color) (FUNCTION)
gdImageColorDeallocate marks the specified color as being available for reuse. It does not attempt to determine whether the color index is still in use in the image. After a call to this function, the next call to gdImageColorAllocate for the same image will set new RGB values for that color index, changing the color of any pixels which have that index as a result. If multiple calls to gdImageColorDeallocate are made consecutively, the lowest-numbered index among them will be reused by the next gdImageColorAllocate call.
... inside a function ...
gdImagePtr im;
int red, blue;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Look for red in the color table. */
red = gdImageColorExact(im, 255, 0, 0);
/* If red is present... */
if (red != (-1)) {
	/* Deallocate it. */
	gdImageColorDeallocate(im, red);
	/* Allocate blue, reusing slot in table.
		Existing red pixels will change color. */
	blue = gdImageColorAllocate(im, 0, 0, 255);
}
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageColorTransparent(gdImagePtr im, int color) (FUNCTION)
gdImageColorTransparent sets the transparent color index for the specified image to the specified index. To indicate that there should be no transparent color, invoke gdImageColorTransparent with a color index of -1. Note that JPEG images do not support transparency, so this setting has no effect when writing JPEG images.

The color index used should be an index allocated by gdImageColorAllocate, whether explicitly invoked by your code or implicitly invoked by loading an image. In order to ensure that your image has a reasonable appearance when viewed by users who do not have transparent background capabilities (or when you are writing a JPEG-format file, which does not support transparency), be sure to give reasonable RGB values to the color you allocate for use as a transparent color, even though it will be transparent on systems that support PNG transparency.

... inside a function ...
gdImagePtr im;
int black;
FILE *in, *out;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Look for black in the color table and make it transparent. */
black = gdImageColorExact(im, 0, 0, 0);
/* If black is present... */
if (black != (-1)) {
	/* Make it transparent */
	gdImageColorTransparent(im, black);
}
/* Save the newly-transparent image back to the file */
out = fopen("photo.png", "wb");
gdImagePng(im, out);
fclose(out);
/* Destroy it */
gdImageDestroy(im);
void gdImageTrueColor(int red, int green, int blue) (MACRO)
gdImageTrueColor returns an RGBA color value for use when drawing on a truecolor image. Red, green, and blue are all in the range between 0 (off) and 255 (maximum). This macro should not be used with palette-based images. If you need to write code which is compatible with both palette-based and truecolor images, use gdImageColorResolve.
void gdImageTrueColorAlpha(int red, int green, int blue, int alpha) (MACRO)
gdImageTrueColorAlpha returns an RGBA color value for use when drawing on a truecolor image with alpha channel transparency. Red, green, and blue are all in the range between 0 (off) and 255 (maximum). Alpha is in the range between 0 (opaque) and 127 (fully transparent). This macro should not be used with palette-based images. If you need to write code which is compatible with both palette-based and truecolor images, use gdImageColorResolveAlpha.

Copying and resizing functions

void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h) (FUNCTION)
gdImageCopy is used to copy a rectangular portion of one image to another image. (For a way of stretching or shrinking the image in the process, see gdImageCopyResized.)

The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The w and h arguments specify the width and height of the region.

When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable.

Important note on copying between images: since different images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. gdImageCopy will attempt to find an identical RGB value in the destination image for each pixel in the copied portion of the source image by invoking gdImageColorExact. If such a value is not found, gdImageCopy will attempt to allocate colors as needed using gdImageColorAllocate. If both of these methods fail, gdImageCopy will invoke gdImageColorClosest to find the color in the destination image which most closely approximates the color of the pixel being copied.

... Inside a function ...
gdImagePtr im_in;
gdImagePtr im_out;
int x, y;
FILE *in;
FILE *out;
/* Load a small png to tile the larger one with */
in = fopen("small.png", "rb");
im_in = gdImageCreateFromPng(in);
fclose(in);
/* Make the output image four times as large on both axes */
im_out = gdImageCreate(im_in->sx * 4, im_in->sy * 4);
/* Now tile the larger image using the smaller one */
for (y = 0; (y < 4); y++) {
	for (x = 0; (x < 4); x++) {
		gdImageCopy(im_out, im_in,
			x * im_in->sx, y * im_in->sy,
			0, 0,
			im_in->sx, im_in->sy);
	}
}
out = fopen("tiled.png", "wb");
gdImagePng(im_out, out);
fclose(out);
gdImageDestroy(im_in);
gdImageDestroy(im_out);
void gdImageCopyResized(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH) (FUNCTION)
gdImageCopyResized is used to copy a rectangular portion of one image to another image. The X and Y dimensions of the original region and the destination region can vary, resulting in stretching or shrinking of the region as appropriate. (For a simpler version of this function which does not deal with resizing, see gdImageCopy.)

The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The dstW and dstH arguments specify the width and height of the destination region. The srcW and srcH arguments specify the width and height of the source region and can differ from the destination size, allowing a region to be scaled during the copying process.

When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable. If this presents a problem, create a scratch image in which to keep intermediate results.

Important note on copying between images: since images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. gdImageCopy will attempt to find an identical RGB value in the destination image for each pixel in the copied portion of the source image by invoking gdImageColorExact. If such a value is not found, gdImageCopy will attempt to allocate colors as needed using gdImageColorAllocate. If both of these methods fail, gdImageCopy will invoke gdImageColorClosest to find the color in the destination image which most closely approximates the color of the pixel being copied.

... Inside a function ...
gdImagePtr im_in;
gdImagePtr im_out;
int x, y;
FILE *in;
FILE *out;
/* Load a small png to expand in the larger one */
in = fopen("small.png", "rb");
im_in = gdImageCreateFromPng(in);
fclose(in);
/* Make the output image four times as large on both axes */
im_out = gdImageCreate(im_in->sx * 4, im_in->sy * 4);
/* Now copy the smaller image, but four times larger */
gdImageCopyResized(im_out, im_in, 0, 0, 0, 0,
	im_out->sx, im_out->sy,
	im_in->sx, im_in->sy);	
out = fopen("large.png", "wb");
gdImagePng(im_out, out);
fclose(out);
gdImageDestroy(im_in);
gdImageDestroy(im_out);
void gdImageCopyResampled(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH) (FUNCTION)
gdImageCopyResampled is used to copy a rectangular portion of one image to another image, smoothly interpolating pixel values so that, in particular, reducing the size of an image still retains a great deal of clarity. The X and Y dimensions of the original region and the destination region can vary, resulting in stretching or shrinking of the region as appropriate. (For a simpler version of this function which does not deal with resizing, see gdImageCopy. For a version which does not interpolate pixel values, see gdImageCopyResized.

Pixel values are only interpolated if the destination image is a truecolor image. Otherwise, gdImageCopyResized is automatically invoked.

The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The dstW and dstH arguments specify the width and height of the destination region. The srcW and srcH arguments specify the width and height of the source region and can differ from the destination size, allowing a region to be scaled during the copying process.

When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable. If this presents a problem, create a scratch image in which to keep intermediate results.

Important note on copying between images: since images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. If the destination image is a palette image, gd will use the gdImageColorResolve function to determine the best color available.

... Inside a function ...
gdImagePtr im_in;
gdImagePtr im_out;
int x, y;
FILE *in;
FILE *out;
/* Load a large png to shrink in the smaller one */
in = fopen("large.png", "rb");
im_in = gdImageCreateFromPng(in);
fclose(in);
/* Make the output image four times as small on both axes. Use
	a true color image so that we can interpolate colors. */
im_out = gdImageCreateTrueColor(im_in->sx / 4, im_in->sy / 4);
/* Now copy the large image, but four times smaller */
gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0,
	im_out->sx, im_out->sy,
	im_in->sx, im_in->sy);	
out = fopen("large.png", "wb");
gdImagePng(im_out, out);
fclose(out);
gdImageDestroy(im_in);
gdImageDestroy(im_out);
void gdImageCopyMerge(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) (FUNCTION)
gdImageCopyMerge is almost identical to gdImageCopy, except that it 'merges' the two images by an amount specified in the last parameter. If the last parameter is 100, then it will function identically to gdImageCopy - the source image replaces the pixels in the destination.

If, however, the pct parameter is less than 100, then the two images are merged. With pct = 0, no action is taken.

This feature is most useful to 'highlight' sections of an image by merging a solid color with pct = 50:

... Inside a function ...
gdImageCopyMerge(im_out, im_in, 100, 200, 0, 0, 30, 50, 50);
void gdImageCopyMergeGray(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) (FUNCTION)
gdImageCopyMergeGray is almost identical to gdImageCopyMerge, except that when merging images it preserves the hue of the source by converting the destination pixels to grey scale before the copy operation.
... Inside a function ...
gdImageCopyMergeGray(im_out, im_in, 100, 200, 0, 0, 30, 50, 50);
void gdImagePaletteCopy(gdImagePtr dst, gdImagePtr src) (FUNCTION)
Copies a palette from one image to another, attempting to match the colors in the target image to the colors in the source palette.

Miscellaneous Functions

int gdImageCompare(gdImagePtr im1, gdImagePtr im2) (FUNCTION)
gdImageCompare returns a bitmap indicating if the two images are different. The members of the bitmap are defined in gd.h, but the most important is GD_CMP_IMAGE, which indicated that the images will actually appear different when displayed. Other, less important, differences relate to pallette entries. Any difference in the transparent colour is assumed to make images display differently, even if the transparent colour is not used.
... Inside a function ...
cmpMask = gdImageCompare(im1, im2);
gdImageInterlace(gdImagePtr im, int interlace) (FUNCTION)
gdImageInterlace is used to determine whether an image should be stored in a linear fashion, in which lines will appear on the display from first to last, or in an interlaced fashion, in which the image will "fade in" over several passes. By default, images are not interlaced. (When writing JPEG images, interlacing implies generating progressive JPEG files, which are represented as a series of scans of increasing quality. Noninterlaced gd images result in regular [sequential] JPEG data streams.)

A nonzero value for the interlace argument turns on interlace; a zero value turns it off. Note that interlace has no effect on other functions, and has no meaning unless you save the image in PNG or JPEG format; the gd and xbm formats do not support interlace.

When a PNG is loaded with gdImageCreateFromPng or a JPEG is loaded with gdImageCreateFromJpeg, interlace will be set according to the setting in the PNG or JPEG file.

Note that many PNG and JPEG viewers and web browsers do not support interlace or the incremental display of progressive JPEGs. However, the interlaced PNG or progressive JPEG should still display; it will simply appear all at once, just as other images do.

gdImagePtr im;
FILE *out;
/* ... Create or load the image... */

/* Now turn on interlace */
gdImageInterlace(im, 1);
/* And open an output file */
out = fopen("test.png", "wb");
/* And save the image  -- could also use gdImageJpeg */
gdImagePng(im, out);
fclose(out);
gdImageDestroy(im);
gdFree(void *ptr) (FUNCTION)
gdFree provides a reliable way to free memory allocated by functions such as gdImagePngPtr which return blocks of memory. Use of this function guarantees that the version of free() that is ultimately called will be intended for use with the version of malloc() that originally allocated the block.

Constants

gdBrushed (CONSTANT)
Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdBrushed is used as the color, the brush image set with gdImageSetBrush is drawn in place of each pixel of the line (the brush is usually larger than one pixel, creating the effect of a wide paintbrush). See also gdStyledBrushed for a way to draw broken lines with a series of distinct copies of an image.
gdMaxColors(CONSTANT)
The constant 256. This is the maximum number of colors in a PNG file according to the PNG standard, and is also the maximum number of colors in a gd image.
gdStyled (CONSTANT)
Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdStyled is used as the color, the colors of the pixels are drawn successively from the style that has been set with gdImageSetStyle. If the color of a pixel is equal to gdTransparent, that pixel is not altered. (This mechanism is completely unrelated to the "transparent color" of the image itself; see gdImageColorTransparent gdImageColorTransparent for that mechanism.) See also gdStyledBrushed.
gdStyledBrushed (CONSTANT)
Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdStyledBrushed is used as the color, the brush image set with gdImageSetBrush is drawn at each pixel of the line, providing that the style set with gdImageSetStyle contains a nonzero value (OR gdTransparent, which does not equal zero but is supported for consistency) for the current pixel. (Pixels are drawn successively from the style as the line is drawn, returning to the beginning when the available pixels in the style are exhausted.) Note that this differs from the behavior of gdStyled, in which the values in the style are used as actual pixel colors, except for gdTransparent.
gdDashSize (CONSTANT)
The length of a dash in a dashed line. Defined to be 4 for backwards compatibility with programs that use gdImageDashedLine. New programs should use gdImageSetStyle and call the standard gdImageLine function with the special "color" gdStyled or gdStyledBrushed.
gdTiled (CONSTANT)
Used in place of a normal color in gdImageFilledRectangle, gdImageFilledPolygon, gdImageFill, and gdImageFillToBorder. gdTiled selects a pixel from the tile image set with gdImageSetTile in such a way as to ensure that the filled area will be tiled with copies of the tile image. See the discussions of gdImageFill and gdImageFillToBorder for special restrictions regarding those functions.
gdTransparent (CONSTANT)
Used in place of a normal color in a style to be set with gdImageSetStyle. gdTransparent is not the transparent color index of the image; for that functionality please see gdImageColorTransparent.

About the additional .gd image file format

In addition to reading and writing the PNG and JPEG formats and reading the X Bitmap format, gd has the capability to read and write its own ".gd" format. This format is not intended for general purpose use and should never be used to distribute images. It is not a compressed format. Its purpose is solely to allow very fast loading of images your program needs often in order to build other images for output. If you are experiencing performance problems when loading large, fixed PNG images your program needs to produce its output images, you may wish to examine the functions gdImageCreateFromGd and gdImageGd, which read and write .gd format images.

The program "pngtogd.c" is provided as a simple way of converting .png files to .gd format. I emphasize again that you will not need to use this format unless you have a need for high-speed loading of a few frequently-used images in your program.

About the .gd2 image file format

In addition to reading and writing the PNG format and reading the X Bitmap format, gd has the capability to read and write its own ".gd2" format. This format is not intended for general purpose use and should never be used to distribute images. It is a compressed format allowing pseudo-random access to large image files. Its purpose is solely to allow very fast loading of parts of images If you are experiencing performance problems when loading large, fixed PNG or JPEG images your program needs to produce its output images, you may wish to examine the functions gdImageCreateFromGd2, gdImageCreateFromGd2Part and gdImageGd2, which read and write .gd2 format images.

The program "pngtogd2.c" is provided as a simple way of converting .png files to .gd2 format.

About the gdIOCtx structure

Version 1.5 of GD added a new style of I/O based on an IOCtx structure (the most up-to-date version can be found in gd_io.h):
typedef struct gdIOCtx {
        int     (*getC)(struct gdIOCtx*);
        int     (*getBuf)(struct gdIOCtx*, void*, int);

        void     (*putC)(struct gdIOCtx*, int);
        int     (*putBuf)(struct gdIOCtx*, const void*, int);

        int     (*seek)(struct gdIOCtx*, const int);
        long    (*tell)(struct gdIOCtx*);

        void    (*free)(struct gdIOCtx*);

} gdIOCtx;
Most functions that accepted files in previous versions now also have a counterpart that accepts an I/O context. These functions have a 'Ctx' suffix.

The Ctx routines use the function pointers in the I/O context pointed to by gdIOCtx to perform all I/O. Examples of how to implement an I/O context can be found in io_file.c (which provides a wrapper for file routines), and io_dp.c (which implements in-memory storage).

It is not necessary to implement all functions in an I/O context if you know that it will only be used in limited cirsumstances. At the time of writing (Version 1.6.1, July 1999), the known requirements are:

All Must have 'free',
Anything that reads from the contextMust have 'getC' and 'getBuf',
Anything that writes to the contextMust have 'putC' and 'putBuf'.
If gdCreateFromGd2Part is calledMust also have 'seek' and 'tell'.
If gdImageGd2 is calledMust also have 'seek' and 'tell'.

Please tell us you're using gd!

When you contact us and let us know you are using gd, you help us justify the time spent in maintaining and improving it. So please let us know. If the results are publicly visible on the web, a URL is a wonderful thing to receive, but if it's not a publicly visible project, a simple note is just as welcome.

If you have problems

If you have any difficulties with gd, feel free to contact the author, Thomas Boutell. Problems relating to the gd2 format should be addressed to Philip Warner.

Be sure to read this manual carefully first.

Alphabetical quick index

gdBrushed | gdDashSize | gdFont | gdFontPtr | gdFree | gdImage | gdImageAlphaBlending | gdImageArc | gdImageBlue | gdImageBoundsSafe | gdImageChar | gdImageCharUp | gdImageColorAllocate | gdImageColorAllocateAlpha | gdImageColorClosest | gdImageColorClosestAlpha | gdImageColorDeallocate | gdImageColorExact | gdImageColorExactAlpha | gdImageColorResolve | gdImageColorResolveAlpha | gdImageColorTransparent | gdImageCopy | gdImageCopyMerge | gdImageMergeGray | gdImageCopyResized | gdImageCopyResampled | gdImageCreate | gdImageCreatePalette | gdImageCreateTrueColor | gdImageCreateFromGd | gdImageCreateFromGd2 | gdImageCreateFromGd2Part | gdImageCreateFromJpeg | gdImageCreateFromPng | gdImageCreateFromPngSource | gdImageCreateFromXbm | gdImageCreateFromXpm | gdImageDashedLine | gdImageDestroy | gdImageFill | gdImageFilledArc | gdImageFilledEllipse | gdImageFillToBorder | gdImageFilledRectangle | gdImageGd | gdImageGd2 | gdImageGetInterlaced | gdImageGetPixel | gdImageGetTransparent | gdImageGreen | gdImageInterlace | gdImageJpeg | gdImageLine | gdImageFilledPolygon | gdImagePaletteCopy | gdImagePng | gdImagePngToSink | gdImagePolygon | gdImagePtr | gdImageWBMP | gdImageRectangle | gdImageRed | gdImageSetBrush | gdImageSetPixel | gdImageSetStyle | gdImageSetTile | gdImageString | gdImageString16 | gdImageStringFT | gdImageStringTTF | gdImageStringUp | gdImageStringUp16 | gdImageWBMP | gdMaxColors | gdPoint | gdStyled | gdStyledBrushed | gdTiled | gdTransparent

Boutell.Com, Inc. libwmf-0.2.8.4/src/extra/gd/install-item0000755000077100007710000000004107260330336017334 0ustar fjffjf00000000000000#!/bin/sh cp $2 $3 chmod $1 $3 libwmf-0.2.8.4/src/extra/gd/jisx0208.h0000644000077100007710000021326607260330337016464 0ustar fjffjf00000000000000#ifndef JISX0208_H #define JISX0208_H /* This file was derived from "src/VF_Ftype.c" in VFlib2-2.24.2 by Dr. Kakugawa */ /* JIS -> Unicode mapping table */ static unsigned short UnicodeTbl[][94] = { { /* category 01 */ 0x0000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E, 0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C, 0xFF5E, 0x2225, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, 0xFF0D, 0x00B1, 0x00D7, 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, 0xFF04, 0xFFE0, 0xFFE1, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7}, { /* category 02 */ 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, 0x2203, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021, /**/ 0x00B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x25EF}, { /* category 03 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 04 */ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 05 */ 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 06 */ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 07 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 08 */ 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 09 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 10 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 11 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 12 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 13 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 14 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 15 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 16 */ 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D}, { /* category 17 */ 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2, 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC}, { /* category 18 */ 0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539}, { /* category 19 */ 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431}, { /* category 20 */ 0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4}, { /* category 21 */ 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551, 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC}, { /* category 22 */ 0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4, 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48}, { /* category 23 */ 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8, 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372}, { /* category 24 */ 0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411}, { /* category 25 */ 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5, 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC}, { /* category 26 */ 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237}, { /* category 27 */ 0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B, 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642}, { /* category 28 */ 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468}, { /* category 29 */ 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F}, { /* category 30 */ 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE}, { /* category 31 */ 0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017, 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE}, { /* category 32 */ 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA}, { /* category 33 */ 0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E}, { /* category 34 */ 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA}, { /* category 35 */ 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5}, { /* category 36 */ 0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013}, { /* category 37 */ 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC, 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230}, { /* category 38 */ 0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165}, { /* category 39 */ 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5, 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885, 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6}, { /* category 40 */ 0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6, 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E}, { /* category 41 */ 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66, 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D}, { /* category 42 */ 0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B}, { /* category 43 */ 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80}, { /* category 44 */ 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652}, { /* category 45 */ 0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483}, { /* category 46 */ 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F}, { /* category 47 */ 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900, 0x6E7E, 0x7897, 0x8155, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 48 */ 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2}, { /* category 49 */ 0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8}, { /* category 50 */ 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8}, { /* category 51 */ 0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B, 0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709}, { /* category 52 */ 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969}, { /* category 53 */ 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53}, { /* category 54 */ 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF}, { /* category 55 */ 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A}, { /* category 56 */ 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6, 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, 0x620D, 0x620C, 0x6214, 0x621B}, { /* category 57 */ 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8, 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC}, { /* category 58 */ 0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603, 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC}, { /* category 59 */ 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E, 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD}, { /* category 60 */ 0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3}, { /* category 61 */ 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE}, { /* category 62 */ 0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC}, { /* category 63 */ 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD, 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC}, { /* category 64 */ 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1}, { /* category 65 */ 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609, 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670}, { /* category 66 */ 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC}, { /* category 67 */ 0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50}, { /* category 68 */ 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06}, { /* category 69 */ 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A}, { /* category 70 */ 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B}, { /* category 71 */ 0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262, 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9}, { /* category 72 */ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548}, { /* category 73 */ 0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9, 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759}, { /* category 74 */ 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902, 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943, 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E}, { /* category 75 */ 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B}, { /* category 76 */ 0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D, 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A}, { /* category 77 */ 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8}, { /* category 78 */ 0x904F, 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E}, { /* category 79 */ 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394, 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599, 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E}, { /* category 80 */ 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870}, { /* category 81 */ 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF, 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7}, { /* category 82 */ 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48}, { /* category 83 */ 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0}, { /* category 84 */ 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 85 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 86 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 87 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 88 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, { /* category 89 */ 0x7E8A, 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631, 0x68C8, 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00, 0x4F03, 0x4F39, 0x4F56, 0x4F92, 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, 0x5070, 0x5042, 0x5094, 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, 0x51EC, 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, 0x5372, 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF, 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFA10, 0x589E, 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4, 0x59BA, 0x5B56, 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E, 0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7}, { /* category 90 */ 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, 0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460, 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x663B, 0x6609, 0x662E, 0x661E, 0x6624, 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, 0x66A0, 0x66B2, 0x66BF, 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, 0x6852, 0x67C0, 0x6801, 0x6844, 0x68CF, 0xFA13, 0x6968, 0xFA14, 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46, 0x6A73, 0x6A7E, 0x6AE2, 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, 0x6CDA, 0x6D04, 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, 0x6DFC, 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5, 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, 0x7146, 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1}, { /* category 91 */ 0x72BE, 0x7324, 0xFA16, 0x7377, 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, 0x7429, 0x742E, 0x7462, 0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C, 0x769E, 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864, 0x787A, 0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1, 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7, 0x7DA0, 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7, 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0x856B, 0xFA1F, 0x85B0, 0xFA20, 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF, 0xFA22, 0x8AF6, 0x8B53, 0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, 0x8ECF, 0xFA24, 0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA}, { /* category 92 */ 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210, 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251, 0x9239, 0x9267, 0x92A7, 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0, 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302, 0x9370, 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, 0x9592, 0xF9DC, 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C, 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB, 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0x0000, 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02}}; #endif /* JISX0208_H */ libwmf-0.2.8.4/src/extra/gd/mathmake.c0000644000077100007710000000176207301470216016750 0ustar fjffjf00000000000000#include #include #define scale 1024 int basis[91]; int cost[360]; main (void) { int i; printf ("#define costScale %d\n", scale); printf ("int cost[] = {\n "); for (i = 0; (i <= 90); i++) { basis[i] = cos ((double) i * .0174532925) * scale; } for (i = 0; (i < 90); i++) { printf ("%d,\n ", cost[i] = basis[i]); } for (i = 90; (i < 180); i++) { printf ("%d,\n ", cost[i] = -basis[180 - i]); } for (i = 180; (i < 270); i++) { printf ("%d,\n ", cost[i] = -basis[i - 180]); } for (i = 270; (i < 359); i++) { printf ("%d,\n ", cost[i] = basis[360 - i]); } printf ("%d\n", cost[359] = basis[1]); printf ("};\n"); printf ("#define sintScale %d\n", scale); printf ("int sint[] = {\n "); for (i = 0; (i < 360); i++) { int val; val = cost[(i + 270) % 360]; if (i != 359) { printf ("%d,\n ", val); } else { printf ("%d\n", val); } } printf ("};\n"); } libwmf-0.2.8.4/src/extra/gd/pngtogd.c0000644000077100007710000000170707301470216016622 0ustar fjffjf00000000000000 #include #include "gd.h" /* A short program which converts a .png file into a .gd file, for your convenience in creating images on the fly from a basis image that must be loaded quickly. The .gd format is not intended to be a general-purpose format. */ int main (int argc, char **argv) { gdImagePtr im; FILE *in, *out; if (argc != 3) { fprintf (stderr, "Usage: pngtogd filename.png filename.gd\n"); exit (1); } in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } im = gdImageCreateFromPng (in); fclose (in); if (!im) { fprintf (stderr, "Input is not in PNG format!\n"); exit (1); } out = fopen (argv[2], "wb"); if (!out) { fprintf (stderr, "Output file cannot be written to!\n"); gdImageDestroy (im); exit (1); } gdImageGd (im, out); fclose (out); gdImageDestroy (im); return 0; } libwmf-0.2.8.4/src/extra/gd/pngtogd2.c0000644000077100007710000000226307301470216016702 0ustar fjffjf00000000000000 #include #include #include "gd.h" /* A short program which converts a .png file into a .gd file, for your convenience in creating images on the fly from a basis image that must be loaded quickly. The .gd format is not intended to be a general-purpose format. */ int main (int argc, char **argv) { gdImagePtr im; FILE *in, *out; int cs, fmt; if (argc != 5) { fprintf (stderr, "Usage: pngtogd2 filename.png filename.gd2 cs fmt\n"); fprintf (stderr, " where cs is the chunk size\n"); fprintf (stderr, " fmt is 1 for raw, 2 for compressed\n"); exit (1); } in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Input file does not exist!\n"); exit (1); } im = gdImageCreateFromPng (in); fclose (in); if (!im) { fprintf (stderr, "Input is not in PNG format!\n"); exit (1); } out = fopen (argv[2], "wb"); if (!out) { fprintf (stderr, "Output file cannot be written to!\n"); gdImageDestroy (im); exit (1); } cs = atoi (argv[3]); fmt = atoi (argv[4]); gdImageGd2 (im, out, cs, fmt); fclose (out); gdImageDestroy (im); return 0; } libwmf-0.2.8.4/src/extra/gd/readme.txt0000644000077100007710000047415607301470216017026 0ustar fjffjf00000000000000 This is gd 2.0.1 BETA. _If you have problems, report them in detail, and consider using gd 1.8.4 until gd 2.0 final is out._ The gd 2.0 documentation update is not complete, but most new features are documented to some degree and the what's new section is reasonably complete. Enjoy! gd 2.0.1 A graphics library for fast image creation Follow this link to the latest version of this document. _HEY! READ THIS!_ gd 2.0.1 creates PNG, JPEG and WBMP images, not GIF images. This is a good thing. PNG is a more compact format, and full compression is available. JPEG works well with photographic images, and is still more compatible with the major Web browsers than even PNG is. WBMP is intended for wireless devices (not regular web browsers). Existing code will need modification to call gdImagePng or gdImageJpeg instead of gdImageGif. _Please do not ask us to send you the old GIF version of GD._ Unisys holds a patent on the LZW compression algorithm, which is used in fully compressed GIF images. The best solution is to move to legally unencumbered, well-compressed, modern image formats such as PNG and JPEG as soon as possible. gd 2.0.1 _requires_ that the following libraries also be installed: libpng (see the libpng home page) zlib (see the info-zip home page) zlib jpeg-6b or later, if desired (see the Independent JPEG Group home page) If you want to use the TrueType font support, you must also install the _FreeType 2.x library_, including the header files. See the Freetype Home Page, or SourceForge. No, I cannot explain why that site is down on a particular day, and no, I can't send you a copy. If you want to use the Xpm color bitmap loading support, you must also have the X Window System and the Xpm library installed (Xpm is often included in modern X distributions). Please read the documentation and install the required libraries. Do not send email asking why png.h is not found. Do not send email asking why libgd.so is not found, either. See the requirements section for more information. Thank you! Table of Contents * Credits and license terms * What's new in version "XYZ" of GD? * What is gd? * What if I want to use another programming language? * What else do I need to use gd? * How do I get gd? * How do I build gd? * gd basics: using gd in your program * webpng: a useful example * Function and type reference by category * About the additional .gd image file format * Please tell us you're using gd! * If you have problems * Alphabetical quick index Up to the Boutell.Com, Inc. Home Page Credits and license terms In order to resolve any possible confusion regarding the authorship of gd, the following copyright statement covers all of the authors who have required such a statement. _If you are aware of any oversights in this copyright notice, please contact Thomas Boutell who will be pleased to correct them._ COPYRIGHT STATEMENT FOLLOWS THIS LINE Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 by Cold Spring Harbor Laboratory. Funded under Grant P41-RR02188 by the National Institutes of Health. Portions copyright 1996, 1997, 1998, 1999, 2000, 2001 by Boutell.Com, Inc. Portions relating to GD2 format copyright 1999, 2000 Philip Warner. Portions relating to PNG copyright 1999, 2000 Greg Roelofs. Portions relating to libttf copyright 1999, 2000 John Ellson (ellson@lucent.com). Portions relating to JPEG and to color quantization copyright 2000, Doug Becker and copyright (C) 1994-1998, Thomas G. Lane. This software is based in part on the work of the Independent JPEG Group. See the file README-JPEG.TXT for more information. Portions relating to WBMP copyright 2000 Maurice Szmurlo and Johan Van den Brande. _Permission has been granted to copy, distribute and modify gd in any context without fee, including a commercial application, provided that this notice is present in user-accessible supporting documentation._ This does not affect your ownership of the derived work itself, and the intent is to assure proper credit for the authors of gd, not to interfere with your productive use of gd. If you have questions, ask. "Derived works" includes all programs that utilize the library. Credit must be given in user-accessible documentation. _This software is provided "AS IS."_ The copyright holders disclaim all warranties, either express or implied, including but not limited to implied warranties of merchantability and fitness for a particular purpose, with respect to this code and accompanying documentation. Although their code does not appear in gd 2.0.1, the authors wish to thank David Koblas, David Rowley, and Hutchison Avenue Software Corporation for their prior contributions. END OF COPYRIGHT STATEMENT What is gd? gd is a graphics library. It allows your code to quickly draw images complete with lines, arcs, text, multiple colors, cut and paste from other images, and flood fills, and write out the result as a PNG or JPEG file. This is particularly useful in World Wide Web applications, where PNG and JPEG are two of the formats accepted for inline images by most browsers. gd is not a paint program. If you are looking for a paint program, you are looking in the wrong place. If you are not a programmer, you are looking in the wrong place, unless you are installing a required library in order to run an application. gd does not provide for every possible desirable graphics operation. It is not necessary or desirable for gd to become a kitchen-sink graphics package, but version 2.0 does include most frequently requested features, including both truecolor and palette images, resampling (smooth resizing of truecolor images) and so forth. What if I want to use another programming language? Not all of these tools are necessarily up to date and fully compatible with 2.0.1. Perl gd can also be used from Perl, courtesy of Lincoln Stein's GD.pm library, which uses gd as the basis for a set of Perl 5.x classes. Highly recommended. Tcl gd can be used from Tcl with John Ellson's Gdtclft dynamically loaded extension package. (Gdtclft2.0 or later is needed for gd-1.6 and up with PNG output.) Pascal Pascal enthusiasts should look into Michael Bradbury's gdfp package. Haskell A new gd interface is now available for Haskell programmers. REXX A gd interface for the REXX language is available. Any Language There are, at the moment, at least three simple interpreters that perform gd operations. You can output the desired commands to a simple text file from whatever scripting language you prefer to use, then invoke the interpreter. * tgd, by Bradley K. Sherman * fly, by Martin Gleeson What's new in version 2.0.1? * Workaround for a bug in gcc, apparently found in gcc 2.7.2 and up. I reproduced and fixed it while using gcc 2.9.5.2. The bug occurred only when the -g option was in use. This problem caused gcc to spew internal error messages unrelated to the correctness of the code in gd_gd2.c. Howard Jones was first to report it. * gdImageFilledEllipse documented and altered; no longer requires a superfluous style argument. Thanks to Francis James Franklin. * The Makefile now offers the correct syntax for optionally creating a static library. Thanks to Jean-Lous Regez, among others. * A nested comment, an attempt to return the value of a void function, and a potentially significant error in gdImageCopyResampled were fixed thanks to Joseph Shirley. * A bug preventing proper truecolor text rendering was fixed, thanks to Jason Gallagher. * gdImageStringFT (FreeType) should now work better against a transparent or semitransparent background, and should act in a manner consistent with the most recent gdImageAlphaBlending setting. Antialiasing is now done via the alpha channel mechanism if the image is a truecolor image. * Bugs in the output of gdImageArc and gdImageFilledArc were reported by Bruce Verderaime. A simple and correct but inefficient implementation has been substituted until fixes are contributed for the faster code, which is in gd_arc_f_buggy.c along with the test program that reproduces the bug(s). * gdImageFilledArc now offers additional style options, which can be combined to produce various effects. * Masahito Yamaga (ma@yama-ga.com) sent a patch to improve support for Japanese output via gdImageStringFT. He also added a new readme.jpn file. * Zillions of documentation fixes. What's new in version 2.0? * _Support for truecolor images!_ Version 2.0 can load truecolor PNGs with no loss of color information, and almost no loss of alpha channel information. Version 2.0 can also load truecolor JPEGs with as little loss as possible; however, bear in mind that JPEG is a lossy format, so repeated load/save cycles always reduce image quality. This is not a bug. To create a truecolor image from scratch, call the new gdImageCreateTrueColor function. The gdImageCreate function is still available to create palette images, and may also be referred to as gdImageCreatePalette. * _Support for alpha channels!_ In addition to 24 bits of color information for each pixel (eight bits of red, green, and blue respectively), version 2.0 supports 7 bits of "alpha channel" information. This is used to determine exactly how transparent the pixel should be. There is also support for a full 7 bits of transparency for each individual palette index in a palette-based image. Please note that, as of this writing, only Macintosh Internet Explorer 5.x and Mozilla/Netscape 6.x display partial transparency properly. * The new gdImageAlphaBlending function allows for two different modes of drawing. In blending mode, the alpha channel component of the color supplied to all drawing functions, such as gdImageSetPixel, determines how much of the underlying color should be allowed to shine through. The resulting image is not transparent. In non-blending mode, drawing color is copied literally with the alpha channel information, resulting in a transparent image. Blending mode is not available when drawing on palette images. * The gdImageCopyResampled function provides "smooth" copying from a large image to a smaller one, using a weighted average of the pixels of the source area rather than selecting one representative pixel. This function is identical to gdImageCopyResized when the destination image is a palette image. * The gdImageTrueColorToPalette function converts a truecolor image to a palette image. The code for this function was originally drawn from the Independent JPEG Group library code, which is excellent. The code has been modified to preserve as much alpha channel information as possible in the resulting palette, in addition to preserving colors as well as possible. This does not work as well as might be hoped. It is usually best to simply produce a truecolor output image instead, which guarantees the highest output quality. * A very high degree of backwards compatibility with existing gd 1.x code has been maintained, at both the source code and binary level. _Code which directly accesses the pixels array will fail only if it encounters an existing truecolor image_, which may happen if the code attempts to open and modify an existing JPEG or truecolor PNG. Such code should be modified to check the trueColor flag of the gdImage structure, and refer to the tpixels array instead when it is set. * gd is now compiled and installed as a shared library. However, gd still does not use autoconf, because I (TBB) have very limited patience with autoconf. These days, most Unix systems provide a fairly POSIX-standard environment, and the provided Makefile is likely to work well if users read it and follow the instructions at the top. * Support for line thickness was added by Michael Schwartz. My apologies to him for sitting on his patches for so long. See the new gdImageSetThickness function, which affects all standard gd functions that draw lines and curves. In addition, Michael added a convenient gdImageEllipse function. * The new gdImageFilledArc function provides a straightforward way to draw filled arcs. Also, gdImageFilledEllipse is a convenient way to fill an ellipse without specifying starting and ending angles. Thanks go out to F J Franklin. * To put an end to the confusion, TrueType 1.x support has been removed in favor of TrueType 2.x support. The old gdImageStringTTF function simply invokes gdImageStringFT. * The specialized .gd and .gd2 file formats have been upgraded to support truecolor. New images written by the versions of these functions found in 2.0 will be rejected, with varying degrees of grace, by older versions of gd. THIS AFFECTS THE .GD and .GD2 FORMATS ONLY. IF YOU ARE CONFUSED BY THIS PARAGRAPH, IT PROBABLY DOESN'T APPLY TO ANYTHING YOU WILL EVER ENCOUNTER. Since these file formats are absolutely, positively *not* designed for distributing images, just for preprocessing them, this should not be a big problem. gd 2.0 should read old .gd and .gd2 files correctly. What's new in version 1.8.4? * Add support for FreeType2 (John Ellson ellson@lucent.com) * Add support for finding in fonts in a builtin DEFAULT_FONTPATH, or in a path from the GDFONTPATH environment variable. * remove some unused symbols to reduce compiler warnings * bugfix in size comparisons in gdImageCompare * REXX now mentioned * All memory allocation functions are now wrapped within the library; gdFree is exported and recommended for freeing memory returned by the gdImage(Something)Ptr family of functions. What's new in version 1.8.3? * WBMP output memory leak fixed * #include corrected to #include "gd.h" in gd_wbmp.c * Documented the fact that the source and output images shouldn't match in the WBMP test except for black and white source images What's new in version 1.8.2? * WBMP support debugged and improved by Johann Van den Brande * WBMP tests added to gdtest.c by Thomas Boutell * Use of platform-dependent 'install' command removed by Thomas Boutell * Comments added to Makefile warning users to juggle the order of the libraries if the linker complains; is there any portable way to do this automatically, short of using autoconf? * Documentation of gdImageCreateFromXpm corrected * Updated links to fast-moving, always dodging libpng and zlib web sites What's new in version 1.8.1? * Optional components no longer built by default (following the documentation) * JPEG code no longer requires inappropriate header files * Win32 patches from Joe Gregorio * 16-bit font support for bdftogd, from Honza Pazdziora What's new in version 1.8? * Support for JPEG output, courtesy of Doug Becker * A link to Michael Bradbery's Pascal wrapper * Support for WBMP output, courtesy of Maurice Szmurlo * gdImageColorClosestHWB function based on hue, whiteness, blackness, superior to the regular gdImageColorClosest function, courtesy of Philip Warner * License clarification: yes, you can modify gd Additional JPEG Information Support for reading and writing JPEG-format images is courtesy of Doug Becker and the Independent JPEG Group / Thomas G. Lane. You can get the latest version of the IJG JPEG software from ftp://ftp.uu.net/graphics/jpeg/ (e.g., the jpegsrc.v6b.tar.gz file). You _must_ use version 6b or later of the IJG JPEG software. You might also consult the JPEG FAQ at http://www.faqs.org/faqs/jpeg-faq/. What's new in version 1.7.3? Another attempt at Makefile fixes to permit linking with all libraries required on platforms with order- dependent linkers. Perhaps it will work this time. What's new in version 1.7.2? An uninitialized-pointer bug in gdtestttf.c was corrected. This bug caused crashes at the end of each call to gdImageStringTTF on some platforms. Thanks to Wolfgang Haefelinger. Documentation fixes. Thanks to Dohn Arms. Makefile fixes to permit linking with all libraries required on platforms with order- dependent linkers. What's new in version 1.7.1? A minor buglet in the Makefile was corrected, as well as an inaccurate error message in gdtestttf.c. Thanks to Masahito Yamaga. What's new in version 1.7? Version 1.7 contains the following changes: * Japanese language support for the TrueType functions. Thanks to Masahito Yamaga. * autoconf and configure have been removed, in favor of a carefully designed Makefile which produces and properly installs the library and the binaries. System-dependent variables are at the top of the Makefile for easy modification. I'm sorry, folks, but autoconf generated _many, many confused email messages_ from people who didn't have things where autoconf expected to find them. I am not an autoconf/automake wizard, and gd is a simple, very compact library which does not need to be a shared library. I _did_ make many improvements over the old gd 1.3 Makefile, which were directly inspired by the autoconf version found in the 1.6 series (thanks to John Ellson). * Completely ANSI C compliant, according to the -pedantic-errors flag of gcc. Several pieces of not-quite-ANSI-C code were causing problems for those with non-gcc compilers. * gdttf.c patched to allow the use of Windows symbol fonts, when present (thanks to Joseph Peppin). * extern "C" wrappers added to gd.h and the font header files for the convenience of C++ programmers. bdftogd was also modified to automatically insert these wrappers into future font header files. Thanks to John Lindal. * Compiles correctly on platforms that don't define SEEK_SET. Thanks to Robert Bonomi. * Loads Xpm images via the gdImageCreateFromXpm function, if the Xpm library is available. Thanks to Caolan McNamara. What's new in version 1.6.3? Version 1.6.3 corrects a memory leak in gd_png.c. This leak caused a significant amount of memory to be allocated and not freed when writing a PNG image. What's new in version 1.6.2? Version 1.6.2 from John Ellson adds two new functions: * gdImageStringTTF - scalable, rotatable, anti-aliased, TrueType strings using the FreeType library, but only if libttf is found by configure. _We do not provide TrueType fonts. Obtaining them is entirely up to you._ * gdImageColorResolve - an efficient alternative for the common code fragment: if ((color=gdImageColorExact(im,R,G,B)) < 0) if ((color=gdImageColorAllocate(im,R,G,B)) < 0) color=gdImageColorClosest(im,R,G,B); Also in this release the build process has been converted to GNU autoconf/automake/libtool conventions so that both (or either) static and shared libraries can be built. What's new in version 1.6.1? Version 1.6.1 incorporates superior PNG reading and writing code from Greg Roelofs, with minor modifications by Tom Boutell. Specifically, I altered his code to read non-palette images (converting them to palette images badly, by dithering them), and to tolerate palette images with types of transparency that gd doesn't actually support (it just ignores the advanced transparency features). Any bugs in this area are therefore my fault, not Greg's. Unlike gd 1.6, users should have no trouble linking with gd 1.6.1 if they follow the instructions and install all of the pieces. However, _If you get undefined symbol errors, be sure to check for older versions of libpng in your library directories!_ What's new in version 1.6? Version 1.6 features the following changes: _Support for 8-bit palette PNG images has been added. Support for GIF has been removed._ This step was taken to completely avoid the legal controversy regarding the LZW compression algorithm used in GIF. Unisys holds a patent which is relevant to LZW compression. PNG is a superior image format in any case. Now that PNG is supported by both Microsoft Internet Explorer and Netscape (in their recent releases), we highly recommend that GD users upgrade in order to get well-compressed images in a format which is legally unemcumbered. What's new in version 1.5? Version 1.5 featured the following changes: _New GD2 format_ An improvement over the GD format, the GD2 format uses the zlib compression library to compress the image in chunks. This results in file sizes comparable to GIFs, with the ability to access parts of large images without having to read the entire image into memory. This format also supports version numbers and rudimentary validity checks, so it should be more 'supportable' than the previous GD format. _Re-arranged source files_ gd.c has been broken into constituant parts: io, gif, gd, gd2 and graphics functions are now in separate files. _Extended I/O capabilities._ The source/sink feature has been extended to support GD2 file formats (which require seek/tell functions), and to allow more general non-file I/O. _Better support for Lincoln Stein's Perl Module_ The new gdImage*Ptr function returns the chosen format stored in a block of memory. This can be directly used by the GD perl module. _Added functions_ gdImageCreateFromGd2Part - allows retrieval of part of an image (good for huge images, like maps), gdImagePaletteCopy - Copies a palette from one image to another, doing it's best to match the colors in the target image to the colors in the source palette. gdImageGd2, gdImageCreateFromGd2 - Support for new format gdImageCopyMerge - Merges two images (useful to highlight part of an image) gdImageCopyMergeGray - Similar to gdImageCopyMerge, but tries to preserve source image hue. gdImagePngPtr, gdImageJpegPtr, gdImageWBMPPtr, gdImageGdPtr, gdImageGd2Ptr - return memory blocks for each type of image. gdImageCreateFromPngCtx, gdImageCreateFromGdCtx, gdImageCreateFromGd2Ctx, gdImageCreateFromGd2PartCtx - Support for new I/O context. _NOTE:_ In fairness to Thomas Boutell, any bug/problems with any of the above features should probably be reported to Philip Warner. What's new in version 1.4? Version 1.4 features the following changes: Fixed polygon fill routine (again) Thanks to Kirsten Schulz, version 1.4 is able to fill numerous types of polygons that caused problems with previous releases, including version 1.3. Support for alternate data sources Programmers who wish to load a GIF from something other than a stdio FILE * stream can use the new gdImageCreateFromPngSource function. Support for alternate data destinations Programmers who wish to write a GIF to something other than a stdio FILE * stream can use the new gdImagePngToSink function. More tolerant when reading GIFs Version 1.4 does not crash when reading certain animated GIFs, although it still only reads the first frame. Version 1.4 also has overflow testing code to prevent crashes when reading damaged GIFs. What's new in version 1.3? Version 1.3 features the following changes: Non-LZW-based GIF compression code Version 1.3 contained GIF compression code that uses simple Run Length Encoding instead of LZW compression, while still retaining compatibility with normal LZW-based GIF decoders (your browser will still like your GIFs). _LZW compression is patented by Unisys. We are currently reevaluating the approach taken by gd 1.3. The current release of gd does not support this approach. We recommend that you use the current release, and generate PNG images._ Thanks to Hutchison Avenue Software Corporation for contributing the RLE GIF code. 8-bit fonts, and 8-bit font support This improves support for European languages. Thanks are due to Honza Pazdziora and also to Jan Pazdziora . Also see the provided bdftogd Perl script if you wish to convert fixed-width X11 fonts to gd fonts. 16-bit font support (no fonts provided) Although no such fonts are provided in the distribution, fonts containing more than 256 characters should work if the gdImageString16 and gdImageStringUp16 routines are used. Improvements to the "webpng" example/utility The "webpng" utility is now a slightly more useful application. Thanks to Brian Dowling for this code. Corrections to the color resolution field of GIF output Thanks to Bruno Aureli. Fixed polygon fills A one-line patch for the infamous polygon fill bug, courtesy of Jim Mason. I believe this fix is sufficient. However, if you find a situation where polygon fills still fail to behave properly, please send code that demonstrates the problem, _and_ a fix if you have one. Verifying the fix is important. Row-major, not column-major Internally, gd now represents the array of pixels as an array of rows of pixels, rather than an array of columns of pixels. This improves the performance of compression and decompression routines slightly, because horizontally adjacent pixels are now next to each other in memory. _This should not affect properly written gd applications, but applications that directly manipulate the pixels array will require changes._ What else do I need to use gd? To use gd, you will need an ANSI C compiler. _All popular Windows 95 and NT C compilers are ANSI C compliant._ Any full-ANSI-standard C compiler should be adequate. _The cc compiler released with SunOS 4.1.3 is not an ANSI C compiler. Most Unix users who do not already have gcc should get it. gcc is free, ANSI compliant and a de facto industry standard. Ask your ISP why it is missing._ As of version 1.6, you also need the zlib compression library, and the libpng library. As of version 1.6.2, you can draw text using antialiased TrueType fonts if you also have the libttf library installed, but this is not mandatory. zlib is available for a variety of platforms from the zlib web site. libpng is available for a variety of platforms from the PNG web site. You will also want a PNG viewer, if you do not already have one for your system, since you will need a good way to check the results of your work. Netscape 4.04 and higher, and Microsoft Internet Explorer 4.0 or higher, both support PNG. For some purposes you might be happier with a package like Lview Pro for Windows or xv for X. There are PNG viewers available for every graphics-capable modern operating system, so consult newsgroups relevant to your particular system. How do I get gd? By HTTP * Gzipped Tar File (Unix) * .ZIP File (Windows) By FTP * Gzipped Tar File (Unix) * .ZIP File (Windows) How do I build gd? In order to build gd, you must first unpack the archive you have downloaded. If you are not familiar with tar and gunzip (Unix) or ZIP (Windows), please consult with an experienced user of your system. Sorry, we cannot answer questions about basic Internet skills. Unpacking the archive will produce a directory called "gd-2.0.1". For Unix cd to the 2.0.1 directory. Edit the Makefile with your preferred text editor and make any necessary changes to the settings at the top, especially if you want Xpm or TrueType support. Next, type "make install". Because gd 2.0 and above installs as a shared library, it is necessary to install the library properly before running gd-based programs. If you get errors, edit the Makefile again, paying special attention to the INCLUDEDIRS and LIBDIRS settings. IF YOU GET LINKER ERRORS, TRY JUGGLING THE ORDER OF THE -l DIRECTIVES IN THE MAKEFILE. Some platforms may prefer that the libraries be listed in the opposite order. For Windows, Mac, Et Cetera Create a project using your favorite programming environment. Copy all of the gd files to the project directory. Add gd.c to your project. Add other source files as appropriate. Learning the basic skills of creating projects with your chosen C environment is up to you. If you wish to test the library, type "make test" AFTER you have successfully executed "make install". This will build several test programs, including "gddemo". Run gddemo to see some of the capabilities of gd. gddemo should execute without incident, creating the file demoout.png. (Note there is also a file named demoin.png, which is provided in the package as part of the demonstration.) Display demoout.png in your PNG viewer. The image should be 128x128 pixels and should contain an image of the space shuttle with quite a lot of graphical elements drawn on top of it. (If you are missing the demoin.png file, the other items should appear anyway.) Look at demoin.png to see the original space shuttle image which was scaled and copied into the output image. gd basics: using gd in your program gd lets you create PNG or JPEG images on the fly. To use gd in your program, include the file gd.h, and link with the libgd.a library produced by "make libgd.a", under Unix. Under other operating systems you will add gd.c to your own project. If you want to use the provided fonts, include gdfontt.h, gdfonts.h, gdfontmb.h, gdfontl.h and/or gdfontg.h. For more impressive results, install FreeType 2.x and use the new gdImageStringFT function. If you are not using the provided Makefile and/or a library-based approach, be sure to include the source modules as well in your project. (They may be too large for 16-bit memory models, that is, 16-bit DOS and Windows.) Here is a short example program. _(For a more advanced example, see gddemo.c, included in the distribution. gddemo.c is NOT the same program; it demonstrates additional features!)_ /* Bring in gd library functions */ #include "gd.h" /* Bring in standard I/O so we can output the PNG to a file */ #include int main() { /* Declare the image */ gdImagePtr im; /* Declare output files */ FILE *pngout, *jpegout; /* Declare color indexes */ int black; int white; /* Allocate the image: 64 pixels across by 64 pixels tall */ im = gdImageCreate(64, 64); /* Allocate the color black (red, green and blue all minimum). Since this is the first color in a new image, it will be the background color. */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a line from the upper left to the lower right, using white color index. */ gdImageLine(im, 0, 0, 63, 63, white); /* Open a file for writing. "wb" means "write binary", important under MSDOS, harmless under Unix. */ pngout = fopen("test.png", "wb"); /* Do the same for a JPEG-format file. */ jpegout = fopen("test.jpg", "wb"); /* Output the image to the disk file in PNG format. */ gdImagePng(im, pngout); /* Output the same image in JPEG format, using the default JPEG quality setting. */ gdImageJpeg(im, jpegout, -1); /* Close the files. */ fclose(pngout); fclose(jpegout); /* Destroy the image in memory. */ gdImageDestroy(im); } When executed, this program creates an image, allocates two colors (the first color allocated becomes the background color), draws a diagonal line (note that 0, 0 is the upper left corner), writes the image to PNG and JPEG files, and destroys the image. The above example program should give you an idea of how the package works. gd provides many additional functions, which are listed in the following reference chapters, complete with code snippets demonstrating each. There is also an alphabetical index. Webpng: a more powerful gd example Webpng is a simple utility program to manipulate PNGs from the command line. It is written for Unix and similar command-line systems, but should be easily adapted for other environments. Webpng allows you to set transparency and interlacing and output interesting information about the PNG in question. webpng.c is provided in the distribution. Unix users can simply type "make webpng" to compile the program. Type "webpng" with no arguments to see the available options. Function and type reference * Types * Image creation, destruction, loading and saving * Drawing, styling, brushing, tiling and filling functions * Query functions (not color-related) * Font and text-handling functions * Color handling functions * Copying and resizing functions * Miscellaneous Functions * Constants Types gdImage_(TYPE)_ The data structure in which gd stores images. gdImageCreate, gdImageCreateTrueColor and the various image file-loading functions return a pointer to this type, and the other functions expect to receive a pointer to this type as their first argument. It is reasonably safe to examine any of the members of this structure. It is also reasonably safe to modify individual pixels within the pixels or tpixels arrays. If the trueColor flag is set, the tpixels array is valid; otherwise the pixels array is valid. The colorsTotal, red, green, blue, alpha and open arrays manage the palette. They are valid only when the trueColor flag is not set. The transparent value contains the palette index of the first transparent color as read-only information for backwards compatibility; gd 2.0 stores this information in the alpha array so that variable transparency can be supported for each palette entry. However, for truecolor images, transparent represents a single RGB color which is _always 100% transparent_, and this feature is generally supported by browsers which do not support full alpha channels. typedef struct { /* Palette-based image pixels */ unsigned char ** pixels; int sx; int sy; /* These are valid in palette images only. See also /* 'alpha', which appears later in the structure to preserve binary backwards compatibility */ int colorsTotal; int red[gdMaxColors]; int green[gdMaxColors]; int blue[gdMaxColors]; int open[gdMaxColors]; /* For backwards compatibility, this is set to the first palette entry with 100% transparency, and is also set and reset by the gdImageColorTransparent function. Newer applications can allocate palette entries with any desired level of transparency; however, bear in mind that many viewers, notably many web browsers, fail to implement full alpha channel for PNG and provide support for full opacity or transparency only. */ int transparent; int *polyInts; int polyAllocated; struct gdImageStruct *brush; struct gdImageStruct *tile; int brushColorMap[gdMaxColors]; int tileColorMap[gdMaxColors]; int styleLength; int stylePos; int *style; int interlace; /* New in 2.0: alpha channel for palettes. Note that only Macintosh Internet Explorer and (possibly) Netscape 6 really support multiple levels of transparency in palettes, to my knowledge, as of 2/15/01. Most common browsers will display 100% opaque and 100% transparent correctly, and do something unpredictable and/or undesirable for levels in between. TBB */ int alpha[gdMaxColors]; /* Truecolor flag and pixels. New 2.0 fields appear here at the end to minimize breakage of existing object code. */ int trueColor; int ** tpixels; /* Should alpha channel be copied, or applied, each time a pixel is drawn? This applies to truecolor images only. No attempt is made to alpha-blend in palette images, even if semitransparent palette entries exist. To do that, build your image as a truecolor image, then quantize down to 8 bits. */ int alphaBlendingFlag; /* Should the alpha channel of the image be saved? This affects PNG at the moment; other future formats may also have that capability. JPEG doesn't. */ int saveAlphaFlag; } gdImage; The order of the structure members may appear confusing, but was chosen deliberately to increase backwards compatibility with existing gd 1.x-based binary code that references particular structure members. gdImagePtr _(TYPE)_ A pointer to an image structure. gdImageCreate returns this type, and the other functions expect it as the first argument. gdFont _(TYPE)_ A font structure. Used to declare the characteristics of a font. Plese see the files gdfontl.c and gdfontl.h for an example of the proper declaration of this structure. You can provide your own font data by providing such a structure and the associated pixel array. You can determine the width and height of a single character in a font by examining the w and h members of the structure. If you will not be creating your own fonts, you will not need to concern yourself with the rest of the components of this structure. typedef struct { /* # of characters in font */ int nchars; /* First character is numbered... (usually 32 = space) */ int offset; /* Character width and height */ int w; int h; /* Font data; array of characters, one row after another. Easily included in code, also easily loaded from data files. */ char *data; } gdFont; gdFontPtr _(TYPE)_ A pointer to a font structure. Text-output functions expect these as their second argument, following the gdImagePtr argument. Two such pointers are declared in the provided include files gdfonts.h and gdfontl.h. gdPoint _(TYPE)_ Represents a point in the coordinate space of the image; used by gdImagePolygon and gdImageFilledPolygon. typedef struct { int x, y; } gdPoint, *gdPointPtr; gdPointPtr _(TYPE)_ A pointer to a gdPoint structure; passed as an argument to gdImagePolygon and gdImageFilledPolygon. gdSource _(TYPE)_ typedef struct { int (*source) (void *context, char *buffer, int len); void *context; } gdSource, *gdSourcePtr; Represents a source from which a PNG can be read. Programmers who do not wish to read PNGs from a file can provide their own alternate input mechanism, using the gdImageCreateFromPngSource function. See the documentation of that function for an example of the proper use of this type. gdSink _(TYPE)_ typedef struct { int (*sink) (void *context, char *buffer, int len); void *context; } gdSink, *gdSinkPtr; Represents a "sink" (destination) to which a PNG can be written. Programmers who do not wish to write PNGs to a file can provide their own alternate output mechanism, using the gdImagePngToSink function. See the documentation of that function for an example of the proper use of this type. Image creation, destruction, loading and saving gdImageCreate(sx, sy) _(FUNCTION)_ gdImageCreate is called to create palette-based images, with no more than 256 colors. Invoke gdImageCreate with the x and y dimensions of the desired image. gdImageCreate returns a gdImagePtr to the new image, or NULL if unable to allocate the image. The image must eventually be destroyed using gdImageDestroy(). ... inside a function ... gdImagePtr im; im = gdImageCreate(64, 64); /* ... Use the image ... */ gdImageDestroy(im); gdImageCreateTrueColor(sx, sy) _(FUNCTION)_ gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors. Invoke gdImageCreateTrueColor with the x and y dimensions of the desired image. gdImageCreateTrueColor returns a gdImagePtr to the new image, or NULL if unable to allocate the image. The image must eventually be destroyed using gdImageDestroy(). Truecolor images are always filled with black at creation time. ... inside a function ... gdImagePtr im; im = gdImageCreateTrueColor(64, 64); /* ... Use the image ... */ gdImageDestroy(im); gdImageCreateFromJpeg(FILE *in) _(FUNCTION)_ gdImageCreateFromJpegCtx(FILE *in) _(FUNCTION)_ gdImageCreateFromJpeg(FILE *in) _(FUNCTION)_ gdImageCreateFromJpegCtx(FILE *in) _(FUNCTION)_ gdImageCreateFromJpeg is called to load images from JPEG format files. Invoke gdImageCreateFromJpeg with an already opened pointer to a file containing the desired image. gdImageCreateFromJpeg returns a gdImagePtr to the new truecolor image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a JPEG image). gdImageCreateFromJpeg does _not_ close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). _The returned image is always a truecolor image._ gdImagePtr im; ... inside a function ... FILE *in; in = fopen("myjpeg.jpg", "rb"); im = gdImageCreateFromJpeg(in); fclose(in); /* ... Use the image ... */ gdImageDestroy(im); gdImageCreateFromPng(FILE *in) _(FUNCTION)_ gdImageCreateFromPngCtx(gdIOCtx *in) _(FUNCTION)_ gdImageCreateFromPng is called to load images from PNG format files. Invoke gdImageCreateFromPng with an already opened pointer to a file containing the desired image. gdImageCreateFromPng returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a PNG image). gdImageCreateFromPng does _not_ close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). If the PNG image being loaded is a truecolor image, the resulting gdImagePtr will refer to a truecolor image. If the PNG image being loaded is a palette or grayscale image, the resulting gdImagePtr will refer to a palette image. gd retains only 8 bits of resolution for each of the red, green and blue channels, and only 7 bits of resolution for the alpha channel. The former restriction affects only a handful of very rare 48-bit color and 16-bit grayscale PNG images. The second restriction affects all semitransparent PNG images, but the difference is essentially invisible to the eye. 7 bits of alpha channel resolution is, in practice, quite a lot. gdImagePtr im; ... inside a function ... FILE *in; in = fopen("mypng.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* ... Use the image ... */ gdImageDestroy(im); gdImageCreateFromPngSource(gdSourcePtr in) _(FUNCTION)_ gdImageCreateFromPngSource is called to load a PNG from a data source other than a file. Usage is very similar to the gdImageCreateFromPng function, except that the programmer provides a custom data source. The programmer must write an input function which accepts a context pointer, a buffer, and a number of bytes to be read as arguments. This function must read the number of bytes requested, unless the end of the file has been reached, in which case the function should return zero, or an error has occurred, in which case the function should return -1. The programmer then creates a gdSource structure and sets the source pointer to the input function and the context pointer to any value which is useful to the programmer. The example below implements gdImageCreateFromPng by creating a custom data source and invoking gdImageCreateFromPngSource. static int freadWrapper(void *context, char *buf, int len); gdImagePtr gdImageCreateFromPng(FILE *in) { gdSource s; s.source = freadWrapper; s.context = in; return gdImageCreateFromPngSource(&s); } static int freadWrapper(void *context, char *buf, int len) { int got = fread(buf, 1, len, (FILE *) context); return got; } gdImageCreateFromGd(FILE *in) _(FUNCTION)_ gdImageCreateFromGdCtx(gdIOCtx *in) _(FUNCTION)_ gdImageCreateFromGd is called to load images from gd format files. Invoke gdImageCreateFromGd with an already opened pointer to a file containing the desired image in the gd file format, which is specific to gd and intended for very fast loading. (It is _not_ intended for compression; for compression, use PNG or JPEG.) gdImageCreateFromGd returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image). gdImageCreateFromGd does _not_ close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). ... inside a function ... gdImagePtr im; FILE *in; in = fopen("mygd.gd", "rb"); im = gdImageCreateFromGd(in); fclose(in); /* ... Use the image ... */ gdImageDestroy(im); gdImageCreateFromGd2(FILE *in) _(FUNCTION)_ gdImageCreateFromGd2Ctx(gdIOCtx *in) _(FUNCTION)_ gdImageCreateFromGd2 is called to load images from gd2 format files. Invoke gdImageCreateFromGd2 with an already opened pointer to a file containing the desired image in the gd2 file format, which is specific to gd2 and intended for fast loading of parts of large images. (It is a compressed format, but generally not as good as maximum compression of the entire image would be.) gdImageCreateFromGd returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image). gdImageCreateFromGd2 does _not_ close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). ... inside a function ... gdImagePtr im; FILE *in; in = fopen("mygd.gd2", "rb"); im = gdImageCreateFromGd2(in); fclose(in); /* ... Use the image ... */ gdImageDestroy(im); gdImageCreateFromGd2Part(FILE *in, int srcX, int srcY, int w, int h) _(FUNCTION)_ gdImageCreateFromGd2PartCtx(gdIOCtx *in) _(FUNCTION)_ gdImageCreateFromGd2Part is called to load parts of images from gd2 format files. Invoked in the same way as gdImageCreateFromGd2, but with extra parameters indicating the source (x, y) and width/height of the desired image. gdImageCreateFromGd2Part returns a gdImagePtr to the new image, or NULL if unable to load the image. The image must eventually be destroyed using gdImageDestroy(). gdImageCreateFromXbm(FILE *in) _(FUNCTION)_ gdImageCreateFromXbm is called to load images from X bitmap format files. Invoke gdImageCreateFromXbm with an already opened pointer to a file containing the desired image. gdImageCreateFromXbm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an X bitmap format image). gdImageCreateFromXbm does _not_ close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). ... inside a function ... gdImagePtr im; FILE *in; in = fopen("myxbm.xbm", "rb"); im = gdImageCreateFromXbm(in); fclose(in); /* ... Use the image ... */ gdImageDestroy(im); gdImageCreateFromXpm(char *filename) _(FUNCTION)_ gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files. This function is available only if HAVE_XPM is selected in the Makefile and the Xpm library is linked with the application. Unlike most gd file functions, the Xpm functions require filenames, not file pointers. gdImageCreateFromXpm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an XPM bitmap format image). You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). ... inside a function ... gdImagePtr im; FILE *in; in = fopen("myxpm.xpm", "rb"); im = gdImageCreateFromXpm(in); fclose(in); /* ... Use the image ... */ gdImageDestroy(im); gdImageDestroy(gdImagePtr im) _(FUNCTION)_ gdImageDestroy is used to free the memory associated with an image. It is important to invoke gdImageDestroy before exiting your program or assigning a new image to a gdImagePtr variable. ... inside a function ... gdImagePtr im; im = gdImageCreate(10, 10); /* ... Use the image ... */ /* Now destroy it */ gdImageDestroy(im); void gdImageJpeg(gdImagePtr im, FILE *out, int quality) _(FUNCTION)_ void gdImageJpegCtx(gdImagePtr im, gdIOCtx *out, int quality) _(FUNCTION)_ gdImageJpeg outputs the specified image to the specified file in JPEG format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageJpeg does _not_ close the file; your code must do so. If quality is negative, the default IJG JPEG quality value (which should yield a good general quality / size tradeoff for most situations) is used. Otherwise, for practical purposes, quality should be a value in the range 0-95, higher quality values usually implying both higher quality and larger image sizes. If you have set image interlacing using gdImageInterlace, this function will interpret that to mean you wish to output a progressive JPEG. Some programs (e.g., Web browsers) can display progressive JPEGs incrementally; this can be useful when browsing over a relatively slow communications link, for example. Progressive JPEGs can also be slightly smaller than sequential (non-progressive) JPEGs. ... inside a function ... gdImagePtr im; int black, white; FILE *out; /* Create the image */ im = gdImageCreate(100, 100); /* Allocate background */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate drawing color */ black = gdImageColorAllocate(im, 0, 0, 0); /* Draw rectangle */ gdImageRectangle(im, 0, 0, 99, 99, black); /* Open output file in binary mode */ out = fopen("rect.jpg", "wb"); /* Write JPEG using default quality */ gdImageJpeg(im, out, -1); /* Close file */ fclose(out); /* Destroy image */ gdImageDestroy(im); void* gdImageJpegPtr(gdImagePtr im, int *size) _(FUNCTION)_ Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data. This memory must be freed by the caller when it is no longer needed. _The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time._ The 'size' parameter receives the total size of the block of memory. void gdImagePng(gdImagePtr im, FILE *out) _(FUNCTION)_ gdImagePng outputs the specified image to the specified file in PNG format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImagePng does _not_ close the file; your code must do so. ... inside a function ... gdImagePtr im; int black, white; FILE *out; /* Create the image */ im = gdImageCreate(100, 100); /* Allocate background */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate drawing color */ black = gdImageColorAllocate(im, 0, 0, 0); /* Draw rectangle */ gdImageRectangle(im, 0, 0, 99, 99, black); /* Open output file in binary mode */ out = fopen("rect.png", "wb"); /* Write PNG */ gdImagePng(im, out); /* Close file */ fclose(out); /* Destroy image */ gdImageDestroy(im); void* gdImagePngPtr(gdImagePtr im, int *size) _(FUNCTION)_ Identical to gdImagePng except that it returns a pointer to a memory area with the PNG data. This memory must be freed by the caller when it is no longer needed. _The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time._ The 'size' parameter receives the total size of the block of memory. gdImagePngToSink(gdImagePtr im, gdSinkPtr out) _(FUNCTION)_ gdImagePngToSink is called to write a PNG to a data "sink" (destination) other than a file. Usage is very similar to the gdImagePng function, except that the programmer provides a custom data sink. The programmer must write an output function which accepts a context pointer, a buffer, and a number of bytes to be written as arguments. This function must write the number of bytes requested and return that number, unless an error has occurred, in which case the function should return -1. The programmer then creates a gdSink structure and sets the sink pointer to the output function and the context pointer to any value which is useful to the programmer. The example below implements gdImagePng by creating a custom data source and invoking gdImagePngFromSink. static int stdioSink(void *context, char *buffer, int len) { return fwrite(buffer, 1, len, (FILE *) context); } void gdImagePng(gdImagePtr im, FILE *out) { gdSink mySink; mySink.context = (void *) out; mySink.sink = stdioSink; gdImagePngToSink(im, &mySink); } void gdImageWBMP(gdImagePtr im, int fg, FILE *out) gdImageWBMPCtx(gdIOCtx *out) _(FUNCTION)__(FUNCTION)_ gdImageWBMP outputs the specified image to the specified file in WBMP format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageWBMP does _not_ close the file; your code must do so. _WBMP file support is black and white only. The color index specified by the fg argument is the "foreground," and only pixels of this color will be set in the WBMP file._ All other pixels will be considered "background." ... inside a function ... gdImagePtr im; int black, white; FILE *out; /* Create the image */ im = gdImageCreate(100, 100); /* Allocate background */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate drawing color */ black = gdImageColorAllocate(im, 0, 0, 0); /* Draw rectangle */ gdImageRectangle(im, 0, 0, 99, 99, black); /* Open output file in binary mode */ out = fopen("rect.wbmp", "wb"); /* Write WBMP, with black as foreground */ gdImageWBMP(im, black, out); /* Close file */ fclose(out); /* Destroy image */ gdImageDestroy(im); void* gdImageWBMPPtr(gdImagePtr im, int *size) _(FUNCTION)_ Identical to gdImageWBMP except that it returns a pointer to a memory area with the WBMP data. This memory must be freed by the caller when it is no longer needed. _The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time._ The 'size' parameter receives the total size of the block of memory. void gdImageGd(gdImagePtr im, FILE *out) _(FUNCTION)_ gdImageGd outputs the specified image to the specified file in the gd image format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImagePng does _not_ close the file; your code must do so. The gd image format is intended for fast reads and writes of images your program will need frequently to build other images. It is _not_ a compressed format, and is not intended for general use. ... inside a function ... gdImagePtr im; int black, white; FILE *out; /* Create the image */ im = gdImageCreate(100, 100); /* Allocate background */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate drawing color */ black = gdImageColorAllocate(im, 0, 0, 0); /* Draw rectangle */ gdImageRectangle(im, 0, 0, 99, 99, black); /* Open output file in binary mode */ out = fopen("rect.gd", "wb"); /* Write gd format file */ gdImageGd(im, out); /* Close file */ fclose(out); /* Destroy image */ gdImageDestroy(im); void* gdImageGdPtr(gdImagePtr im, int *size) _(FUNCTION)_ Identical to gdImageGd except that it returns a pointer to a memory area with the GD data. This memory must be freed by the caller when it is no longer needed. _The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time._ The 'size' parameter receives the total size of the block of memory. void gdImageGd2(gdImagePtr im, FILE *out, int chunkSize, int fmt) _(FUNCTION)_ gdImageGd2 outputs the specified image to the specified file in the gd2 image format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageGd2 does _not_ close the file; your code must do so. The gd2 image format is intended for fast reads and writes of parts of images. It is a compressed format, and well suited to retrieving smll sections of much larger images. The third and fourth parameters are the 'chunk size' and format resposectively. The file is stored as a series of compressed subimages, and the _Chunk Size_ determines the sub-image size - a value of zero causes the GD library to use the default. It is also possible to store GD2 files in an uncompressed format, in which case the fourth parameter should be GD2_FMT_RAW. ... inside a function ... gdImagePtr im; int black, white; FILE *out; /* Create the image */ im = gdImageCreate(100, 100); /* Allocate background */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate drawing color */ black = gdImageColorAllocate(im, 0, 0, 0); /* Draw rectangle */ gdImageRectangle(im, 0, 0, 99, 99, black); /* Open output file in binary mode */ out = fopen("rect.gd", "wb"); /* Write gd2 format file */ gdImageGd2(im, out, 0, GD2_FMT_COMPRESSED); /* Close file */ fclose(out); /* Destroy image */ gdImageDestroy(im); void* gdImageGd2Ptr(gdImagePtr im, int chunkSize, int fmt, int *size) _(FUNCTION)_ Identical to gdImageGd2 except that it returns a pointer to a memory area with the GD2 data. This memory must be freed by the caller when it is no longer needed. _The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time._ The 'size' parameter receives the total size of the block of memory. Drawing Functions void gdImageSetPixel(gdImagePtr im, int x, int y, int color) _(FUNCTION)_ gdImageSetPixel sets a pixel to a particular color index. Always use this function or one of the other drawing functions to access pixels; do not access the pixels of the gdImage structure directly. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Set a pixel near the center. */ gdImageSetPixel(im, 50, 50, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color) _(FUNCTION)_ gdImageLine is used to draw a line between two endpoints (x1,y1 and x2, y2). The line is drawn using the color index specified. Note that the color index can be an actual color returned by gdImageColorAllocate or one of gdStyled, gdBrushed or gdStyledBrushed. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a line from the upper left corner to the lower right corner. */ gdImageLine(im, 0, 0, 99, 99, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color) _(FUNCTION)_ gdImageDashedLine is provided _solely for backwards compatibility _with gd 1.0. New programs should draw dashed lines using the normal gdImageLine function and the new gdImageSetStyle function. gdImageDashedLine is used to draw a dashed line between two endpoints (x1,y1 and x2, y2). The line is drawn using the color index specified. The portions of the line that are not drawn are left transparent so the background is visible. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a dashed line from the upper left corner to the lower right corner. */ gdImageDashedLine(im, 0, 0, 99, 99); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImagePolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color) _(FUNCTION)_ gdImagePolygon is used to draw a polygon with the verticies (at least 3) specified, using the color index specified. See also gdImageFilledPolygon. ... inside a function ... gdImagePtr im; int black; int white; /* Points of polygon */ gdPoint points[3]; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a triangle. */ points[0].x = 50; points[0].y = 0; points[1].x = 99; points[1].y = 99; points[2].x = 0; points[2].y = 99; gdImagePolygon(im, points, 3, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color) _(FUNCTION)_ gdImageRectangle is used to draw a rectangle with the two corners (upper left first, then lower right) specified, using the color index specified. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a rectangle occupying the central area. */ gdImageRectangle(im, 25, 25, 74, 74, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageFilledPolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color) _(FUNCTION)_ gdImageFilledPolygon is used to fill a polygon with the verticies (at least 3) specified, using the color index specified. See also gdImagePolygon. ... inside a function ... gdImagePtr im; int black; int white; int red; /* Points of polygon */ gdPoint points[3]; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate the color red. */ red = gdImageColorAllocate(im, 255, 0, 0); /* Draw a triangle. */ points[0].x = 50; points[0].y = 0; points[1].x = 99; points[1].y = 99; points[2].x = 0; points[2].y = 99; /* Paint it in white */ gdImageFilledPolygon(im, points, 3, white); /* Outline it in red; must be done second */ gdImagePolygon(im, points, 3, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color) _(FUNCTION)_ gdImageFilledRectangle is used to draw a solid rectangle with the two corners (upper left first, then lower right) specified, using the color index specified. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = int gdImageColorAllocate(im, 255, 255, 255); /* Draw a filled rectangle occupying the central area. */ gdImageFilledRectangle(im, 25, 25, 74, 74, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) _(FUNCTION)_ gdImageArc is used to draw a partial ellipse centered at the given point, with the specified width and height in pixels. The arc begins at the position in degrees specified by s and ends at the position specified by e. The arc is drawn in the color specified by the last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 50); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Inscribe an ellipse in the image. */ gdImageArc(im, 50, 25, 98, 48, 0, 360, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageFilledArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color, int style) _(FUNCTION)_ gdImageFilledArc is used to draw a partial ellipse centered at the given point, with the specified width and height in pixels. The arc begins at the position in degrees specified by s and ends at the position specified by e. The arc is filled in the color specified by the second to last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360. The last argument is a bitwise OR of the following possibilities: + gdArc + gdChord + gdPie (synonym for gdChord) + gdNoFill + gdEdged gdArc and gdChord are mutually exclusive; gdChord just connects the starting and ending angles with a straight line, while gdArc produces a rounded edge. gdPie is a synonym for gdArc. gdNoFill indicates that the arc or chord should be outlined, not filled. gdEdged, used together with gdNoFill, indicates that the beginning and ending angles should be connected to the center; this is a good way to outline (rather than fill) a 'pie slice'. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 50); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Inscribe a filled pie slice in the image. */ gdImageFilledArc(im, 50, 25, 98, 48, 0, 45, white, gdArc); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageFilledEllipse(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) _(FUNCTION)_ gdImageFilledEllipse is used to draw an ellipse centered at the given point, with the specified width and height in pixels. The ellipse is filled in the color specified by the last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 50); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Inscribe a filled ellipse in the image. */ gdImageFilledEllipse(im, 50, 25, 98, 48, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color) _(FUNCTION)_ gdImageFillToBorder floods a portion of the image with the specified color, beginning at the specified point and stopping at the specified border color. For a way of flooding an area defined by the color of the starting point, see gdImageFill. The border color _cannot_ be a special color such as gdTiled; it must be a proper solid color. The fill color can be, however. Note that gdImageFillToBorder is recursive. It is not the most naive implementation possible, and the implementation is expected to improve, but there will always be degenerate cases in which the stack can become very deep. This can be a problem in MSDOS and MS Windows 3.1 environments. (Of course, in a Unix or Windows 95/98/NT environment with a proper stack, this is not a problem at all.) ... inside a function ... gdImagePtr im; int black; int white; int red; im = gdImageCreate(100, 50); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate the color red. */ red = gdImageColorAllocate(im, 255, 0, 0); /* Inscribe an ellipse in the image. */ gdImageArc(im, 50, 25, 98, 48, 0, 360, white); /* Flood-fill the ellipse. Fill color is red, border color is white (ellipse). */ gdImageFillToBorder(im, 50, 50, white, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageFill(gdImagePtr im, int x, int y, int color) _(FUNCTION)_ gdImageFill floods a portion of the image with the specified color, beginning at the specified point and flooding the surrounding region of the same color as the starting point. For a way of flooding a region defined by a specific border color rather than by its interior color, see gdImageFillToBorder. The fill color can be gdTiled, resulting in a tile fill using another image as the tile. However, the tile image cannot be transparent. If the image you wish to fill with has a transparent color index, call gdImageTransparent on the tile image and set the transparent color index to -1 to turn off its transparency. Note that gdImageFill is recursive. It is not the most naive implementation possible, and the implementation is expected to improve, but there will always be degenerate cases in which the stack can become very deep. This can be a problem in MSDOS and MS Windows environments. (Of course, in a Unix or Windows 95/98/NT environment with a proper stack, this is not a problem at all.) ... inside a function ... gdImagePtr im; int black; int white; int red; im = gdImageCreate(100, 50); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Allocate the color red. */ red = gdImageColorAllocate(im, 255, 0, 0); /* Inscribe an ellipse in the image. */ gdImageArc(im, 50, 25, 98, 48, 0, 360, white); /* Flood-fill the ellipse. Fill color is red, and will replace the black interior of the ellipse. */ gdImageFill(im, 50, 50, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageSetBrush(gdImagePtr im, gdImagePtr brush) _(FUNCTION)_ A "brush" is an image used to draw wide, shaped strokes in another image. Just as a paintbrush is not a single point, a brush image need not be a single pixel. _Any_ gd image can be used as a brush, and by setting the transparent color index of the brush image with gdImageColorTransparent, a brush of any shape can be created. All line-drawing functions, such as gdImageLine and gdImagePolygon, will use the current brush if the special "color" gdBrushed or gdStyledBrushed is used when calling them. gdImageSetBrush is used to specify the brush to be used in a particular image. You can set any image to be the brush. If the brush image does not have the same color map as the first image, any colors missing from the first image will be allocated. If not enough colors can be allocated, the closest colors already available will be used. This allows arbitrary PNGs to be used as brush images. It also means, however, that you should not set a brush unless you will actually use it; if you set a rapid succession of different brush images, you can quickly fill your color map, and the results will not be optimal. You need not take any special action when you are finished with a brush. As for any other image, if you will not be using the brush image for any further purpose, you should call gdImageDestroy. You must not use the color gdBrushed if the current brush has been destroyed; you can of course set a new brush to replace it. ... inside a function ... gdImagePtr im, brush; FILE *in; int black; im = gdImageCreate(100, 100); /* Open the brush PNG. For best results, portions of the brush that should be transparent (ie, not part of the brush shape) should have the transparent color index. */ in = fopen("star.png", "rb"); brush = gdImageCreateFromPng(in); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); gdImageSetBrush(im, brush); /* Draw a line from the upper left corner to the lower right corner using the brush. */ gdImageLine(im, 0, 0, 99, 99, gdBrushed); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); /* Destroy the brush image */ gdImageDestroy(brush); void gdImageSetTile(gdImagePtr im, gdImagePtr tile) _(FUNCTION)_ A "tile" is an image used to fill an area with a repeated pattern. _Any_ gd image can be used as a tile, and by setting the transparent color index of the tile image with gdImageColorTransparent, a tile that allows certain parts of the underlying area to shine through can be created. All region-filling functions, such as gdImageFill and gdImageFilledPolygon, will use the current tile if the special "color" gdTiled is used when calling them. gdImageSetTile is used to specify the tile to be used in a particular image. You can set any image to be the tile. If the tile image does not have the same color map as the first image, any colors missing from the first image will be allocated. If not enough colors can be allocated, the closest colors already available will be used. This allows arbitrary PNGs to be used as tile images. It also means, however, that you should not set a tile unless you will actually use it; if you set a rapid succession of different tile images, you can quickly fill your color map, and the results will not be optimal. You need not take any special action when you are finished with a tile. As for any other image, if you will not be using the tile image for any further purpose, you should call gdImageDestroy. You must not use the color gdTiled if the current tile has been destroyed; you can of course set a new tile to replace it. ... inside a function ... gdImagePtr im, tile; FILE *in; int black; im = gdImageCreate(100, 100); /* Open the tile PNG. For best results, portions of the tile that should be transparent (ie, allowing the background to shine through) should have the transparent color index. */ in = fopen("star.png", "rb"); tile = gdImageCreateFromPng(in); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); gdImageSetTile(im, tile); /* Fill an area using the tile. */ gdImageFilledRectangle(im, 25, 25, 75, 75, gdTiled); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); /* Destroy the tile image */ gdImageDestroy(tile); void gdImageSetStyle(gdImagePtr im, int *style, int styleLength) _(FUNCTION)_ It is often desirable to draw dashed lines, dotted lines, and other variations on a broken line. gdImageSetStyle can be used to set any desired series of colors, including a special color that leaves the background intact, to be repeated during the drawing of a line. To use gdImageSetStyle, create an array of integers and assign them the desired series of color values to be repeated. You can assign the special color value gdTransparent to indicate that the existing color should be left unchanged for that particular pixel (allowing a dashed line to be attractively drawn over an existing image). Then, to draw a line using the style, use the normal gdImageLine function with the special color value gdStyled. As of version 1.1.1, the style array is copied when you set the style, so you need not be concerned with keeping the array around indefinitely. This should not break existing code that assumes styles are not copied. You can also combine styles and brushes to draw the brush image at intervals instead of in a continuous stroke. When creating a style for use with a brush, the style values are interpreted differently: zero (0) indicates pixels at which the brush should not be drawn, while one (1) indicates pixels at which the brush should be drawn. To draw a styled, brushed line, you must use the special color value gdStyledBrushed. For an example of this feature in use, see gddemo.c (provided in the distribution). gdImagePtr im; int styleDotted[2], styleDashed[6]; FILE *in; int black; int red; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); red = gdImageColorAllocate(im, 255, 0, 0); /* Set up dotted style. Leave every other pixel alone. */ styleDotted[0] = red; styleDotted[1] = gdTransparent; /* Set up dashed style. Three on, three off. */ styleDashed[0] = red; styleDashed[1] = red; styleDashed[2] = red; styleDashed[3] = gdTransparent; styleDashed[4] = gdTransparent; styleDashed[5] = gdTransparent; /* Set dotted style. Note that we have to specify how many pixels are in the style! */ gdImageSetStyle(im, styleDotted, 2); /* Draw a line from the upper left corner to the lower right corner. */ gdImageLine(im, 0, 0, 99, 99, gdStyled); /* Now the dashed line. */ gdImageSetStyle(im, styleDashed, 6); gdImageLine(im, 0, 99, 0, 99, gdStyled); /* ... Do something with the image, such as saving it to a file ... */ /* Destroy it */ gdImageDestroy(im); void gdImageAlphaBlending(gdImagePtr im, int blending) _(FUNCTION)_ The gdImageAlphaBlending function allows for two different modes of drawing on truecolor images. In blending mode, the alpha channel component of the color supplied to all drawing functions, such as gdImageSetPixel, determines how much of the underlying color should be allowed to shine through. As a result, gd automatically blends the existing color at that point with the drawing color, and stores the result in the image. The resulting pixel is opaque. In non-blending mode, the drawing color is copied literally with its alpha channel information, replacing the destination pixel. Blending mode is not available when drawing on palette images. gdImagePtr im; int red, blue; im = gdImageCreateTrueColor(100, 100); /* Background color */ red = gdTrueColor(255, 0, 0); gdImageFilledRectangle(im, 0, 0, 100, 100, red); /* Drawing color. Full transparency would be an alpha channel value of 127 (gd has a 7 bit alpha chnanel). 0 is opaque, 127 is transparent. So cut gdAlphaTransparent in half to get 50% blending. */ blue = gdTrueColorAlpha(0, 0, 255, gdAlphaTransparent / 2); /* Draw with blending. Result will be 50% red, 50% blue: yellow (emitted light, remember, not reflected light. What you learned in Kindergarten is wrong here). */ gdImageAlphaBlending(im, 1); gdImageFilledRectangle(im, 0, 0, 25, 25, blue); /* Draw without blending. Result will be 50% blue, 50% the background color of the image viewer or web browser used; results in browsers that don't support semi-transparent pixels are unpredictable! */ gdImageAlphaBlending(im, 0); gdImageFilledRectangle(im, 75, 75, 25, 25, blue); /* Write the image to disk, etc. */ Query Functions int gdImageAlpha(gdImagePtr im, int color) _(MACRO)_ gdImageAlpha is a macro which returns the alpha channel component of the specified color index. Alpha channel values vary between 0 (gdAlphaOpaque), which does not blend at all with the background, through 127 (gdAlphaTransparent), which allows the background to shine through 100%. Use this macro rather than accessing the structure members directly. int gdImageBlue(gdImagePtr im, int color) _(MACRO)_ gdImageBlue is a macro which returns the blue component of the specified color index. Use this macro rather than accessing the structure members directly. int gdImageGetPixel(gdImagePtr im, int x, int y) _(FUNCTION)_ gdImageGetPixel() retrieves the color index of a particular pixel. Always use this function to query pixels; do not access the pixels of the gdImage structure directly. ... inside a function ... FILE *in; gdImagePtr im; int c; in = fopen("mypng.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); c = gdImageGetPixel(im, gdImageSX(im) / 2, gdImageSY(im) / 2); printf("The value of the center pixel is %d; RGB values are %d,%d,%d\n", c, im->red[c], im->green[c], im->blue[c]); gdImageDestroy(im); int gdImageBoundsSafe(gdImagePtr im, int x, int y) _(FUNCTION)_ gdImageBoundsSafe returns true (1) if the specified point is within the bounds of the image, false (0) if not. This function is intended primarily for use by those who wish to add functions to gd. All of the gd drawing functions already clip safely to the edges of the image. ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); if (gdImageBoundsSafe(im, 50, 50)) { printf("50, 50 is within the image bounds\n"); } else { printf("50, 50 is outside the image bounds\n"); } gdImageDestroy(im); int gdImageGreen(gdImagePtr im, int color) _(MACRO)_ gdImageGreen is a macro which returns the green component of the specified color index. Use this macro rather than accessing the structure members directly. int gdImageRed(gdImagePtr im, int color) _(MACRO)_ gdImageRed is a macro which returns the red component of the specified color index. Use this macro rather than accessing the structure members directly. int gdImageSX(gdImagePtr im) _(MACRO)_ gdImageSX is a macro which returns the width of the image in pixels. Use this macro rather than accessing the structure members directly. int gdImageSY(gdImagePtr im) _(MACRO)_ gdImageSY is a macro which returns the height of the image in pixels. Use this macro rather than accessing the structure members directly. Fonts and text-handling functions void gdImageChar(gdImagePtr im, gdFontPtr font, int x, int y, int c, int color) _(FUNCTION)_ gdImageChar is used to draw single characters on the image. (To draw multiple characters, use gdImageString or gdImageString16. See also gdImageStringFT for a high quality solution.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The character specified by the fifth argument is drawn from left to right in the specified color. (See gdImageCharUp for a way of drawing vertical text.) Pixels not set by a particular character retain their previous color. #include "gd.h" #include "gdfontl.h" ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a character. */ gdImageChar(im, gdFontLarge, 0, 0, 'Q', white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageCharUp(gdImagePtr im, gdFontPtr font, int x, int y, int c, int color) _(FUNCTION)_ gdImageCharUp is used to draw single characters on the image, rotated 90 degrees. (To draw multiple characters, use gdImageStringUp or gdImageStringUp16.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The character specified by the fifth argument is drawn from bottom to top, rotated at a 90-degree angle, in the specified color. (See gdImageChar for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color. #include "gd.h" #include "gdfontl.h" ... inside a function ... gdImagePtr im; int black; int white; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a character upwards so it rests against the top of the image. */ gdImageCharUp(im, gdFontLarge, 0, gdFontLarge->h, 'Q', white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageString(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) _(FUNCTION)_ gdImageString is used to draw multiple characters on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated C string specified by the fifth argument is drawn from left to right in the specified color. (See gdImageStringUp for a way of drawing vertical text. See also gdImageStringFT for a high quality solution.) Pixels not set by a particular character retain their previous color. #include "gd.h" #include "gdfontl.h" #include ... inside a function ... gdImagePtr im; int black; int white; /* String to draw. */ char *s = "Hello."; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a centered string. */ gdImageString(im, gdFontLarge, im->w / 2 - (strlen(s) * gdFontLarge->w / 2), im->h / 2 - gdFontLarge->h / 2, s, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageString16(gdImagePtr im, gdFontPtr font, int x, int y, unsigned short *s, int color) _(FUNCTION)_ gdImageString is used to draw multiple 16-bit characters on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated string of characters represented as 16-bit unsigned short integers specified by the fifth argument is drawn from left to right in the specified color. (See gdImageStringUp16 for a way of drawing vertical text.) Pixels not set by a particular character retain their previous color. This function was added in gd1.3 to provide a means of rendering fonts with more than 256 characters for those who have them. A more frequently used routine is gdImageString. void gdImageStringUp(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) _(FUNCTION)_ gdImageStringUp is used to draw multiple characters on the image, rotated 90 degrees. (To draw single characters, use gdImageCharUp.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts.The null-terminated C string specified by the fifth argument is drawn from bottom to top (rotated 90 degrees) in the specified color. (See gdImageString for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color. #include "gd.h" #include "gdfontl.h" #include ... inside a function ... gdImagePtr im; int black; int white; /* String to draw. */ char *s = "Hello."; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color white (red, green and blue all maximum). */ white = gdImageColorAllocate(im, 255, 255, 255); /* Draw a centered string going upwards. Axes are reversed, and Y axis is decreasing as the string is drawn. */ gdImageStringUp(im, gdFontLarge, im->w / 2 - gdFontLarge->h / 2, im->h / 2 + (strlen(s) * gdFontLarge->w / 2), s, white); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageStringUp16(gdImagePtr im, gdFontPtr font, int x, int y, unsigned short *s, int color) _(FUNCTION)_ gdImageString is used to draw multiple 16-bit characters vertically on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated string of characters represented as 16-bit unsigned short integers specified by the fifth argument is drawn from bottom to top in the specified color. (See gdImageStringUp16 for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color. This function was added in gd1.3 to provide a means of rendering fonts with more than 256 characters for those who have them. A more frequently used routine is gdImageStringUp. char *gdImageStringFT(gdImagePtr im, int *brect, int fg, char *fontname, double ptsize, double angle, int x, int y, char *string) _(FUNCTION)_ _RECOMMENDED. New in 1.8.4._ gdImageStringFT draws text using the FreeType 2.x library. gdImageStringFT draws a string of anti-aliased characters on the image using the FreeType library to render user-supplied TrueType fonts. _We do not provide TrueType fonts (.ttf and .ttc files). Obtaining them is entirely up to you._ The string is anti-aliased, meaning that there should be fewer "jaggies" visible. The fontname is the full pathname to a TrueType font file, or a font face name if the GDFONTPATH environment variable or FreeType's DEFAULT_FONTPATH variable have been set intelligently. The string may be arbitrarily scaled (ptsize) and rotated (angle in radians). The user-supplied int brect[8] array is filled on return from gdImageStringFT with the 8 elements representing the 4 corner coordinates of the bounding rectangle. 0 lower left corner, X position lower left corner, Y position lower right corner, X position 3 lower right corner, Y position 4 upper right corner, X position 5 upper right corner, Y position 6 upper left corner, X position 7 upper left corner, Y position The points are relative to the text regardless of the angle, so "upper left" means in the top left-hand corner seeing the text horizontally. Use a NULL gdImagePtr to get the bounding rectangle without rendering. This is a relatively cheap operation if followed by a rendering of the same string, because of the caching of the partial rendering during bounding rectangle calculation. The string is rendered in the color indicated by the gf color index. _Use the negative of the desired color index to disable anti-aliasing._ The string may contain UTF-8 sequences like: "À" gdImageStringFT will return a null char* on success, or an error string on failure. #include "gd.h" #include ... inside a function ... gdImagePtr im; int black; int white; int brect[8]; int x, y; char *err; char *s = "Hello."; /* String to draw. */ double sz = 40.; char *f = "/usr/local/share/ttf/Times.ttf"; /* User supplied font */ /* obtain brect so that we can size the image */ err = gdImageStringFT(NULL,&brect[0],0,f,sz,0.,0,0,s); if (err) {fprintf(stderr,err); return 1;} /* create an image big enough for the string plus a little whitespace */ x = brect[2]-brect[6] + 6; y = brect[3]-brect[7] + 6; im = gdImageCreate(x,y); /* Background color (first allocated) */ white = gdImageColorResolve(im, 255, 255, 255); black = gdImageColorResolve(im, 0, 0, 0); /* render the string, offset origin to center string*/ /* note that we use top-left coordinate for adjustment * since gd origin is in top-left with y increasing downwards. */ x = 3 - brect[6]; y = 3 - brect[7]; err = gdImageStringFT(im,&brect[0],black,f,sz,0.0,x,y,s); if (err) {fprintf(stderr,err); return 1;} /* Write img to stdout */ gdImagePng(im, stdout); /* Destroy it */ gdImageDestroy(im); char *gdImageStringTTF(gdImagePtr im, int *brect, int fg, char *fontname, double ptsize, double angle, int x, int y, char *string) _(FUNCTION)_ _DEPRECATED._ THis function simply invokes gdImageStringFT for backwards compatibility with old code that was written with FreeType 1.x. /DL> Color-handling functions int gdImageColorAllocate(gdImagePtr im, int r, int g, int b) _(FUNCTION)_ gdImageColorAllocate finds the first available color index in the image specified, sets its RGB values to those requested (255 is the maximum for each), and returns the index of the new color table entry, or an RGBA value in the case of a truecolor image; in either case you can then use the returned value as a parameter to drawing functions. When creating a new palette-based image, the first time you invoke this function, you are setting the background color for that image. In the event that all gdMaxColors colors (256) have already been allocated, gdImageColorAllocate will return -1 to indicate failure. (This is not uncommon when working with existing PNG files that already use 256 colors.) Note that gdImageColorAllocate does not check for existing colors that match your request; see gdImageColorExact, gdImageColorClosest and gdImageColorClosestHWB for ways to locate existing colors that approximate the color desired in situations where a new color is not available. Also see gdImageColorResolve, new in gd-1.6.2. ... inside a function ... gdImagePtr im; int black; int red; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color red. */ red = gdImageColorAllocate(im, 255, 0, 0); /* Draw a dashed line from the upper left corner to the lower right corner. */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorAllocateAlpha(gdImagePtr im, int r, int g, int b, int a) _(FUNCTION)_ gdImageColorAllocateAlpha finds the first available color index in the image specified, sets its RGBA values to those requested (255 is the maximum for red, green and blue, and 127 represents full transparency for alpha), and returns the index of the new color table entry, or an RGBA value in the case of a truecolor image; in either case you can then use the returned value as a parameter to drawing functions. When creating a new palette-based image, the first time you invoke this function, you are setting the background color for that image. In the event that all gdMaxColors colors (256) have already been allocated, gdImageColorAllocate will return -1 to indicate failure. (This is not uncommon when working with existing palette-based PNG files that already use 256 colors.) Note that gdImageColorAllocateAlpha does not check for existing colors that match your request; see gdImageColorExactAlpha and gdImageColorClosestAlpha for ways to locate existing colors that approximate the color desired in situations where a new color is not available. Also see gdImageColorResolveAlpha. ... inside a function ... gdImagePtr im; int black; int red; im = gdImageCreate(100, 100); /* Background color (first allocated) */ black = gdImageColorAllocate(im, 0, 0, 0); /* Allocate the color red, 50% transparent. */ red = gdImageColorAllocateAlpha(im, 255, 0, 0, 64); /* Draw a dashed line from the upper left corner to the lower right corner. */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorClosest(gdImagePtr im, int r, int g, int b) _(FUNCTION)_ gdImageColorClosest searches the colors which have been defined thus far in the image specified and returns the index of the color with RGB values closest to those of the request. (Closeness is determined by Euclidian distance, which is used to determine the distance in three-dimensional color space between colors.) If no colors have yet been allocated in the image, gdImageColorClosest returns -1. When applied to a truecolor image, this function always succeeds in returning the desired color. This function is most useful as a backup method for choosing a drawing color when an image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing PNG files that already use many colors.) See gdImageColorExact for a method of locating exact matches only. ... inside a function ... gdImagePtr im; FILE *in; int red; /* Let's suppose that photo.png is a scanned photograph with many colors. */ in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* Try to allocate red directly */ red = gdImageColorAllocate(im, 255, 0, 0); /* If we fail to allocate red... */ if (red == (-1)) { /* Find the _closest_ color instead. */ red = gdImageColorClosest(im, 255, 0, 0); } /* Draw a dashed line from the upper left corner to the lower right corner */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorClosestAlpha(gdImagePtr im, int r, int g, int b, int a) _(FUNCTION)_ gdImageColorClosest searches the colors which have been defined thus far in the image specified and returns the index of the color with RGBA values closest to those of the request. (Closeness is determined by Euclidian distance, which is used to determine the distance in four-dimensional color/alpha space between colors.) If no colors have yet been allocated in the image, gdImageColorClosestAlpha returns -1. When applied to a truecolor image, this function always succeeds in returning the desired color. This function is most useful as a backup method for choosing a drawing color when a palette-based image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing palette-based PNG files that already use many colors.) See gdImageColorExactAlpha for a method of locating exact matches only. ... inside a function ... gdImagePtr im; FILE *in; int red; /* Let's suppose that photo.png is a scanned photograph with many colors. */ in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* Try to allocate red, 50% transparent, directly */ red = gdImageColorAllocateAlpha(im, 255, 0, 0, 64); /* If we fail to allocate red... */ if (red == (-1)) { /* Find the _closest_ color instead. */ red = gdImageColorClosestAlpha(im, 255, 0, 0, 64); } /* Draw a dashed line from the upper left corner to the lower right corner */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorClosestHWB(gdImagePtr im, int r, int g, int b) _(FUNCTION)_ gdImageColorClosestHWB searches the colors which have been defined thus far in the image specified and returns the index of the color with hue, whiteness and blackness closest to the requested color. This scheme is typically superior to the Euclidian distance scheme used by gdImageColorClosest. If no colors have yet been allocated in the image, gdImageColorClosestHWB returns -1. When applied to a truecolor image, this function always succeeds in returning the desired color. This function is most useful as a backup method for choosing a drawing color when an image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing PNG files that already use many colors.) See gdImageColorExact for a method of locating exact matches only. ... inside a function ... gdImagePtr im; FILE *in; int red; /* Let's suppose that photo.png is a scanned photograph with many colors. */ in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* Try to allocate red directly */ red = gdImageColorAllocate(im, 255, 0, 0); /* If we fail to allocate red... */ if (red == (-1)) { /* Find the _closest_ color instead. */ red = gdImageColorClosestHWB(im, 255, 0, 0); } /* Draw a dashed line from the upper left corner to the lower right corner */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorExact(gdImagePtr im, int r, int g, int b) _(FUNCTION)_ gdImageColorExact searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGB values which exactly match those of the request. If no allocated color matches the request precisely, gdImageColorExact returns -1. See gdImageColorClosest for a way to find the color closest to the color requested. When applied to a truecolor image, this function always succeeds in returning the desired color. ... inside a function ... gdImagePtr im; int red; in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* The image may already contain red; if it does, we'll save a slot in the color table by using that color. */ /* Try to allocate red directly */ red = gdImageColorExact(im, 255, 0, 0); /* If red isn't already present... */ if (red == (-1)) { /* Second best: try to allocate it directly. */ red = gdImageColorAllocate(im, 255, 0, 0); /* Out of colors, so find the _closest_ color instead. */ red = gdImageColorClosest(im, 255, 0, 0); } /* Draw a dashed line from the upper left corner to the lower right corner */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorResolve(gdImagePtr im, int r, int g, int b) _(FUNCTION)_ gdImageColorResolve searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGB values which exactly match those of the request. If no allocated color matches the request precisely, then gdImageColorResolve tries to allocate the exact color. If there is no space left in the color table then gdImageColorResolve returns the closest color (as in gdImageColorClosest). This function always returns an index of a color. When applied to a truecolor image, this function always succeeds in returning the desired color. ... inside a function ... gdImagePtr im; int red; in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* The image may already contain red; if it does, we'll save a slot in the color table by using that color. */ /* Get index of red, or color closest to red */ red = gdImageColorResolve(im, 255, 0, 0); /* Draw a dashed line from the upper left corner to the lower right corner */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorResolveAlpha(gdImagePtr im, int r, int g, int b, int a) _(FUNCTION)_ gdImageColorResolveAlpha searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGBA values which exactly match those of the request. If no allocated color matches the request precisely, then gdImageColorResolveAlpha tries to allocate the exact color. If there is no space left in the color table then gdImageColorResolveAlpha returns the closest color (as in gdImageColorClosestAlpha). This function always returns an index of a color. When applied to a truecolor image, this function always succeeds in returning the desired color. ... inside a function ... gdImagePtr im; int red; in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* The image may already contain red; if it does, we'll save a slot in the color table by using that color. */ /* Get index of red, 50% transparent, or the next best thing */ red = gdImageColorResolveAlpha(im, 255, 0, 0, 64); /* Draw a dashed line from the upper left corner to the lower right corner */ gdImageDashedLine(im, 0, 0, 99, 99, red); /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); int gdImageColorsTotal(gdImagePtr im) _(MACRO)_ gdImageColorsTotal is a macro which returns the number of colors currently allocated in a palette image. For truecolor images, the result of this call is undefined and should not be used. int gdImageColorRed(gdImagePtr im, int c) _(MACRO)_ gdImageColorRed is a macro which returns the red portion of the specified color in the image. This macro works for both palette and truecolor images. int gdImageColorGreen(gdImagePtr im, int c) _(MACRO)_ gdImageColorGreen is a macro which returns the green portion of the specified color in the image. This macro works for both palette and truecolor images. int gdImageColorBlue(gdImagePtr im, int c) _(MACRO)_ gdImageColorBlue is a macro which returns the green portion of the specified color in the image. This macro works for both palette and truecolor images. int gdImageGetInterlaced(gdImagePtr im) _(MACRO)_ gdImageGetInterlaced is a macro which returns true (1) if the image is interlaced, false (0) if not. Use this macro to obtain this information; do not access the structure directly. See gdImageInterlace for a means of interlacing images. int gdImageGetTransparent(gdImagePtr im) _(MACRO)_ gdImageGetTransparent is a macro which returns the current transparent color index in the image. If there is no transparent color, gdImageGetTransparent returns -1. Use this macro to obtain this information; do not access the structure directly. void gdImageColorDeallocate(gdImagePtr im, int color) _(FUNCTION)_ gdImageColorDeallocate marks the specified color as being available for reuse. It does not attempt to determine whether the color index is still in use in the image. After a call to this function, the next call to gdImageColorAllocate for the same image will set new RGB values for that color index, changing the color of any pixels which have that index as a result. If multiple calls to gdImageColorDeallocate are made consecutively, the lowest-numbered index among them will be reused by the next gdImageColorAllocate call. ... inside a function ... gdImagePtr im; int red, blue; in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* Look for red in the color table. */ red = gdImageColorExact(im, 255, 0, 0); /* If red is present... */ if (red != (-1)) { /* Deallocate it. */ gdImageColorDeallocate(im, red); /* Allocate blue, reusing slot in table. Existing red pixels will change color. */ blue = gdImageColorAllocate(im, 0, 0, 255); } /* ... Do something with the image, such as saving it to a file... */ /* Destroy it */ gdImageDestroy(im); void gdImageColorTransparent(gdImagePtr im, int color) _(FUNCTION)_ gdImageColorTransparent sets the transparent color index for the specified image to the specified index. To indicate that there should be _no_ transparent color, invoke gdImageColorTransparent with a color index of -1. Note that JPEG images do not support transparency, so this setting has no effect when writing JPEG images. The color index used should be an index allocated by gdImageColorAllocate, whether explicitly invoked by your code or implicitly invoked by loading an image. In order to ensure that your image has a reasonable appearance when viewed by users who do not have transparent background capabilities (or when you are writing a JPEG-format file, which does not support transparency), be sure to give reasonable RGB values to the color you allocate for use as a transparent color, _even though it will be transparent on systems that support PNG transparency_. ... inside a function ... gdImagePtr im; int black; FILE *in, *out; in = fopen("photo.png", "rb"); im = gdImageCreateFromPng(in); fclose(in); /* Look for black in the color table and make it transparent. */ black = gdImageColorExact(im, 0, 0, 0); /* If black is present... */ if (black != (-1)) { /* Make it transparent */ gdImageColorTransparent(im, black); } /* Save the newly-transparent image back to the file */ out = fopen("photo.png", "wb"); gdImagePng(im, out); fclose(out); /* Destroy it */ gdImageDestroy(im); void gdImageTrueColor(int red, int green, int blue) _(MACRO)_ gdImageTrueColor returns an RGBA color value for use when drawing on a truecolor image. Red, green, and blue are all in the range between 0 (off) and 255 (maximum). This macro should not be used with palette-based images. If you need to write code which is compatible with both palette-based and truecolor images, use gdImageColorResolve. void gdImageTrueColorAlpha(int red, int green, int blue, int alpha) _(MACRO)_ gdImageTrueColorAlpha returns an RGBA color value for use when drawing on a truecolor image with alpha channel transparency. Red, green, and blue are all in the range between 0 (off) and 255 (maximum). Alpha is in the range between 0 (opaque) and 127 (fully transparent). This macro should not be used with palette-based images. If you need to write code which is compatible with both palette-based and truecolor images, use gdImageColorResolveAlpha. Copying and resizing functions void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h) _(FUNCTION)_ gdImageCopy is used to copy a rectangular portion of one image to another image. (For a way of stretching or shrinking the image in the process, see gdImageCopyResized.) The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The w and h arguments specify the width and height of the region. When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable. _Important note on copying between images:_ since different images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. gdImageCopy will attempt to find an identical RGB value in the destination image for each pixel in the copied portion of the source image by invoking gdImageColorExact. If such a value is not found, gdImageCopy will attempt to allocate colors as needed using gdImageColorAllocate. If both of these methods fail, gdImageCopy will invoke gdImageColorClosest to find the color in the destination image which most closely approximates the color of the pixel being copied. ... Inside a function ... gdImagePtr im_in; gdImagePtr im_out; int x, y; FILE *in; FILE *out; /* Load a small png to tile the larger one with */ in = fopen("small.png", "rb"); im_in = gdImageCreateFromPng(in); fclose(in); /* Make the output image four times as large on both axes */ im_out = gdImageCreate(im_in->sx * 4, im_in->sy * 4); /* Now tile the larger image using the smaller one */ for (y = 0; (y < 4); y++) { for (x = 0; (x < 4); x++) { gdImageCopy(im_out, im_in, x * im_in->sx, y * im_in->sy, 0, 0, im_in->sx, im_in->sy); } } out = fopen("tiled.png", "wb"); gdImagePng(im_out, out); fclose(out); gdImageDestroy(im_in); gdImageDestroy(im_out); void gdImageCopyResized(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH) _(FUNCTION)_ gdImageCopyResized is used to copy a rectangular portion of one image to another image. The X and Y dimensions of the original region and the destination region can vary, resulting in stretching or shrinking of the region as appropriate. (For a simpler version of this function which does not deal with resizing, see gdImageCopy.) The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The dstW and dstH arguments specify the width and height of the destination region. The srcW and srcH arguments specify the width and height of the source region and can differ from the destination size, allowing a region to be scaled during the copying process. When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable. If this presents a problem, create a scratch image in which to keep intermediate results. _Important note on copying between images:_ since images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. gdImageCopy will attempt to find an identical RGB value in the destination image for each pixel in the copied portion of the source image by invoking gdImageColorExact. If such a value is not found, gdImageCopy will attempt to allocate colors as needed using gdImageColorAllocate. If both of these methods fail, gdImageCopy will invoke gdImageColorClosest to find the color in the destination image which most closely approximates the color of the pixel being copied. ... Inside a function ... gdImagePtr im_in; gdImagePtr im_out; int x, y; FILE *in; FILE *out; /* Load a small png to expand in the larger one */ in = fopen("small.png", "rb"); im_in = gdImageCreateFromPng(in); fclose(in); /* Make the output image four times as large on both axes */ im_out = gdImageCreate(im_in->sx * 4, im_in->sy * 4); /* Now copy the smaller image, but four times larger */ gdImageCopyResized(im_out, im_in, 0, 0, 0, 0, im_out->sx, im_out->sy, im_in->sx, im_in->sy); out = fopen("large.png", "wb"); gdImagePng(im_out, out); fclose(out); gdImageDestroy(im_in); gdImageDestroy(im_out); void gdImageCopyResampled(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH) _(FUNCTION)_ gdImageCopyResampled is used to copy a rectangular portion of one image to another image, smoothly interpolating pixel values so that, in particular, reducing the size of an image still retains a great deal of clarity. The X and Y dimensions of the original region and the destination region can vary, resulting in stretching or shrinking of the region as appropriate. (For a simpler version of this function which does not deal with resizing, see gdImageCopy. For a version which does not interpolate pixel values, see gdImageCopyResized. Pixel values are only interpolated if the destination image is a truecolor image. Otherwise, gdImageCopyResized is automatically invoked. The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The dstW and dstH arguments specify the width and height of the destination region. The srcW and srcH arguments specify the width and height of the source region and can differ from the destination size, allowing a region to be scaled during the copying process. When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable. If this presents a problem, create a scratch image in which to keep intermediate results. _Important note on copying between images:_ since images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. If the destination image is a palette image, gd will use the gdImageColorResolve function to determine the best color available. ... Inside a function ... gdImagePtr im_in; gdImagePtr im_out; int x, y; FILE *in; FILE *out; /* Load a large png to shrink in the smaller one */ in = fopen("large.png", "rb"); im_in = gdImageCreateFromPng(in); fclose(in); /* Make the output image four times as small on both axes. Use a true color image so that we can interpolate colors. */ im_out = gdImageCreateTrueColor(im_in->sx / 4, im_in->sy / 4); /* Now copy the large image, but four times smaller */ gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0, im_out->sx, im_out->sy, im_in->sx, im_in->sy); out = fopen("large.png", "wb"); gdImagePng(im_out, out); fclose(out); gdImageDestroy(im_in); gdImageDestroy(im_out); void gdImageCopyMerge(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) _(FUNCTION)_ gdImageCopyMerge is almost identical to gdImageCopy, except that it 'merges' the two images by an amount specified in the last parameter. If the last parameter is 100, then it will function identically to gdImageCopy - the source image replaces the pixels in the destination. If, however, the _pct_ parameter is less than 100, then the two images are merged. With pct = 0, no action is taken. This feature is most useful to 'highlight' sections of an image by merging a solid color with pct = 50: ... Inside a function ... gdImageCopyMerge(im_out, im_in, 100, 200, 0, 0, 30, 50, 50); void gdImageCopyMergeGray(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) _(FUNCTION)_ gdImageCopyMergeGray is almost identical to gdImageCopyMerge, except that when merging images it preserves the hue of the source by converting the destination pixels to grey scale before the copy operation. ... Inside a function ... gdImageCopyMergeGray(im_out, im_in, 100, 200, 0, 0, 30, 50, 50); void gdImagePaletteCopy(gdImagePtr dst, gdImagePtr src) _(FUNCTION)_ Copies a palette from one image to another, attempting to match the colors in the target image to the colors in the source palette. Miscellaneous Functions int gdImageCompare(gdImagePtr im1, gdImagePtr im2) _(FUNCTION)_ gdImageCompare returns a bitmap indicating if the two images are different. The members of the bitmap are defined in gd.h, but the most important is GD_CMP_IMAGE, which indicated that the images will actually appear different when displayed. Other, less important, differences relate to pallette entries. Any difference in the transparent colour is assumed to make images display differently, even if the transparent colour is not used. ... Inside a function ... cmpMask = gdImageCompare(im1, im2); gdImageInterlace(gdImagePtr im, int interlace) _(FUNCTION)_ gdImageInterlace is used to determine whether an image should be stored in a linear fashion, in which lines will appear on the display from first to last, or in an interlaced fashion, in which the image will "fade in" over several passes. By default, images are not interlaced. (When writing JPEG images, interlacing implies generating progressive JPEG files, which are represented as a series of scans of increasing quality. Noninterlaced gd images result in regular [sequential] JPEG data streams.) A nonzero value for the interlace argument turns on interlace; a zero value turns it off. Note that interlace has no effect on other functions, and has no meaning unless you save the image in PNG or JPEG format; the gd and xbm formats do not support interlace. When a PNG is loaded with gdImageCreateFromPng or a JPEG is loaded with gdImageCreateFromJpeg, interlace will be set according to the setting in the PNG or JPEG file. Note that many PNG and JPEG viewers and web browsers do _not_ support interlace or the incremental display of progressive JPEGs. However, the interlaced PNG or progressive JPEG should still display; it will simply appear all at once, just as other images do. gdImagePtr im; FILE *out; /* ... Create or load the image... */ /* Now turn on interlace */ gdImageInterlace(im, 1); /* And open an output file */ out = fopen("test.png", "wb"); /* And save the image -- could also use gdImageJpeg */ gdImagePng(im, out); fclose(out); gdImageDestroy(im); gdFree(void *ptr) _(FUNCTION)_ gdFree provides a reliable way to free memory allocated by functions such as gdImagePngPtr which return blocks of memory. Use of this function guarantees that the version of free() that is ultimately called will be intended for use with the version of malloc() that originally allocated the block. Constants gdBrushed _(CONSTANT)_ Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdBrushed is used as the color, the brush image set with gdImageSetBrush is drawn in place of each pixel of the line (the brush is usually larger than one pixel, creating the effect of a wide paintbrush). See also gdStyledBrushed for a way to draw broken lines with a series of distinct copies of an image. gdMaxColors_(CONSTANT)_ The constant 256. This is the maximum number of colors in a PNG file according to the PNG standard, and is also the maximum number of colors in a gd image. gdStyled _(CONSTANT)_ Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdStyled is used as the color, the colors of the pixels are drawn successively from the style that has been set with gdImageSetStyle. If the color of a pixel is equal to gdTransparent, that pixel is not altered. (This mechanism is completely unrelated to the "transparent color" of the image itself; see gdImageColorTransparent gdImageColorTransparent for that mechanism.) See also gdStyledBrushed. gdStyledBrushed _(CONSTANT)_ Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdStyledBrushed is used as the color, the brush image set with gdImageSetBrush is drawn at each pixel of the line, providing that the style set with gdImageSetStyle contains a nonzero value (OR gdTransparent, which does not equal zero but is supported for consistency) for the current pixel. (Pixels are drawn successively from the style as the line is drawn, returning to the beginning when the available pixels in the style are exhausted.) Note that this differs from the behavior of gdStyled, in which the values in the style are used as actual pixel colors, except for gdTransparent. gdDashSize _(CONSTANT)_ The length of a dash in a dashed line. Defined to be 4 for backwards compatibility with programs that use gdImageDashedLine. New programs should use gdImageSetStyle and call the standard gdImageLine function with the special "color" gdStyled or gdStyledBrushed. gdTiled _(CONSTANT)_ Used in place of a normal color in gdImageFilledRectangle, gdImageFilledPolygon, gdImageFill, and gdImageFillToBorder. gdTiled selects a pixel from the tile image set with gdImageSetTile in such a way as to ensure that the filled area will be tiled with copies of the tile image. See the discussions of gdImageFill and gdImageFillToBorder for special restrictions regarding those functions. gdTransparent _(CONSTANT)_ Used in place of a normal color in a style to be set with gdImageSetStyle. gdTransparent is _not_ the transparent color index of the image; for that functionality please see gdImageColorTransparent. About the additional .gd image file format In addition to reading and writing the PNG and JPEG formats and reading the X Bitmap format, gd has the capability to read and write its own ".gd" format. This format is _not_ intended for general purpose use and should never be used to distribute images. It is not a compressed format. Its purpose is solely to allow very fast loading of images your program needs often in order to build other images for output. If you are experiencing performance problems when loading large, fixed PNG images your program needs to produce its output images, you may wish to examine the functions gdImageCreateFromGd and gdImageGd, which read and write .gd format images. The program "pngtogd.c" is provided as a simple way of converting .png files to .gd format. I emphasize again that you will not need to use this format unless you have a need for high-speed loading of a few frequently-used images in your program. About the .gd2 image file format In addition to reading and writing the PNG format and reading the X Bitmap format, gd has the capability to read and write its own ".gd2" format. This format is _not_ intended for general purpose use and should never be used to distribute images. It is a compressed format allowing pseudo-random access to large image files. Its purpose is solely to allow very fast loading of _parts_ of images If you are experiencing performance problems when loading large, fixed PNG or JPEG images your program needs to produce its output images, you may wish to examine the functions gdImageCreateFromGd2, gdImageCreateFromGd2Part and gdImageGd2, which read and write .gd2 format images. The program "pngtogd2.c" is provided as a simple way of converting .png files to .gd2 format. About the gdIOCtx structure Version 1.5 of GD added a new style of I/O based on an IOCtx structure (the most up-to-date version can be found in gd_io.h): typedef struct gdIOCtx { int (*getC)(struct gdIOCtx*); int (*getBuf)(struct gdIOCtx*, void*, int); void (*putC)(struct gdIOCtx*, int); int (*putBuf)(struct gdIOCtx*, const void*, int); int (*seek)(struct gdIOCtx*, const int); long (*tell)(struct gdIOCtx*); void (*free)(struct gdIOCtx*); } gdIOCtx; Most functions that accepted files in previous versions now also have a counterpart that accepts an I/O context. These functions have a 'Ctx' suffix. The Ctx routines use the function pointers in the I/O context pointed to by gdIOCtx to perform all I/O. Examples of how to implement an I/O context can be found in io_file.c (which provides a wrapper for file routines), and io_dp.c (which implements in-memory storage). It is not necessary to implement all functions in an I/O context if you know that it will only be used in limited cirsumstances. At the time of writing (Version 1.6.1, July 1999), the known requirements are: All Must have 'free', Anything that reads from the context Must have 'getC' and 'getBuf', Anything that writes to the context Must have 'putC' and 'putBuf'. If gdCreateFromGd2Part is called Must also have 'seek' and 'tell'. If gdImageGd2 is called Must also have 'seek' and 'tell'. Please tell us you're using gd! When you contact us and let us know you are using gd, you help us justify the time spent in maintaining and improving it. So please let us know. If the results are publicly visible on the web, a URL is a wonderful thing to receive, but if it's not a publicly visible project, a simple note is just as welcome. If you have problems If you have any difficulties with gd, feel free to contact the author, Thomas Boutell. Problems relating to the gd2 format should be addressed to Philip Warner. _Be sure to read this manual carefully first. _ Alphabetical quick index gdBrushed | gdDashSize | gdFont | gdFontPtr | gdFree | gdImage | gdImageAlphaBlending | gdImageArc | gdImageBlue | gdImageBoundsSafe | gdImageChar | gdImageCharUp | gdImageColorAllocate | gdImageColorAllocateAlpha | gdImageColorClosest | gdImageColorClosestAlpha | gdImageColorDeallocate | gdImageColorExact | gdImageColorExactAlpha | gdImageColorResolve | gdImageColorResolveAlpha | gdImageColorTransparent | gdImageCopy | gdImageCopyMerge | gdImageMergeGray | gdImageCopyResized | gdImageCopyResampled | gdImageCreate | gdImageCreatePalette | gdImageCreateTrueColor | gdImageCreateFromGd | gdImageCreateFromGd2 | gdImageCreateFromGd2Part | gdImageCreateFromJpeg | gdImageCreateFromPng | gdImageCreateFromPngSource | gdImageCreateFromXbm | gdImageCreateFromXpm | gdImageDashedLine | gdImageDestroy | gdImageFill | gdImageFilledArc | gdImageFilledEllipse | gdImageFillToBorder | gdImageFilledRectangle | gdImageGd | gdImageGd2 | gdImageGetInterlaced | gdImageGetPixel | gdImageGetTransparent | gdImageGreen | gdImageInterlace | gdImageJpeg | gdImageLine | gdImageFilledPolygon | gdImagePaletteCopy | gdImagePng | gdImagePngToSink | gdImagePolygon | gdImagePtr | gdImageWBMP | gdImageRectangle | gdImageRed | gdImageSetBrush | gdImageSetPixel | gdImageSetStyle | gdImageSetTile | gdImageString | gdImageString16 | gdImageStringFT | gdImageStringTTF | gdImageStringUp | gdImageStringUp16 | gdImageWBMP | gdMaxColors | gdPoint | gdStyled | gdStyledBrushed | gdTiled | gdTransparent _Boutell.Com, Inc._ libwmf-0.2.8.4/src/extra/gd/testac.c0000644000077100007710000001017007301470216016435 0ustar fjffjf00000000000000 #include #include "gd.h" /* If palette is true, we convert from truecolor to palette at the end, to test gdImageTrueColorToPalette and see file size/ quality tradeoffs. */ void testDrawing ( gdImagePtr im_in, double scale, int blending, int palette, char *filename); int main (int argc, char *argv[]) { /* Input and output files */ FILE *in; FILE *out; /* Input image */ gdImagePtr im_in = 0; /* Colors */ int lightBlue; if (argc != 2) { fprintf (stderr, "Usage: testac filename.png\n"); exit (1); } /* Load original PNG, which should contain alpha channel information. We will use it in two ways: preserving it literally, for use with compatible browsers, and compositing it ourselves against a background of our choosing (alpha blending). We'll change its size and try creating palette versions of it. */ in = fopen (argv[1], "rb"); if (!in) { fprintf (stderr, "Can't load %s.\n", argv[1]); exit (1); } else { im_in = gdImageCreateFromPng (in); fclose (in); } testDrawing (im_in, 1.0, 0, 0, "noblending-fullsize-truecolor.png"); testDrawing (im_in, 1.0, 1, 0, "blending-fullsize-truecolor.png"); testDrawing (im_in, 0.5, 0, 0, "noblending-halfsize-truecolor.png"); testDrawing (im_in, 0.5, 1, 0, "blending-halfsize-truecolor.png"); testDrawing (im_in, 2.0, 0, 0, "noblending-doublesize-truecolor.png"); testDrawing (im_in, 2.0, 1, 0, "blending-doublesize-truecolor.png"); testDrawing (im_in, 1.0, 0, 1, "noblending-fullsize-palette.png"); testDrawing (im_in, 1.0, 1, 1, "blending-fullsize-palette.png"); testDrawing (im_in, 0.5, 0, 1, "noblending-halfsize-palette.png"); testDrawing (im_in, 0.5, 1, 1, "blending-halfsize-palette.png"); testDrawing (im_in, 2.0, 0, 1, "noblending-doublesize-palette.png"); testDrawing (im_in, 2.0, 1, 1, "blending-doublesize-palette.png"); gdImageDestroy (im_in); return 0; } /* If palette is true, we convert from truecolor to palette at the end, to test gdImageTrueColorToPalette and see file size/ quality tradeoffs. */ void testDrawing ( gdImagePtr im_in, double scale, int blending, int palette, char *filename) { gdImagePtr im_out; FILE *out; /* Create output image. */ im_out = gdImageCreateTrueColor ((int) (gdImageSX (im_in) * scale), (int) (gdImageSY (im_in) * scale)); /* Request alpha blending. This causes future drawing operations to perform alpha channel blending with the background, resulting in an opaque image. Without this call, pixels in the foreground color are copied literally, *including* the alpha channel value, resulting in an output image which is potentially not opaque. This flag can be set and cleared as often as desired. */ gdImageAlphaBlending (im_out, blending); /* Flood with light blue. */ gdImageFill (im_out, (int) (gdImageSX (im_in) * scale / 2), (int) (gdImageSY (im_in) * scale / 2), gdTrueColor (192, 192, 255)); /* Copy the source image. Alpha blending should result in compositing against red. With blending turned off, the browser or viewer will composite against its preferred background, or, if it does not support an alpha channel, we will see the original colors for the pixels that ought to be transparent or semitransparent. */ gdImageCopyResampled (im_out, im_in, 0, 0, 0, 0, (int) (gdImageSX (im_in) * scale), (int) (gdImageSY (im_in) * scale), gdImageSX (im_in), gdImageSY (im_in)); /* Write PNG */ out = fopen (filename, "wb"); /* If this image is the result of alpha channel blending, it will not contain an interesting alpha channel itself. Save a little file size by not saving the alpha channel. Otherwise the file would typically be slightly larger. */ gdImageSaveAlpha (im_out, !blending); /* If requested, convert from truecolor to palette. */ if (palette) { /* Dithering, 256 colors. */ gdImageTrueColorToPalette (im_out, 1, 256); } gdImagePng (im_out, out); fclose (out); gdImageDestroy (im_out); } libwmf-0.2.8.4/src/extra/gd/wbmp.h0000644000077100007710000000231007260330341016117 0ustar fjffjf00000000000000/* WBMP ** ---- ** WBMP Level 0: B/W, Uncompressed ** This implements the WBMP format as specified in WAPSpec 1.1 and 1.2. ** It does not support ExtHeaders as defined in the spec. The spec states ** that a WAP client does not need to implement ExtHeaders. ** ** (c) 2000 Johan Van den Brande ** ** Header file */ #ifndef __WBMP_H #define __WBMP_H 1 /* WBMP struct ** ----------- ** A Wireless bitmap structure ** */ typedef struct Wbmp_ { int type; /* type of the wbmp */ int width; /* width of the image */ int height; /* height of the image */ int *bitmap; /* pointer to data: 0 = WHITE , 1 = BLACK */ } Wbmp; #define WBMP_WHITE 1 #define WBMP_BLACK 0 /* Proto's ** ------- ** */ void putmbi( int i, void (*putout)(int c, void *out), void *out); int getmbi ( int (*getin)(void *in), void *in ); int skipheader( int (*getin)(void *in), void *in ); Wbmp *createwbmp( int width, int height, int color ); int readwbmp( int (*getin)(void *in), void *in, Wbmp **wbmp ); int writewbmp( Wbmp *wbmp, void (*putout)( int c, void *out), void *out); void freewbmp( Wbmp *wbmp ); void printwbmp( Wbmp *wbmp ); #endif libwmf-0.2.8.4/src/extra/gd/webpng.c0000644000077100007710000001301607301470216016436 0ustar fjffjf00000000000000/* Bring in the gd library functions */ #include "gd.h" /* Bring in standard I/O and string manipulation functions */ #include #include /* for atoi() */ #include #ifdef _WIN32 #include int getpid () { return _getpid (); } #else #include /* for getpid(), unlink() */ #endif int main (int argc, char **argv) { FILE *in; FILE *out; char outFn[20]; int useStdinStdout = 0; /* Declare our image pointer */ gdImagePtr im = 0; int i; /* We'll clear 'no' once we know the user has made a reasonable request. */ int no = 1; /* We'll set 'write' once we know the user's request requires that the image be written back to disk. */ int write = 0; /* C programs always get at least one argument; we want at least one more (the image), more in practice. */ if (argc < 2 || !strcmp (argv[1], "--help")) { no = 1; goto usage; } /* The last argument should be the image. Open the file. */ if (strcmp ("-", argv[argc - 1]) == 0) { /* - is synonymous with STDIN */ useStdinStdout = 1; in = stdin; } else { in = fopen (argv[argc - 1], "rb"); } if (!in) { fprintf (stderr, "Error: can't open file %s.\n", argv[argc - 1]); exit (1); } /* Now load the image. */ im = gdImageCreateFromPng (in); fclose (in); /* If the load failed, it must not be a PNG file. */ if (!im) { fprintf (stderr, "Error: %s is not a valid PNG file.\n", argv[argc - 1]); exit (1); } /* Consider each argument in turn. */ for (i = 1; (i < (argc - 1)); i++) { /* -i turns on and off interlacing. */ if (!strcmp (argv[i], "--help")) { /* Every program should use this for help! :) */ no = 1; goto usage; } else if (!strcmp (argv[i], "-i")) { if (i == (argc - 2)) { fprintf (stderr, "Error: -i specified without y or n.\n"); no = 1; goto usage; } if (!strcmp (argv[i + 1], "y")) { /* Set interlace. */ gdImageInterlace (im, 1); } else if (!strcmp (argv[i + 1], "n")) { /* Clear interlace. */ gdImageInterlace (im, 0); } else { fprintf (stderr, "Error: -i specified without y or n.\n"); no = 1; goto usage; } i++; no = 0; write = 1; } else if (!strcmp (argv[i], "-t")) { /* Set transparent index (or none). */ int index; if (i == (argc - 2)) { fprintf (stderr, "Error: -t specified without a color table index.\n"); no = 1; goto usage; } if (!strcmp (argv[i + 1], "none")) { /* -1 means not transparent. */ gdImageColorTransparent (im, -1); } else { /* OK, get an integer and set the index. */ index = atoi (argv[i + 1]); gdImageColorTransparent (im, index); } i++; write = 1; no = 0; } else if (!strcmp (argv[i], "-l")) { /* List the colors in the color table. */ int j; if (!im->trueColor) { /* Tabs used below. */ printf ("Index Red Green Blue Alpha\n"); for (j = 0; (j < gdImageColorsTotal (im)); j++) { /* Use access macros to learn colors. */ printf ("%d %d %d %d %d\n", j, gdImageRed (im, j), gdImageGreen (im, j), gdImageBlue (im, j), gdImageAlpha (im, j)); } } else { printf ("Truecolor image, no palette entries to list.\n"); } no = 0; } else if (!strcmp (argv[i], "-d")) { /* Output dimensions, etc. */ int t; printf ("Width: %d Height: %d Colors: %d\n", gdImageSX (im), gdImageSY (im), gdImageColorsTotal (im)); t = gdImageGetTransparent (im); if (t != (-1)) { printf ("First 100% transparent index: %d\n", t); } else { /* -1 means the image is not transparent. */ printf ("First 100% transparent index: none\n"); } if (gdImageGetInterlaced (im)) { printf ("Interlaced: yes\n"); } else { printf ("Interlaced: no\n"); } no = 0; } else { fprintf (stderr, "Unknown argument: %s\n", argv[i]); break; } } usage: if (no) { /* If the command failed, output an explanation. */ fprintf (stderr, "Usage: webpng [-i y|n ] [-l] [-t index|none ] [-d] pngname.png\n" " -i [y|n] Turns on/off interlace\n" " -l Prints the table of color indexes\n" " -t [index] Set the transparent color to the specified index (0-255 or \"none\")\n" " -d Reports the dimensions and other characteristics of the image.\n" "\n" "If you specify '-' as the input file, stdin/stdout will be used input/output.\n" ); } if (write) { if (useStdinStdout) { out = stdout; } else { /* Open a temporary file. */ /* "temp.tmp" is not good temporary filename. */ sprintf (outFn, "webpng.tmp%d", getpid ()); out = fopen (outFn, "wb"); if (!out) { fprintf (stderr, "Unable to write to %s -- exiting\n", outFn); exit (1); } } /* Write the new PNG. */ gdImagePng (im, out); if (!useStdinStdout) { fclose (out); /* Erase the old PNG. */ unlink (argv[argc - 1]); /* Rename the new to the old. */ if (rename (outFn, argv[argc - 1]) != 0) { perror ("rename"); exit (1); } } } /* Delete the image from memory. */ if (im) { gdImageDestroy (im); } /* All's well that ends well. */ return 0; } libwmf-0.2.8.4/src/ipa/0000755000077100007710000000000010272000332014030 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/eps/0000755000077100007710000000000010012152747014631 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/eps/bmp.h0000644000077100007710000000672607362765670015616 0ustar fjffjf00000000000000/* libwmf ("ipa/eps/bmp.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_eps_rop_draw (wmfAPI* API,wmfROP_Draw_t* rop_draw) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]rop_draw"); } /* TODO ?? Care about bmp_draw->type */ static void wmf_eps_bmp_draw (wmfAPI* API,wmfBMP_Draw_t* bmp_draw) { wmf_eps_t* ddata = WMF_EPS_GetData (API); static const char hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; wmfStream* out = ddata->out; U16 x; U16 y; U16 i; unsigned int ui_x; unsigned int ui_y; char buffer[80]; float width; float height; wmfRGB rgb; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]bmp_draw"); if (out == 0) return; wmf_stream_printf (API,out,"gsave %% wmf_[eps_]bmp_draw\n"); wmf_stream_printf (API,out," %f %f translate\n",bmp_draw->pt.x,bmp_draw->pt.y); width = (float) ((double) bmp_draw->crop.w * bmp_draw->pixel_width ); height = (float) ((double) bmp_draw->crop.h * bmp_draw->pixel_height); wmf_stream_printf (API,out," 0 %f translate\n",height); wmf_stream_printf (API,out," %f %f scale\n",width,-height); /* I'm going to assume it's a color image - TODO: monochrome */ wmf_stream_printf (API,out," /picstr %u 3 mul string def\n",bmp_draw->crop.w); wmf_stream_printf (API,out," %u %u 8\n",(unsigned int) bmp_draw->crop.w,(unsigned int) bmp_draw->crop.h); wmf_stream_printf (API,out," [ %u 0 0 %u 0 0 ]\n",(unsigned int) bmp_draw->crop.w,(unsigned int) bmp_draw->crop.h); wmf_stream_printf (API,out," { currentfile picstr readhexstring pop } false 3\n"); wmf_stream_printf (API,out," colorimage\n"); for (y = 0; y < bmp_draw->crop.h; y++) { ui_y = (unsigned int) (y + bmp_draw->crop.y); i = 0; for (x = 0; x < bmp_draw->crop.w; x++) { ui_x = (unsigned int) (x + bmp_draw->crop.x); if (i == 78) { buffer[i++] = '\n'; buffer[i] = 0; wmf_stream_printf (API,out,buffer); i = 0; } wmf_ipa_bmp_color (API,&(bmp_draw->bmp),&rgb,ui_x,ui_y); buffer[i++] = hex[(rgb.r & 0xf0) >> 4]; buffer[i++] = hex[ rgb.r & 0x0f ]; buffer[i++] = hex[(rgb.g & 0xf0) >> 4]; buffer[i++] = hex[ rgb.g & 0x0f ]; buffer[i++] = hex[(rgb.b & 0xf0) >> 4]; buffer[i++] = hex[ rgb.b & 0x0f ]; } if (i > 0) { buffer[i++] = '\n'; buffer[i] = 0; wmf_stream_printf (API,out,buffer); } } wmf_stream_printf (API,out,"grestore\n"); } static void wmf_eps_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read) { WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]bmp_read"); wmf_ipa_bmp_read (API,bmp_read); } static void wmf_eps_bmp_free (wmfAPI* API,wmfBMP* bmp) { WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]bmp_free"); wmf_ipa_bmp_free (API,bmp); } libwmf-0.2.8.4/src/ipa/eps/device.h0000644000077100007710000001407507362765670016273 0ustar fjffjf00000000000000/* libwmf ("ipa/eps/device.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is called by wmf_play() the *first* time the meta file is played */ static void wmf_eps_device_open (wmfAPI* API) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]device_open"); } /* This is called by wmf_api_destroy() */ static void wmf_eps_device_close (wmfAPI* API) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]device_close"); } /* This is called from the beginning of each play for initial page setup */ static void wmf_eps_device_begin (wmfAPI* API) { wmf_eps_t* ddata = WMF_EPS_GetData (API); wmfStream* out = ddata->out; float Ox; float Oy; float xScale; float yScale; time_t t; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]device_begin"); if (out == 0) return; if ((out->reset (out->context)) && ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0)) { WMF_ERROR (API,"unable to reset output stream!"); API->err = wmf_E_DeviceError; return; } if ((ddata->bbox.BR.x <= ddata->bbox.TL.x) || (ddata->bbox.BR.y <= ddata->bbox.TL.y)) { WMF_ERROR (API,"~~~~~~~~wmf_[eps_]device_begin: bounding box has null or negative size!"); API->err = wmf_E_Glitch; return; } if ((ddata->eps_width == 0) || (ddata->eps_height == 0)) { ddata->eps_width = (unsigned int) ceil (ddata->bbox.BR.x - ddata->bbox.TL.x); ddata->eps_height = (unsigned int) ceil (ddata->bbox.BR.y - ddata->bbox.TL.y); } if (ddata->flags & WMF_EPS_STYLE_PS) /* Output in full postscript style */ { wmf_stream_printf (API,out,"%%!PS-Adobe-2.0\n"); wmf_stream_printf (API,out,"%%%%BoundingBox: "); wmf_stream_printf (API,out," 0 0 %u %u\n",ddata->page_width,ddata->page_height); if (ddata->Title) { wmf_stream_printf (API,out,"%%%%Title: "); wmf_stream_printf (API,out,"%s\n",ddata->Title); } if (ddata->Creator) { wmf_stream_printf (API,out,"%%%%Creator: "); wmf_stream_printf (API,out,"%s\n",ddata->Creator); } if (ddata->Date) { wmf_stream_printf (API,out,"%%%%Date: "); wmf_stream_printf (API,out,"%s\n",ddata->Date); } else { t = time (0); wmf_stream_printf (API,out,"%%%%Date: "); wmf_stream_printf (API,out,"%s\n",ctime (&t)); } if (ddata->For) { wmf_stream_printf (API,out,"%%%%For: "); wmf_stream_printf (API,out,"%s\n",ddata->For); } wmf_stream_printf (API,out,"%%%%Pages: 1\n"); wmf_stream_printf (API,out,"%%%%PageOrder: Ascend\n"); wmf_stream_printf (API,out,"%%%%EndComments\n"); wmf_stream_printf (API,out,"%%%%BeginProlog\n"); out->sputs (WMF_PS_DEFS,out->context); wmf_stream_printf (API,out,"%%%%EndProlog\n"); wmf_stream_printf (API,out,"%%%%BeginSetup\n"); wmf_stream_printf (API,out,"%%%%EndSetup\n"); wmf_stream_printf (API,out,"%%Page: 1 1\n"); if (ddata->flags & WMF_EPS_LANDSCAPE) wmf_stream_printf (API,out,"%%%%PageOrientation: Landscape\n"); else wmf_stream_printf (API,out,"%%%%PageOrientation: Portrait\n" ); wmf_stream_printf (API,out,"%%%%BeginPageSetup\n"); out->sputs (WMF_PS_HEAD,out->context); wmf_stream_printf (API,out,"gsave\n"); if (ddata->flags & WMF_EPS_LANDSCAPE) { wmf_stream_printf (API,out,"%u 0 translate\n",ddata->page_width); wmf_stream_printf (API,out,"90 rotate\n"); } wmf_stream_printf (API,out,"%%%%EndPageSetup\n\n"); wmf_stream_printf (API,out,"%d %d translate\n",ddata->eps_x,ddata->eps_y); } else /* Output in basic encapsulated postscript style */ { wmf_stream_printf (API,out,"%%!PS-Adobe-2.0 EPSF-2.0\n"); wmf_stream_printf (API,out,"%%%%BoundingBox: "); wmf_stream_printf (API,out," 0 0 %d %d\n",ddata->eps_width,ddata->eps_height); out->sputs (WMF_PS_DEFS,out->context); out->sputs (WMF_PS_HEAD,out->context); wmf_stream_printf (API,out,"gsave\n"); } wmf_stream_printf (API,out,"0 %d translate\n",ddata->eps_height); wmf_stream_printf (API,out,"1 -1 scale\n"); Ox = - ((float) ddata->eps_width * ddata->bbox.TL.x) / (ddata->bbox.BR.x - ddata->bbox.TL.x); Oy = - ((float) ddata->eps_height * ddata->bbox.TL.y) / (ddata->bbox.BR.y - ddata->bbox.TL.y); wmf_stream_printf (API,out,"%f %f translate\n",Ox,Oy); xScale = (float) ddata->eps_width / (ddata->bbox.BR.x - ddata->bbox.TL.x); yScale = (float) ddata->eps_height / (ddata->bbox.BR.y - ddata->bbox.TL.y); wmf_stream_printf (API,out,"%f %f scale\n",xScale,yScale); wmf_stream_printf (API,out,"gsave %% begin clip\n"); } /* This is called from the end of each play for page termination */ static void wmf_eps_device_end (wmfAPI* API) { wmf_eps_t* ddata = WMF_EPS_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]device_end"); if (out == 0) return; wmf_stream_printf (API,out,"grestore %% end clip\n"); if (ddata->flags & WMF_EPS_STYLE_PS) /* Output in full postscript style */ { wmf_stream_printf (API,out,"%%%%PageTrailer\n"); wmf_stream_printf (API,out,"grestore\n"); out->sputs (WMF_PS_TAIL,out->context); wmf_stream_printf (API,out,"showpage\n"); wmf_stream_printf (API,out,"%%%%Trailer\n"); wmf_stream_printf (API,out,"%%%%EOF\n"); } else /* Output in basic encapsulated postscript style */ { wmf_stream_printf (API,out,"grestore\n"); out->sputs (WMF_PS_TAIL,out->context); wmf_stream_printf (API,out,"showpage\n"); } } libwmf-0.2.8.4/src/ipa/eps/draw.h0000644000077100007710000003003207362765670015760 0ustar fjffjf00000000000000/* libwmf ("ipa/eps/draw.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_eps_flood_interior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]flood_interior"); if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"flood_interior unsupported."); } else { WMF_ERROR (API,"flood_interior unsupported."); API->err = wmf_E_Glitch; } } static void wmf_eps_flood_exterior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]flood_exterior"); if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"flood_exterior unsupported."); } else { WMF_ERROR (API,"flood_exterior unsupported."); API->err = wmf_E_Glitch; } } static void wmf_eps_draw_pixel (wmfAPI* API,wmfDrawPixel_t* draw_pixel) { wmf_eps_t* ddata = WMF_EPS_GetData (API); float red; float green; float blue; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_pixel"); if (out == 0) return; red = (float) ((int) draw_pixel->color.r) / 255; green = (float) ((int) draw_pixel->color.g) / 255; blue = (float) ((int) draw_pixel->color.b) / 255; wmf_stream_printf (API,out,"newpath %f %f moveto ",draw_pixel->pt.x,draw_pixel->pt.y); wmf_stream_printf (API,out,"%f dup neg exch 0 rlineto 0 %f rlineto 0 rlineto ", (float) draw_pixel->pixel_width, (float) draw_pixel->pixel_height); wmf_stream_printf (API,out,"closepath %f %f %f setrgbcolor fill\n",red,green,blue); } static void wmf_eps_draw_pie (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_pie"); eps_draw_arc (API,draw_arc,eps_arc_pie); } static void wmf_eps_draw_chord (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_chord"); eps_draw_arc (API,draw_arc,eps_arc_chord); } static void wmf_eps_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_arc"); eps_draw_arc (API,draw_arc,eps_arc_open); } static void wmf_eps_draw_ellipse (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_ellipse"); eps_draw_arc (API,draw_arc,eps_arc_ellipse); } static void eps_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc,eps_arc_t finish) { wmf_eps_t* ddata = WMF_EPS_GetData (API); float Ox; float Oy; float a; float b; float start = 0; float end = 360; float linewidth; double x_eff; double y_eff; double stretch; wmfStream* out = ddata->out; wmfPen* pen = 0; wmfD_Rect bbox; WMF_DEBUG (API,"~~~~~~~~eps_draw_arc"); if (out == 0) return; bbox.TL = draw_arc->TL; bbox.BR = draw_arc->BR; Ox = (draw_arc->BR.x + draw_arc->TL.x) / 2; /* origin of ellipse */ Oy = (draw_arc->BR.y + draw_arc->TL.y) / 2; a = (draw_arc->BR.x - draw_arc->TL.x) / 2; /* axes of ellipse */ b = (draw_arc->BR.y - draw_arc->TL.y) / 2; if (finish != eps_arc_ellipse) { x_eff = (double) draw_arc->start.x; y_eff = (double) a * (double) a - x_eff * x_eff; y_eff = ((y_eff < 0) ? 0 : sqrt (y_eff)); if (draw_arc->start.y < 0) y_eff = - y_eff; start = (float) (atan2 (y_eff,x_eff) * 180 / PI); x_eff = (double) draw_arc->end.x; y_eff = (double) a * (double) a - x_eff * x_eff; y_eff = ((y_eff < 0) ? 0 : sqrt (y_eff)); if (draw_arc->end.y < 0) y_eff = - y_eff; end = (float) (atan2 (y_eff,x_eff) * 180 / PI); } if (TO_FILL (draw_arc) && (finish != eps_arc_open)) { wmf_stream_printf (API,out,"gsave %% eps_draw_arc\n"); wmf_stream_printf (API,out,"matrix currentmatrix %f %f translate 1 %f scale ",Ox,Oy,b/a); if (finish == eps_arc_ellipse) { wmf_stream_printf (API,out,"0 0 %f 0 360 arc ",a); } else if (finish == eps_arc_pie) { wmf_stream_printf (API,out,"0 0 %f %f %f arc 0 0 lineto ",a,start,end); } else if (finish == eps_arc_chord) { wmf_stream_printf (API,out,"0 0 %f %f %f arc ",a,start,end); } wmf_stream_printf (API,out,"closepath setmatrix "); eps_path_fill (API,draw_arc->dc,&bbox); wmf_stream_printf (API,out,"grestore\n"); } if (TO_DRAW (draw_arc)) { pen = WMF_DC_PEN (draw_arc->dc); linewidth = (float) WMF_PEN_HEIGHT (pen); stretch = WMF_PEN_WIDTH (pen) / WMF_PEN_HEIGHT (pen); wmf_stream_printf (API,out,"gsave %% eps_draw_ellipse\n"); wmf_stream_printf (API,out,"%f 1 scale ",stretch); wmf_stream_printf (API,out,"matrix currentmatrix %f %f translate 1 %f scale ", (float) ((double) Ox / stretch),Oy,b / (float) ((double) a / stretch)); if (finish == eps_arc_ellipse) { wmf_stream_printf (API,out,"0 0 %f 0 360 arc closepath ",a); } else if (finish == eps_arc_open) { wmf_stream_printf (API,out,"0 0 %f %f %f arc ",a,start,end); } else if (finish == eps_arc_pie) { wmf_stream_printf (API,out,"0 0 %f %f %f arc 0 0 lineto closepath ",a,start,end); } else if (finish == eps_arc_chord) { wmf_stream_printf (API,out,"0 0 %f %f %f arc closepath ",a,start,end); } wmf_stream_printf (API,out,"setmatrix "); eps_path_stroke (API,draw_arc->dc,linewidth); wmf_stream_printf (API,out,"grestore\n"); } } static void wmf_eps_draw_line (wmfAPI* API,wmfDrawLine_t* draw_line) { wmf_eps_t* ddata = WMF_EPS_GetData (API); float linewidth; double stretch; wmfStream* out = ddata->out; wmfPen* pen = 0; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_line"); if (out == 0) return; if (TO_DRAW (draw_line)) { pen = WMF_DC_PEN (draw_line->dc); linewidth = (float) WMF_PEN_HEIGHT (pen); stretch = WMF_PEN_WIDTH (pen) / WMF_PEN_HEIGHT (pen); wmf_stream_printf (API,out,"gsave %% wmf_[eps_]draw_line\n"); wmf_stream_printf (API,out,"%f 1 scale ",stretch); wmf_stream_printf (API,out,"newpath %f %f moveto %f %f lineto ", (float) ((double) draw_line->from.x / stretch),draw_line->from.y, (float) ((double) draw_line->to.x / stretch),draw_line->to.y ); eps_path_stroke (API,draw_line->dc,linewidth); wmf_stream_printf (API,out,"grestore\n"); } } static void wmf_eps_poly_line (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_eps_t* ddata = WMF_EPS_GetData (API); U16 i; U16 sub_length; U16 sub_count; float linewidth; double stretch; wmfPolyLine_t sub_line; wmfStream* out = ddata->out; wmfPen* pen = 0; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]poly_line"); if (out == 0) return; if (poly_line->count > 500) { sub_length = poly_line->count / (1 + poly_line->count / 500); sub_count = 0; sub_line.dc = poly_line->dc; sub_line.pt = poly_line->pt; while (poly_line->count > sub_count + 1) { sub_line.count = MIN (sub_length,poly_line->count - sub_count); wmf_eps_poly_line (API,&sub_line); sub_line.pt += sub_line.count - 1; sub_count += sub_line.count - 1; } } else if ((poly_line->count > 1) && TO_DRAW (poly_line)) { pen = WMF_DC_PEN (poly_line->dc); linewidth = (float) WMF_PEN_HEIGHT (pen); stretch = WMF_PEN_WIDTH (pen) / WMF_PEN_HEIGHT (pen); wmf_stream_printf (API,out,"gsave %% wmf_[eps_]poly_line\n"); wmf_stream_printf (API,out,"%f 1 scale\n",stretch); for (i = 0; i < poly_line->count; i++) { wmf_stream_printf (API,out,"%f %f\n", (float) ((double) poly_line->pt[poly_line->count-1-i].x / stretch), poly_line->pt[poly_line->count-1-i].y); } wmf_stream_printf (API,out,"newpath moveto 2 1 %u { pop lineto } for ",(unsigned int) poly_line->count); eps_path_stroke (API,poly_line->dc,linewidth); wmf_stream_printf (API,out,"grestore\n"); } } static void wmf_eps_draw_polygon (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_eps_t* ddata = WMF_EPS_GetData (API); U16 i; float linewidth; double stretch; wmfStream* out = ddata->out; wmfPen* pen = 0; wmfD_Rect bbox; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_polygon"); if (out == 0) return; if (poly_line->count > 500) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Too many points on polygon!"); } else { WMF_ERROR (API,"Too many points on polygon!"); API->err = wmf_E_Glitch; } } else if (poly_line->count > 2) { if (TO_FILL (poly_line)) { bbox.TL.x = poly_line->pt[0].x; bbox.TL.y = poly_line->pt[0].y; bbox.BR.x = poly_line->pt[0].x; bbox.BR.y = poly_line->pt[0].y; wmf_stream_printf (API,out,"gsave %% wmf_[eps_]draw_polygon\n"); for (i = 0; i < poly_line->count; i++) { wmf_stream_printf (API,out,"%f %f\n",poly_line->pt[i].x,poly_line->pt[i].y); if (bbox.TL.x > poly_line->pt[i].x) bbox.TL.x = poly_line->pt[i].x; if (bbox.TL.y > poly_line->pt[i].y) bbox.TL.y = poly_line->pt[i].y; if (bbox.BR.x < poly_line->pt[i].x) bbox.BR.x = poly_line->pt[i].x; if (bbox.BR.y < poly_line->pt[i].y) bbox.BR.y = poly_line->pt[i].y; } wmf_stream_printf (API,out,"newpath moveto 2 1 %u { pop lineto } for closepath ", (unsigned int) poly_line->count); eps_path_fill (API,poly_line->dc,&bbox); wmf_stream_printf (API,out,"grestore\n"); } if (TO_DRAW (poly_line)) { pen = WMF_DC_PEN (poly_line->dc); linewidth = (float) WMF_PEN_HEIGHT (pen); stretch = WMF_PEN_WIDTH (pen) / WMF_PEN_HEIGHT (pen); wmf_stream_printf (API,out,"gsave %% wmf_[eps_]draw_polygon\n"); wmf_stream_printf (API,out,"%f 1 scale\n",stretch); for (i = 0; i < poly_line->count; i++) { wmf_stream_printf (API,out,"%f %f\n", (float) ((double) poly_line->pt[poly_line->count-1-i].x / stretch), poly_line->pt[poly_line->count-1-i].y); } wmf_stream_printf (API,out,"newpath moveto 2 1 %u { pop lineto } for closepath ", (unsigned int) poly_line->count); eps_path_stroke (API,poly_line->dc,linewidth); wmf_stream_printf (API,out,"grestore\n"); } } } static void wmf_eps_draw_rectangle (wmfAPI* API,wmfDrawRectangle_t* draw_rect) { wmf_eps_t* ddata = WMF_EPS_GetData (API); float linewidth; double stretch; wmfStream* out = ddata->out; wmfPen* pen = 0; wmfD_Rect bbox; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_rectangle"); if (out == 0) return; if (TO_FILL (draw_rect)) { bbox.TL = draw_rect->TL; bbox.BR = draw_rect->BR; wmf_stream_printf (API,out,"gsave %% wmf_[eps_]draw_rectangle\n"); wmf_stream_printf (API,out,"newpath %f %f moveto %f %f lineto %f %f lineto %f %f lineto closepath ", draw_rect->TL.x,draw_rect->TL.y, draw_rect->TL.x,draw_rect->BR.y, draw_rect->BR.x,draw_rect->BR.y, draw_rect->BR.x,draw_rect->TL.y); eps_path_fill (API,draw_rect->dc,&bbox); wmf_stream_printf (API,out,"grestore\n"); } if (TO_DRAW (draw_rect)) { pen = WMF_DC_PEN (draw_rect->dc); linewidth = (float) WMF_PEN_HEIGHT (pen); stretch = WMF_PEN_WIDTH (pen) / WMF_PEN_HEIGHT (pen); wmf_stream_printf (API,out,"gsave %% wmf_[eps_]draw_rectangle\n"); wmf_stream_printf (API,out,"%f 1 scale ",stretch); wmf_stream_printf (API,out,"newpath %f %f moveto %f %f lineto %f %f lineto %f %f lineto closepath ", (float) ((double) draw_rect->TL.x / stretch),draw_rect->TL.y, (float) ((double) draw_rect->TL.x / stretch),draw_rect->BR.y, (float) ((double) draw_rect->BR.x / stretch),draw_rect->BR.y, (float) ((double) draw_rect->BR.x / stretch),draw_rect->TL.y); eps_path_stroke (API,draw_rect->dc,linewidth); wmf_stream_printf (API,out,"grestore\n"); } } libwmf-0.2.8.4/src/ipa/eps/region.h0000644000077100007710000000764407362765671016324 0ustar fjffjf00000000000000/* libwmf ("ipa/eps/region.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_eps_region_frame (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_eps_t* ddata = WMF_EPS_GetData (API); wmfStream* out = ddata->out; wmfPen* set_pen = 0; wmfPen pen; wmfDC dc; wmfD_Rect rect; unsigned int i; float linewidth; float stretch; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]region_frame"); if (out == 0) return; if (poly_rect->count == 0) return; set_pen = WMF_DC_PEN (poly_rect->dc); pen = (*set_pen); WMF_PEN_SET_STYLE (&pen,PS_SOLID); WMF_PEN_SET_ENDCAP (&pen,PS_ENDCAP_SQUARE); WMF_PEN_SET_JOIN (&pen,PS_JOIN_MITER); WMF_DC_SET_PEN (&dc,&pen); linewidth = (float) poly_rect->height; stretch = poly_rect->width / poly_rect->height; for (i = 0; i < poly_rect->count; i++) { rect.TL.x = poly_rect->TL[i].x - poly_rect->width / 2; rect.TL.y = poly_rect->TL[i].y - poly_rect->height / 2; rect.BR.x = poly_rect->BR[i].x + poly_rect->width / 2; rect.BR.y = poly_rect->BR[i].y + poly_rect->height / 2; wmf_stream_printf (API,out,"gsave %% wmf_[eps_]region_frame\n"); wmf_stream_printf (API,out,"%f 1 scale ",stretch); wmf_stream_printf (API,out,"newpath %f %f moveto %f %f lineto %f %f lineto %f %f lineto closepath ", rect.TL.x / stretch,rect.TL.y, rect.TL.x / stretch,rect.BR.y, rect.BR.x / stretch,rect.BR.y, rect.BR.x / stretch,rect.TL.y); eps_path_stroke (API,&dc,linewidth); wmf_stream_printf (API,out,"grestore\n"); } } static void wmf_eps_region_paint (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_eps_t* ddata = WMF_EPS_GetData (API); unsigned int i; wmfStream* out = ddata->out; wmfD_Rect bbox; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]region_paint"); if (out == 0) return; if (poly_rect->count == 0) return; if (TO_FILL (poly_rect)) { for (i = 0; i < poly_rect->count; i++) { bbox.TL = poly_rect->TL[i]; bbox.BR = poly_rect->BR[i]; wmf_stream_printf (API,out,"gsave %% wmf_[eps_]region_paint\n"); wmf_stream_printf (API,out,"newpath %f %f moveto %f %f lineto %f %f lineto %f %f lineto closepath ", poly_rect->TL[i].x,poly_rect->TL[i].y, poly_rect->TL[i].x,poly_rect->BR[i].y, poly_rect->BR[i].x,poly_rect->BR[i].y, poly_rect->BR[i].x,poly_rect->TL[i].y); eps_path_fill (API,poly_rect->dc,&bbox); wmf_stream_printf (API,out,"grestore\n"); } } } static void wmf_eps_region_clip (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_eps_t* ddata = WMF_EPS_GetData (API); unsigned int i; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]region_clip"); if (out == 0) return; wmf_stream_printf (API,out,"grestore %% end clip\n"); wmf_stream_printf (API,out,"gsave %% begin clip\n"); if (poly_rect->count == 0) return; wmf_stream_printf (API,out,"[\n"); for (i = 0; i < poly_rect->count; i++) { wmf_stream_printf (API,out,"%f %f %f %f\n", poly_rect->TL[i].x, poly_rect->TL[i].y, poly_rect->BR[i].x-poly_rect->TL[i].x, poly_rect->BR[i].y-poly_rect->TL[i].y); } wmf_stream_printf (API,out,"] rectclip\n"); } libwmf-0.2.8.4/src/ipa/fig/0000755000077100007710000000000010271770014014607 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/fig/bmp.h0000644000077100007710000001044107362765671015562 0ustar fjffjf00000000000000/* libwmf ("ipa/fig/bmp.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_fig_rop_draw (wmfAPI* API,wmfROP_Draw_t* rop_draw) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]rop_draw"); } /* TODO ?? Care about bmp_draw->type */ static void wmf_fig_bmp_draw (wmfAPI* API,wmfBMP_Draw_t* bmp_draw) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; figDC fig; figPoint pt; int width; int height; int left; int right; int top; int bottom; int npoints = 5; int flipped = 0; char* name = 0; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]bmp_draw"); if (out == 0) return; if (bmp_draw->bmp.data == 0) return; if (ddata->image.name == 0) return; name = ddata->image.name (ddata->image.context); if (name == 0) return; if (WMF_FIG_ImageIsEPS (ddata)) { wmf_ipa_bmp_eps (API,bmp_draw,name); } else if (WMF_FIG_ImageIsPNG (ddata)) { wmf_ipa_bmp_png (API,bmp_draw,name); } else if (WMF_FIG_ImageIsJPG (ddata)) { wmf_ipa_bmp_jpg (API,bmp_draw,name); } else { WMF_ERROR (API,"Glitch! Can't determine image format to use."); API->err = wmf_E_Glitch; return; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } /* Okay, if we've got this far then "name" is the filename of an eps (cropped) image */ wmf_stream_printf (API,out,"# wmf_[fig_]bmp_draw\n"); fig_set_style (API,bmp_draw->dc,&fig); ddata->depth -= ddata->ddec; wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %d %d\n", O_POLYLINE, T_PICTURE, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.join_style, fig.cap_style, fig.radius, fig.forward_arrow, fig.backward_arrow, npoints); width = fig_width (API,(float) ((double) bmp_draw->crop.w * bmp_draw->pixel_width )); height = fig_height (API,(float) ((double) bmp_draw->crop.h * bmp_draw->pixel_height)); pt = fig_translate (API,bmp_draw->pt); left = pt.x; right = pt.x + width; top = pt.y; bottom = pt.y + height; wmf_stream_printf (API,out,"%d %s\n",flipped,name); wmf_stream_printf (API,out,"%d %d ", left, top); wmf_stream_printf (API,out,"%d %d ", right,top); wmf_stream_printf (API,out,"%d %d ", right,bottom); wmf_stream_printf (API,out,"%d %d ", left, bottom); wmf_stream_printf (API,out,"%d %d\n",left, top); } static void wmf_fig_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read) { WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]bmp_read"); wmf_ipa_bmp_read (API,bmp_read); fig_bmp_add (API,bmp_read->bmp.data); } static void wmf_fig_bmp_free (wmfAPI* API,wmfBMP* bmp) { WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]bmp_free"); wmf_ipa_bmp_free (API,bmp); fig_bmp_remove (API,bmp->data); } static void fig_bmp_add (wmfAPI* API,void* bmp) { wmf_fig_t* ddata = WMF_FIG_GetData (API); fig_t* fig = (fig_t*) ddata->fig_data; int i; for (i = 0; i < NUMPATTERNS; i++) { if (fig->equiv[i] == 0) { fig->equiv[i] = bmp; break; } } } static int fig_bmp_pattern (wmfAPI* API,void* bmp) { wmf_fig_t* ddata = WMF_FIG_GetData (API); fig_t* fig = (fig_t*) ddata->fig_data; int i; for (i = 0; i < NUMPATTERNS; i++) { if (fig->equiv[i] == bmp) break; } return ((i < NUMPATTERNS) ? (41 + i) : -1); } static void fig_bmp_remove (wmfAPI* API,void* bmp) { wmf_fig_t* ddata = WMF_FIG_GetData (API); fig_t* fig = (fig_t*) ddata->fig_data; int i; for (i = 0; i < NUMPATTERNS; i++) { if (fig->equiv[i] == bmp) { fig->equiv[i] = 0; break; } } } libwmf-0.2.8.4/src/ipa/fig/color.h0000644000077100007710000000506307335771305016115 0ustar fjffjf00000000000000/* libwmf ("ipa/fig/color.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static fig_color_t fig_color[32] = { { 0.000, 0.000, 0.000 }, /* Black */ { 0.000, 0.000, 1.000 }, /* Blue */ { 0.000, 1.000, 0.000 }, /* Green */ { 0.000, 1.000, 1.000 }, /* Cyan */ { 1.000, 0.000, 0.000 }, /* Red */ { 1.000, 0.000, 1.000 }, /* Magenta */ { 1.000, 1.000, 0.000 }, /* Yellow */ { 1.000, 1.000, 1.000 }, /* White */ { 0.000, 0.000, 0.560 }, { 0.000, 0.000, 0.690 }, { 0.000, 0.000, 0.820 }, { 0.530, 0.810, 1.000 }, { 0.000, 0.560, 0.000 }, { 0.000, 0.690, 0.000 }, { 0.000, 0.820, 0.000 }, { 0.000, 0.560, 0.560 }, { 0.000, 0.690, 0.690 }, { 0.000, 0.820, 0.820 }, { 0.560, 0.000, 0.000 }, { 0.690, 0.000, 0.000 }, { 0.820, 0.000, 0.000 }, { 0.560, 0.000, 0.560 }, { 0.690, 0.000, 0.690 }, { 0.820, 0.000, 0.820 }, { 0.500, 0.190, 0.000 }, { 0.630, 0.250, 0.000 }, { 0.750, 0.380, 0.000 }, { 1.000, 0.500, 0.500 }, { 1.000, 0.630, 0.630 }, { 1.000, 0.750, 0.750 }, { 1.000, 0.880, 0.880 }, { 1.000, 0.840, 0.000 }}; static void fig_std_colors (wmfAPI* API) { wmfRGB color; fig_color_t* fc = 0; int i; fc = fig_color; for (i = 0; i < 32; i++) { color = wmf_rgb_color (API,fc->r,fc->g,fc->b); wmf_ipa_color_add (API,&color); fc++; } } static void fig_color_to_file (wmfAPI* API,wmfStream* out) { wmfRGB* rgb = 0; unsigned long count; unsigned long i; unsigned int r; unsigned int g; unsigned int b; count = wmf_ipa_color_count (API); /* Write all the collected extra colour from IPA color table */ for (i = 32; i < count; i++) { rgb = wmf_ipa_color (API,i); r = (unsigned) rgb->r; g = (unsigned) rgb->g; b = (unsigned) rgb->b; wmf_stream_printf (API,out,"0 %lu #%02x%02x%02x\n",i,r,g,b); } } libwmf-0.2.8.4/src/ipa/fig/device.h0000644000077100007710000001460410271767772016245 0ustar fjffjf00000000000000/* libwmf ("ipa/fig/device.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is called by wmf_play() the *first* time the meta file is played */ static void wmf_fig_device_open (wmfAPI* API) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_open"); } /* This is called by wmf_api_destroy() */ static void wmf_fig_device_close (wmfAPI* API) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_close"); } /* This is called from the beginning of each play for initial page setup */ static void wmf_fig_device_begin (wmfAPI* API) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; unsigned int page_width; unsigned int page_height; float def_width; float def_height; float ratio_def; float ratio_page; time_t t; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_begin"); if (out == 0) return; if ((out->reset (out->context)) && ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0)) { WMF_ERROR (API,"unable to reset output stream!"); API->err = wmf_E_DeviceError; return; } if ((ddata->bbox.BR.x <= ddata->bbox.TL.x) || (ddata->bbox.BR.y <= ddata->bbox.TL.y)) { WMF_ERROR (API,"bounding box has null or negative size!"); API->err = wmf_E_Glitch; return; } if (ddata->dpi == 0) { WMF_ERROR (API,"Glitch! dpi = 0?"); API->err = wmf_E_Glitch; return; } if ((ddata->fig_width == 0) || (ddata->fig_height == 0)) { wmf_size (API,&def_width,&def_height); if (ddata->flags & WMF_FIG_LANDSCAPE) { page_width = wmf_ipa_page_height (API,ddata->format); page_height = wmf_ipa_page_width (API,ddata->format); } else { page_width = wmf_ipa_page_width (API,ddata->format); page_height = wmf_ipa_page_height (API,ddata->format); } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } ddata->fig_width = (unsigned int) ceil (def_width ); ddata->fig_height = (unsigned int) ceil (def_height); if ((ddata->flags & WMF_FIG_NO_MARGINS) == 0) { ddata->fig_x = 72; /* 1 inch margin */ ddata->fig_y = 72; page_width -= 144; page_height -= 144; } if ((ddata->fig_width > page_width) || (ddata->fig_height > page_height) || WMF_FIG_MAXPECT) { ratio_def = def_height / def_width; ratio_page = (float) page_height / (float) page_width; if (ratio_def > ratio_page) { ddata->fig_height = page_height; ddata->fig_width = (unsigned int) ((float) page_height / ratio_def); } else { ddata->fig_width = page_width; ddata->fig_height = (unsigned int) ((float) page_width * ratio_def); } } ddata->fig_x += ((int) page_width - (int) ddata->fig_width ) / 2; ddata->fig_y += ((int) page_height - (int) ddata->fig_height) / 2; ddata->fig_x = (ddata->fig_x * ddata->dpi) / 72; ddata->fig_y = (ddata->fig_y * ddata->dpi) / 72; ddata->fig_width = (ddata->fig_width * ddata->dpi) / 72; ddata->fig_height = (ddata->fig_height * ddata->dpi) / 72; } ddata->depth = 999; /* This overrides user settings ?? */ wmf_stream_printf (API,out,"#FIG 3.2\n"); if (ddata->flags & WMF_FIG_LANDSCAPE) { wmf_stream_printf (API,out,"Landscape\n"); } else { wmf_stream_printf (API,out,"Portrait\n"); } wmf_stream_printf (API,out,"Center\n"); wmf_stream_printf (API,out,"Metric\n"); wmf_stream_printf (API,out,"%s\n",wmf_ipa_page_format (API,ddata->format)); wmf_stream_printf (API,out,"100.0\n"); wmf_stream_printf (API,out,"Single\n"); wmf_stream_printf (API,out,"-2\n"); wmf_stream_printf (API,out,"%u 2\n",ddata->dpi); if (ddata->Title) { wmf_stream_printf (API,out,"# Title: "); wmf_stream_printf (API,out,"%s\n",ddata->Title); } if (ddata->Creator) { wmf_stream_printf (API,out,"# Creator: "); wmf_stream_printf (API,out,"%s\n",ddata->Creator); } if (ddata->Date) { wmf_stream_printf (API,out,"# Date: "); wmf_stream_printf (API,out,"%s\n",ddata->Date); } else { t = time (0); wmf_stream_printf (API,out,"# Date: "); wmf_stream_printf (API,out,"%s\n",ctime (&t)); } if (ddata->For) { wmf_stream_printf (API,out,"# For: "); wmf_stream_printf (API,out,"%s\n",ddata->For); } /* Write colour pseudo-objects to file */ fig_color_to_file (API,out); } /* This is called from the end of each play for page termination */ static void wmf_fig_device_end (wmfAPI* API) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]device_end"); if (out == 0) return; wmf_stream_printf (API,out,"# end device_end\n"); } /* translation & scaling functions */ static figPoint fig_translate (wmfAPI* API,wmfD_Coord d_pt) { wmf_fig_t* ddata = WMF_FIG_GetData (API); figPoint fig_pt; double x; double y; x = ((double) d_pt.x - (double) ddata->bbox.TL.x); x /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); x *= (double) ddata->fig_width; y = ((double) d_pt.y - (double) ddata->bbox.TL.y); y /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); y *= (double) ddata->fig_height; fig_pt.x = (int) ddata->fig_x + (int) floor (x); fig_pt.y = (int) ddata->fig_y + (int) floor (y); return (fig_pt); } static int fig_width (wmfAPI* API,float wmf_width) { wmf_fig_t* ddata = WMF_FIG_GetData (API); double width; width = (double) wmf_width * (double) ddata->fig_width; width /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); return ((int) ceil (ABS (width))); } static int fig_height (wmfAPI* API,float wmf_height) { wmf_fig_t* ddata = WMF_FIG_GetData (API); double height; height = (double) wmf_height * (double) ddata->fig_height; height /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); return ((int) ceil (ABS (height))); } libwmf-0.2.8.4/src/ipa/fig/draw.h0000644000077100007710000003246710271767772015752 0ustar fjffjf00000000000000/* libwmf ("ipa/fig/draw.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_fig_flood_interior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]flood_interior"); if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"flood_interior unsupported."); } else { WMF_ERROR (API,"flood_interior unsupported."); API->err = wmf_E_Glitch; } } static void wmf_fig_flood_exterior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]flood_exterior"); if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"flood_exterior unsupported."); } else { WMF_ERROR (API,"flood_exterior unsupported."); API->err = wmf_E_Glitch; } } static void wmf_fig_draw_pixel (wmfAPI* API,wmfDrawPixel_t* draw_pixel) { wmfBrush* set_brush = 0; wmfBrush brush; wmfPen* set_pen = 0; wmfPen pen; wmfDrawRectangle_t draw_rect; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_pixel"); /* Going to redirect this to wmf_fig_draw_rectangle */ draw_rect.dc = draw_pixel->dc; draw_rect.width = 0; draw_rect.height = 0; /* brush setup */ set_brush = WMF_DC_BRUSH (draw_rect.dc); brush = (*set_brush); WMF_BRUSH_SET_STYLE (&brush,BS_SOLID); WMF_BRUSH_SET_COLOR (&brush,&(draw_pixel->color)); WMF_DC_SET_BRUSH (draw_rect.dc,&brush); /* pen setup */ set_pen = WMF_DC_PEN (draw_rect.dc); pen = (*set_pen); WMF_PEN_SET_STYLE (&pen,PS_NULL); WMF_DC_SET_PEN (draw_rect.dc,&pen); draw_rect.TL.x = (float) draw_pixel->pt.x; draw_rect.TL.y = (float) draw_pixel->pt.y; draw_rect.BR.x = (float) (draw_pixel->pt.x + draw_pixel->pixel_width ); draw_rect.BR.y = (float) (draw_pixel->pt.y + draw_pixel->pixel_height); wmf_fig_draw_rectangle (API,&draw_rect); WMF_DC_SET_BRUSH (draw_rect.dc,set_brush); /* Soon to be redundant ?? */ WMF_DC_SET_PEN (draw_rect.dc,set_pen); /* Soon to be redundant ?? */ } static void wmf_fig_draw_pie (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_pie"); wmf_stream_printf (API,out,"# wmf_[fig_]draw_pie\n"); fig_draw_arc (API,draw_arc,0); wmf_stream_printf (API,out,"# draw_pie not impl\n"); } static void wmf_fig_draw_chord (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_chord"); wmf_stream_printf (API,out,"# draw_chord not impl\n"); } static void wmf_fig_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_arc"); wmf_stream_printf (API,out,"# wmf_[fig_]draw_arc\n"); fig_draw_arc(API, draw_arc, 1); wmf_stream_printf (API,out,"# end draw_arc\n"); } static void fig_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc,int sub_type) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; figDC fig; figPoint TL; figPoint BR; int direction; int Ox; int Oy; float start_x; float start_y; float end_x; float end_y; float mid_x; float mid_y; float rad; float start; float end; float mid; WMF_DEBUG (API,"~~~~~~~~fig_draw_arc"); wmf_stream_printf (API,out,"# fig_draw_arc\n"); fig_set_style (API,draw_arc->dc,&fig); ddata->depth -= ddata->ddec; direction = 0; start_x = (float) draw_arc->start.x; start_y = (float) draw_arc->start.y; end_x = (float) draw_arc->end.x; end_y = (float) draw_arc->end.y; TL = fig_translate (API,draw_arc->TL); BR = fig_translate (API,draw_arc->BR); /* origin: */ Ox = (BR.x + TL.x + 1) / 2; Oy = (BR.y + TL.y + 1) / 2; /* long axis */ rad = ((float) (BR.x - TL.x)) / 2; /* start_y = sqrt(rad * rad - start_x * start_x); if (draw_arc->start.y < 0) start_y = - start_y; end_y = sqrt(rad * rad - end_x * end_x); if (draw_arc->end.y < 0) end_y = - end_y; */ start = atan2 (start_y,start_x); end = atan2 ( end_y, end_x); /* rad = sqrt(start_x*start_x + start_y*start_y); */ /* Construct middle point: */ if (end < start) end += M_2PI; mid = 0.5 * (start + end); mid_x = Ox + (rad * cos (mid)); mid_y = Oy + (rad * sin (mid)); /* Shift to origin: */ start_x = Ox + start_x; start_y = Oy + start_y; end_x = Ox + end_x; end_y = Oy + end_y; wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %f %f %d %d %d %d %d %d\n", O_ARC, sub_type, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.cap_style, direction, fig.forward_arrow, fig.backward_arrow, (float) Ox, (float) Oy, (int) start_x, (int) start_y, (int) mid_x, (int) mid_y, (int) end_x, (int) end_y); } static void wmf_fig_draw_ellipse (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; figDC fig; figPoint TL; figPoint BR; float angle; int sub_type; int direction; int Ox; int Oy; int a; int b; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_ellipse"); wmf_stream_printf (API,out,"# wmf_[fig_]draw_ellipse\n"); fig_set_style (API,draw_arc->dc,&fig); sub_type = 1; ddata->depth -= ddata->ddec; direction = 1; angle = 0.0; TL = fig_translate (API,draw_arc->TL); BR = fig_translate (API,draw_arc->BR); /* origin of ellipse */ Ox = (BR.x + TL.x + 1) / 2; Oy = (BR.y + TL.y + 1) / 2; /* axes of ellipse */ a = (BR.x - TL.x + 1) / 2; b = (BR.y - TL.y + 1) / 2; wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %f %d %d %d %d %d %d %d %d\n", O_ELLIPSE, sub_type, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, direction, angle, Ox, Oy, a, b, Ox, Oy, (Ox + a), (Oy + b)); wmf_stream_printf (API,out,"# end draw_ellipse\n"); } static void wmf_fig_draw_line (wmfAPI* API,wmfDrawLine_t* draw_line) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; figDC fig; figPoint from; figPoint to; int npoints; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_line"); if (out == 0) return; if (TO_DRAW (draw_line)) { wmf_stream_printf (API,out,"# wmf_[fig_]draw_line\n"); fig_set_style (API,draw_line->dc,&fig); ddata->depth -= ddata->ddec; npoints = 2; wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %d %d\n", O_POLYLINE, T_POLYLINE, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.join_style, fig.cap_style, fig.radius, fig.forward_arrow, fig.backward_arrow, npoints); from = fig_translate (API,draw_line->from); to = fig_translate (API,draw_line->to ); wmf_stream_printf (API,out, "%d %d\n%d %d\n", from.x, from.y, to.x, to.y); wmf_stream_printf (API,out,"# end draw_line\n"); } } static void wmf_fig_poly_line (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; wmfPolyLine_t sub_line; figDC fig; figPoint pt; U16 i; U16 sub_length; U16 sub_count; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]poly_line"); if (out == 0) return; if (poly_line->count > 500) { sub_length = poly_line->count / (1 + poly_line->count / 500); sub_count = 0; sub_line.dc = poly_line->dc; sub_line.pt = poly_line->pt; while (poly_line->count > sub_count + 1) { sub_line.count = MIN (sub_length,poly_line->count - sub_count); wmf_fig_poly_line (API,&sub_line); sub_line.pt += sub_line.count - 1; sub_count += sub_line.count - 1; } } else if ((poly_line->count > 1) && TO_DRAW (poly_line)) { fig_set_style (API,poly_line->dc,&fig); /* fjf - the logic may have change here ?? */ fig.area_fill = -1; /* override fill settings */ ddata->depth -= ddata->ddec; wmf_stream_printf (API,out,"# wmf_[fig_]poly_line\n"); wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %d %d\n", O_POLYLINE, T_POLYLINE, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.join_style, fig.cap_style, fig.radius, fig.forward_arrow, fig.backward_arrow, poly_line->count); /* Output co-ordinate pairs: */ for (i = 0; i < poly_line->count; i++) { pt = fig_translate (API,poly_line->pt[poly_line->count-1-i]); wmf_stream_printf (API,out,"%d %d\n",pt.x,pt.y); } wmf_stream_printf (API,out,"# end poly_line\n"); } } static void wmf_fig_draw_polygon (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; figDC fig; figPoint pt; U16 i; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_polygon"); if (out == 0) return; if (poly_line->count > 500) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Too many points on polygon!"); } else { WMF_ERROR (API,"Too many points on polygon!"); API->err = wmf_E_Glitch; } } else if (poly_line->count > 2) { fig_set_style (API,poly_line->dc,&fig); ddata->depth -= ddata->ddec; if (TO_FILL (poly_line)) { wmf_stream_printf (API,out,"# wmf_[fig_]draw_polygon\n"); wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %d %d\n", O_POLYLINE, T_POLYGON, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.join_style, fig.cap_style, fig.radius, fig.forward_arrow, fig.backward_arrow, poly_line->count + 1); for (i = 0; i < poly_line->count; i++) { pt = fig_translate (API,poly_line->pt[i]); wmf_stream_printf (API,out,"%d %d\n",pt.x,pt.y); } pt = fig_translate (API,poly_line->pt[0]); wmf_stream_printf (API,out,"%d %d\n",pt.x,pt.y); wmf_stream_printf (API,out,"# end draw_polygon\n"); } if (TO_DRAW (poly_line)) { fig.area_fill = -1; fig.thickness++; wmf_stream_printf (API,out,"# wmf_[fig_]draw_polygon\n"); wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %d %d\n", O_POLYLINE, T_POLYGON, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.join_style, fig.cap_style, fig.radius, fig.forward_arrow, fig.backward_arrow, poly_line->count + 1); for (i = 0; i < poly_line->count; i++) { pt = fig_translate (API,poly_line->pt[poly_line->count-1-i]); wmf_stream_printf (API,out,"%d %d\n",pt.x,pt.y); } pt = fig_translate (API,poly_line->pt[poly_line->count-1]); wmf_stream_printf (API,out,"%d %d\n",pt.x,pt.y); wmf_stream_printf (API,out,"# end draw_polygon\n"); } } } static void wmf_fig_draw_rectangle (wmfAPI* API,wmfDrawRectangle_t* draw_rect) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; figDC fig; figPoint TL; figPoint BR; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_rectangle"); if (out == 0) return; fig_set_style (API,draw_rect->dc,&fig); ddata->depth -= ddata->ddec; TL = fig_translate (API,draw_rect->TL); BR = fig_translate (API,draw_rect->BR); if (TO_FILL (draw_rect)) { wmf_stream_printf (API,out,"# wmf_[fig_]draw_rectangle\n"); wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %d %d\n", O_POLYLINE, T_BOX, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.join_style, fig.cap_style, fig.radius, fig.forward_arrow, fig.backward_arrow, 5); wmf_stream_printf (API,out,"%d %d\n%d %d\n%d %d\n%d %d\n%d %d\n", TL.x,TL.y, TL.x,BR.y, BR.x,BR.y, BR.x,TL.y, TL.x,TL.y); wmf_stream_printf (API,out,"# end draw_rectangle\n"); } if (TO_DRAW (draw_rect)) { fig.area_fill = -1; fig.thickness++; wmf_stream_printf (API,out,"# wmf_[fig_]draw_rectangle\n"); wmf_stream_printf (API,out, "%d %d %d %d %d %d %d %d %d %f %d %d %d %d %d %d\n", O_POLYLINE, T_BOX, fig.line_style, fig.thickness, fig.pen_color, fig.fill_color, ddata->depth, fig.pen_style, fig.area_fill, fig.style_val, fig.join_style, fig.cap_style, fig.radius, fig.forward_arrow, fig.backward_arrow, 5); wmf_stream_printf (API,out,"%d %d\n%d %d\n%d %d\n%d %d\n %d %d\n", TL.x,TL.y, TL.x,BR.y, BR.x,BR.y, BR.x,TL.y, TL.x,TL.y); wmf_stream_printf (API,out,"# end draw_rectangle\n"); } } libwmf-0.2.8.4/src/ipa/fig/font.h0000644000077100007710000000735107362765701015752 0ustar fjffjf00000000000000/* libwmf ("ipa/fig/font.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static PS_to_FIG PSFontNo[35] = { { "Times-Roman", 0 }, { "Times-Italic", 1 }, { "Times-Bold", 2 }, { "Times-BoldItalic", 3 }, { "AvantGarde-Book", 4 }, { "AvantGarde-BookOblique", 5 }, { "AvantGarde-Demi", 6 }, { "AvantGarde-DemiOblique", 7 }, { "Bookman-Light", 8 }, { "Bookman-LightItalic", 9 }, { "Bookman-Demi", 10 }, { "Bookman-DemiItalic", 11 }, { "Courier", 12 }, { "Courier-Oblique", 13 }, { "Courier-Bold", 14 }, { "Courier-BoldOblique", 15 }, { "Helvetica", 16 }, { "Helvetica-Oblique", 17 }, { "Helvetica-Bold", 18 }, { "Helvetica-BoldOblique", 19 }, { "Helvetica-Narrow", 20 }, { "Helvetica-Narrow-Oblique", 21 }, { "Helvetica-Narrow-Bold", 22 }, { "Helvetica-Narrow-BoldOblique", 23 }, { "NewCenturySchlbk-Roman", 24 }, { "NewCenturySchlbk-Italic", 25 }, { "NewCenturySchlbk-Bold", 26 }, { "NewCenturySchlbk-BoldItalic", 27 }, { "Palatino-Roman", 28 }, { "Palatino-Italic", 29 }, { "Palatino-Bold", 30 }, { "Palatino-BoldItalic", 31 }, { "Symbol", 32 }, { "ZapfChancery-MediumItalic", 33 }, { "ZapfDingbats", 34 }}; static void wmf_fig_draw_text (wmfAPI* API,wmfDrawText_t* draw_text) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; wmfFont* font = 0; figPoint pt; char* ps_name = 0; float ratio; float theta; int i; int fig_font; int sub_type; int pen_style = 0; unsigned int size; unsigned int length; unsigned int font_flags; unsigned long pen_color; unsigned long bg_color; unsigned long height; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]draw_text"); if (out == 0) return; if (WMF_DC_OPAQUE (draw_text->dc)) { bg_color = wmf_ipa_color_index (API,WMF_DC_BACKGROUND (draw_text->dc)); /* TODO */ } font = WMF_DC_FONT (draw_text->dc); height = draw_text->font_height; ratio = (float) draw_text->font_ratio; /* In radians: */ theta = (float) (WMF_TEXT_ANGLE (font)); ddata->depth -= ddata->ddec; /* PS points / FIG units */ size = (fig_height (API,height) * 72) / ddata->dpi; pt = fig_translate (API,draw_text->pt); length = 0; wmf_stream_printf (API,out,"# wmf_[fig_]draw_text\n"); pen_color = wmf_ipa_color_index (API,WMF_DC_TEXTCOLOR (draw_text->dc)); fig_font = -1; /* Default. */ ps_name = WMF_FONT_PSNAME (font); for (i = 0; i < 35; i++) { if (strcmp (ps_name,PSFontNo[i].PS_FontName) == 0) { fig_font = PSFontNo[i].FIG_FontNumber; } } sub_type = 0; /* Left justified for now; interpreter should do rest... */ font_flags = 0x4; /* PostScript font for now */ wmf_stream_printf (API,out, "%d %d %lu %d %d %d %u %f %u %lu %u %d %d ", O_TEXT, sub_type, pen_color, ddata->depth, pen_style, fig_font, size, theta, font_flags, height, length, pt.x, pt.y); wmf_stream_printf (API,out,"%s\\001\n",draw_text->str); wmf_stream_printf (API,out,"# end draw_text\n"); } libwmf-0.2.8.4/src/ipa/fig/region.h0000644000077100007710000000670010271767772016267 0ustar fjffjf00000000000000/* libwmf ("ipa/fig/region.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_fig_region_frame (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmfBrush* set_brush = 0; wmfBrush brush; wmfPen* set_pen = 0; wmfPen pen; wmfDrawRectangle_t draw_rect; unsigned int i; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]region_frame"); if (poly_rect->count == 0) return; /* Going to redirect this to wmf_fig_draw_rectangle */ draw_rect.dc = poly_rect->dc; draw_rect.width = 0; draw_rect.height = 0; /* brush setup */ set_brush = WMF_DC_BRUSH (draw_rect.dc); brush = (*set_brush); WMF_BRUSH_SET_STYLE (&brush,BS_NULL); WMF_DC_SET_BRUSH (draw_rect.dc,&brush); /* pen setup */ set_pen = WMF_DC_PEN (draw_rect.dc); pen = (*set_pen); WMF_PEN_SET_STYLE (&pen,PS_SOLID); WMF_PEN_SET_JOIN (&pen,PS_JOIN_MITER); WMF_PEN_SET_ENDCAP (&pen,PS_ENDCAP_SQUARE); WMF_PEN_SET_WIDTH (&pen,poly_rect->width ); WMF_PEN_SET_HEIGHT (&pen,poly_rect->height); WMF_DC_SET_PEN (draw_rect.dc,&pen); for (i = 0; i < poly_rect->count; i++) { draw_rect.TL.x = poly_rect->TL[i].x - poly_rect->width / 2; draw_rect.TL.y = poly_rect->TL[i].y - poly_rect->height / 2; draw_rect.BR.x = poly_rect->BR[i].x + poly_rect->width / 2; draw_rect.BR.y = poly_rect->BR[i].y + poly_rect->height / 2; wmf_fig_draw_rectangle (API,&draw_rect); } WMF_DC_SET_BRUSH (draw_rect.dc,set_brush); /* Soon to be redundant ?? */ WMF_DC_SET_PEN (draw_rect.dc,set_pen); /* Soon to be redundant ?? */ } static void wmf_fig_region_paint (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmfPen* set_pen = 0; wmfPen pen; wmfDrawRectangle_t draw_rect; unsigned int i; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]region_paint"); if (poly_rect->count == 0) return; if (!TO_FILL (poly_rect)) return; /* Going to redirect this to wmf_fig_draw_rectangle */ draw_rect.dc = poly_rect->dc; draw_rect.width = 0; draw_rect.height = 0; /* pen setup */ set_pen = WMF_DC_PEN (draw_rect.dc); pen = (*set_pen); WMF_PEN_SET_STYLE (&pen,PS_NULL); WMF_DC_SET_PEN (draw_rect.dc,&pen); for (i = 0; i < poly_rect->count; i++) { draw_rect.TL = poly_rect->TL[i]; draw_rect.BR = poly_rect->BR[i]; wmf_fig_draw_rectangle (API,&draw_rect); } WMF_DC_SET_PEN (draw_rect.dc,set_pen); /* Soon to be redundant ?? */ } static void wmf_fig_region_clip (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]region_clip"); if (out == 0) return; wmf_stream_printf (API,out,"# end clip\n"); wmf_stream_printf (API,out,"# begin clip\n"); if (poly_rect->count == 0) return; /* */ } libwmf-0.2.8.4/src/ipa/ipa/0000755000077100007710000000000010012152737014612 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/ipa/bmp.h0000644000077100007710000010500507365251534015556 0ustar fjffjf00000000000000/* libwmf ("ipa/ipa/bmp.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef HAVE_GD /* png stuff below adapted from stuff sent to me [fjf] by Lennard D. Rosenthal; * probably used in ImageMagick and may not be covered, therefore, by the LGPL - (fjf) * * utility routine for saving a pixbuf to a png file. * This was adapted from Iain Holmes' code in gnome-iconedit, and probably * should be in a utility library, possibly in gdk-pixbuf itself. */ static void ldr_bmp_png (wmfAPI* API,wmfBMP_Draw_t* bmp_draw,FILE* out) { #ifdef HAVE_LIBPNG wmfRGB rgb; png_structp png_ptr = 0; png_infop info_ptr = 0; png_text text[2]; int i; int j; int x; int y; int width = (int) bmp_draw->crop.w; int height = (int) bmp_draw->crop.h; int depth = 8; /* ?? bit depth (bits per sample) */ int opacity; char* ptr = 0; char* buffer = (char*) wmf_malloc (API,4 * width); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING,0,0,0); if (png_ptr == 0) { WMF_DEBUG (API,"Failed to write bitmap as PNG! (png_create_write_struct failed)"); wmf_free (API,buffer); return; } info_ptr = png_create_info_struct (png_ptr); if (info_ptr == 0) { WMF_DEBUG (API,"Failed to write bitmap as PNG! (png_create_info_struct failed)"); png_destroy_write_struct (&png_ptr,0); wmf_free (API,buffer); return; } if (setjmp (png_ptr->jmpbuf)) { WMF_DEBUG (API,"Failed to write bitmap as PNG! (setjmp failed)"); png_destroy_write_struct (&png_ptr,&info_ptr); wmf_free (API,buffer); return; } png_init_io (png_ptr,out); png_set_IHDR (png_ptr,info_ptr,width,height,depth, PNG_COLOR_TYPE_RGB_ALPHA,PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); /* Some text to go with the png image */ text[0].key = "Title"; text[0].text = "A converted bitmap"; text[0].compression = PNG_TEXT_COMPRESSION_NONE; text[1].key = "Software"; text[1].text = "libwmf2"; text[1].compression = PNG_TEXT_COMPRESSION_NONE; png_set_text (png_ptr,info_ptr,text,2); /* Write header data */ png_write_info (png_ptr,info_ptr); /* pump the raster data into libpng, one scan line at a time */ x = (int) bmp_draw->crop.x; y = (int) bmp_draw->crop.y; for (j = 0; j < height; j++) { ptr = buffer; for (i = 0; i < width; i++) { opacity = wmf_ipa_bmp_color (API,&(bmp_draw->bmp),&rgb,x+i,y+j); *ptr++ = (char) rgb.r; *ptr++ = (char) rgb.g; *ptr++ = (char) rgb.b; *ptr++ = (char) ((unsigned char) (opacity & 0xff)); } png_write_row (png_ptr,(png_bytep) buffer); } png_write_end (png_ptr,info_ptr); png_destroy_write_struct (&png_ptr,&info_ptr); wmf_free (API,buffer); #else /* HAVE_LIBPNG */ WMF_ERROR (API,"Glitch? No PNG support!"); API->err = wmf_E_Glitch; #endif /* HAVE_LIBPNG */ return; } #endif /* ! HAVE_GD */ #ifdef HAVE_GD static int ipa_b64_sink (void* context,const char* buffer,int length) { ipa_b64_t* b64 = (ipa_b64_t*) context; int i = 0; while (i < length) { b64->buffer[b64->length] = buffer[i]; i++; b64->length++; if (b64->length == IPA_B64_BUFLEN) ipa_b64_flush (context); } return (i); } #endif /* HAVE_GD */ #ifdef HAVE_GD static void ipa_b64_flush (void* context) { ipa_b64_t* b64 = (ipa_b64_t*) context; static char B64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; char buffer[IPA_B64_LEQUIV]; unsigned long ulc1; unsigned long ulc2; unsigned long ulc3; unsigned long ulc; int triplets = (b64->length + 2) / 3; int triplen; int i; char* ptr = b64->buffer; char* btr = buffer; if (b64->length == 0) return; triplen = triplets * 3; for (i = b64->length; i < triplen; i++) b64->buffer[i] = 0; (*btr) = '\n'; btr++; for (i = 0; i < triplets; i++) { ulc1 = (unsigned long) ((unsigned char) (*ptr)); ptr++; ulc2 = (unsigned long) ((unsigned char) (*ptr)); ptr++; ulc3 = (unsigned long) ((unsigned char) (*ptr)); ptr++; ulc = (ulc1 << 16) | (ulc2 << 8) | ulc3; ulc1 = (ulc & (0x3f << 18)) >> 18; ulc2 = (ulc & (0x3f << 12)) >> 12; ulc3 = (ulc & (0x3f << 6)) >> 6; ulc &= 0x3f; (*btr) = B64[ulc1]; btr++; (*btr) = B64[ulc2]; btr++; (*btr) = B64[ulc3]; btr++; (*btr) = B64[ulc ]; btr++; } if ((triplen - b64->length) > 1) (*(btr-2)) = '='; if ((triplen - b64->length) > 0) (*(btr-1)) = '='; (*btr) = '\0'; wmf_stream_printf (b64->API,b64->out,buffer); b64->length = 0; } #endif /* HAVE_GD */ void wmf_ipa_bmp_b64 (wmfAPI* API,wmfBMP_Draw_t* bmp_draw,wmfStream* out) { #ifdef HAVE_GD gdImage* image = 0; gdSink sink; ipa_b64_t b64; WMF_DEBUG (API,"~~~~~~~~wmf_ipa_bmp_b64"); #ifndef HAVE_LIBPNG WMF_DEBUG (API,"No support for PNG, sorry!"); API->err = wmf_E_DeviceError; return; #endif /* HAVE_LIBPNG */ image = ipa_bmp_gd (API,bmp_draw); if (image == 0) return; b64.API = API; b64.out = out; b64.length = 0; sink.context = (void*) (&b64); sink.sink = ipa_b64_sink; gdImagePngToSink (image,&sink); gdImageDestroy (image); ipa_b64_flush (sink.context); #endif /* HAVE_GD */ } void wmf_ipa_bmp_png (wmfAPI* API,wmfBMP_Draw_t* bmp_draw,char* name) { FILE* file = 0; #ifdef HAVE_GD gdImage* image = 0; #endif /* HAVE_GD */ WMF_DEBUG (API,"~~~~~~~~wmf_ipa_bmp_png"); #ifndef HAVE_LIBPNG WMF_DEBUG (API,"No support for PNG, sorry!"); API->err = wmf_E_DeviceError; return; #endif /* HAVE_LIBPNG */ file = fopen (name,"wb"); if (file == 0) { WMF_ERROR (API,"Failed to open file to write GD image!"); return; } #ifdef HAVE_GD image = ipa_bmp_gd (API,bmp_draw); if (image) { gdImagePng (image,file); gdImageDestroy (image); } #else /* HAVE_GD */ ldr_bmp_png (API,bmp_draw,file); #endif /* HAVE_GD */ fclose (file); } void wmf_ipa_bmp_jpg (wmfAPI* API,wmfBMP_Draw_t* bmp_draw,char* name) { #ifdef HAVE_GD FILE* file = 0; gdImage* image = 0; WMF_DEBUG (API,"~~~~~~~~wmf_ipa_bmp_jpg"); #ifndef HAVE_LIBJPEG WMF_DEBUG (API,"No support for JPEG, sorry!"); API->err = wmf_E_DeviceError; return; #endif /* HAVE_LIBJPEG */ file = fopen (name,"wb"); if (file == 0) { WMF_ERROR (API,"Failed to open file to write GD image!"); return; } image = ipa_bmp_gd (API,bmp_draw); if (image) { gdImageJpeg (image,file,-1); /* Default quality. */ gdImageDestroy (image); } fclose (file); #endif /* HAVE_GD */ } #ifdef HAVE_GD static gdImage* ipa_bmp_gd (wmfAPI* API,wmfBMP_Draw_t* bmp_draw) { wmfRGB rgb; int color; unsigned int ui_x; unsigned int ui_y; unsigned int i; unsigned int j; gdImage* image = 0; WMF_DEBUG (API,"~~~~~~~~ipa_bmp_gd"); if (bmp_draw->bmp.data == 0) { WMF_ERROR (API,"Glitch! Attempt to write non-existant bitmap."); API->err = wmf_E_Glitch; return (0); } image = gdImageCreateTrueColor ((int) bmp_draw->crop.w,(int) bmp_draw->crop.h); if (image == 0) { WMF_ERROR (API,"Failed to create GD image!"); API->err = wmf_E_DeviceError; return (0); } ui_x = (unsigned int) bmp_draw->crop.x; ui_y = (unsigned int) bmp_draw->crop.y; for (j = 0; j < (unsigned int) bmp_draw->crop.h; j++) { for (i = 0; i < (unsigned int) bmp_draw->crop.w; i++) { wmf_ipa_bmp_color (API,&(bmp_draw->bmp),&rgb,ui_x+i,ui_y+j); color = gdImageColorResolve (image,rgb.r,rgb.g,rgb.b); gdImageSetPixel (image,(int) i,(int) (bmp_draw->crop.h-1-j),color); } } return (image); } #endif /* HAVE_GD */ void wmf_ipa_bmp_eps (wmfAPI* API,wmfBMP_Draw_t* bmp_draw,char* name) { wmfRGB rgb; unsigned int i; unsigned int j; unsigned int k; unsigned int ui_x; unsigned int ui_y; unsigned int width; unsigned int height; static char hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; char buffer[80]; FILE* file = 0; WMF_DEBUG (API,"~~~~~~~~wmf_ipa_bmp_eps"); if (bmp_draw->bmp.data == 0) { WMF_ERROR (API,"Glitch! Attempt to write non-existant bitmap."); API->err = wmf_E_Glitch; return; } file = fopen (name,"w"); if (file == 0) { WMF_ERROR (API,"Failed to open file to write EPS image!"); API->err = wmf_E_BadFile; return; } ui_x = (unsigned int) bmp_draw->crop.x; ui_y = (unsigned int) bmp_draw->crop.y; width = (unsigned int) bmp_draw->crop.w; height = (unsigned int) bmp_draw->crop.h; /* Output as an embedded eps */ fputs ("%!PS-Adobe-2.0 EPSF-2.0\n",file); fputs ("%%BoundingBox: ",file); fprintf (file," 0 0 %u %u\n",width,height); fprintf (file," 0 %d translate\n",1); fprintf (file," %u %u scale\n",width,height); /* I'm going to assume it's a color image - TODO: monochrome */ fprintf (file," /picstr %u 3 mul string def\n",width); fprintf (file," %u %u 8\n",width,height); fprintf (file," [ %u 0 0 %u 0 0 ]\n",width,height); fputs (" { currentfile picstr readhexstring pop } false 3\n",file); fputs (" colorimage\n",file); for (j = 0; j < height; j++) { k = 0; for (i = 0; i < width; i++) { if (k == 78) { buffer[k++] = '\n'; buffer[k] = 0; fputs (buffer,file); k = 0; } wmf_ipa_bmp_color (API,&(bmp_draw->bmp),&rgb,ui_x+i,ui_y+j); buffer[k++] = hex[(rgb.r & 0xf0) >> 4]; buffer[k++] = hex[ rgb.r & 0x0f ]; buffer[k++] = hex[(rgb.g & 0xf0) >> 4]; buffer[k++] = hex[ rgb.g & 0x0f ]; buffer[k++] = hex[(rgb.b & 0xf0) >> 4]; buffer[k++] = hex[ rgb.b & 0x0f ]; } if (k > 0) { buffer[k++] = '\n'; buffer[k] = 0; fputs (buffer,file); } } fputs ("showpage\n",file); fclose (file); return; } void wmf_ipa_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read) { wmfBMP* bmp = 0; BMPSource source; BMPData* data; WMF_DEBUG (API,"~~~~~~~~wmf_[ipa_]bmp_read"); bmp = &(bmp_read->bmp); bmp->data = 0; data = (BMPData*) wmf_malloc (API,sizeof (BMPData)); if (ERR (API)) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { API->err = wmf_E_None; bmp->data = 0; } WMF_DEBUG (API,"bailing..."); return; } data->NColors = 0; data->rgb = 0; data->image = 0; bmp->width = bmp_read->width; bmp->height = bmp_read->height; bmp->data = (void*) data; source.begin = bmp_read->buffer; source.end = bmp_read->buffer + bmp_read->length; source.ptr = bmp_read->buffer; ReadBMPImage (API,bmp,&source); if (ERR (API)) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { API->err = wmf_E_None; bmp->data = 0; } } } void wmf_ipa_bmp_free (wmfAPI* API,wmfBMP* bmp) { BMPData* data; WMF_DEBUG (API,"~~~~~~~~wmf_[ipa_]bmp_free"); if (bmp->data == 0) return; data = (BMPData*) bmp->data; if (data->rgb) wmf_free (API,(void*) data->rgb ); if (data->image) wmf_free (API,(void*) data->image); wmf_free (API,bmp->data); bmp->data = 0; } wmfBMP wmf_ipa_bmp_copy (wmfAPI* API,wmfBMP* bmp,unsigned int width,unsigned int height) { wmfBMP copy; wmfRGB rgb; BMPData* copy_data = 0; BMPData* data = 0; float x; float y; int i; int j; int opacity; size_t size; WMF_DEBUG (API,"~~~~~~~~wmf_[ipa_]bmp_copy"); copy.width = width; copy.height = height; copy.data = 0; if (bmp->data == 0) return (copy); data = (BMPData*) bmp->data; copy.data = wmf_malloc (API,sizeof (BMPData)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return (copy); } copy_data = (BMPData*) copy.data; if (data->rgb) { copy_data->NColors = data->NColors; copy_data->rgb = (wmfRGB*) wmf_malloc (API,data->NColors * sizeof (wmfRGB)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); wmf_free (API,copy.data); copy.data = 0; return (copy); } } else { copy_data->NColors = 0; copy_data->rgb = 0; } copy_data->bits_per_pixel = data->bits_per_pixel; copy_data->bytes_per_line = 4 * ((width * copy_data->bits_per_pixel + 31) / 32); size = height * copy_data->bytes_per_line * sizeof (unsigned char); copy_data->image = (unsigned char*) wmf_malloc (API,size); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); if (copy_data->rgb) wmf_free (API,copy_data->rgb); wmf_free (API,copy.data); copy.data = 0; return (copy); } copy_data->masked = data->masked; copy_data->flipped = data->flipped; /* Data structure is complete, now to copy the image... */ for (j = 0; j < height; j++) { y = (float) ((double) j * (double) bmp->height / (double) height); for (i = 0; i < width; i++) { x = (float) ((double) i * (double) bmp->width / (double) width); opacity = wmf_ipa_bmp_interpolate (API,bmp,&rgb,x,y); if (opacity < 0) break; /* Shouldn't occur, I think */ wmf_ipa_bmp_setcolor (API,©,&rgb,(unsigned char) opacity,i,j); } } return (copy); } int wmf_ipa_bmp_color (wmfAPI* API,wmfBMP* bmp,wmfRGB* rgb,unsigned int x,unsigned int y) { int status = -1; /* error value */ /* WMF_DEBUG (API,"~~~~~~~~wmf_[ipa_]bmp_color"); */ rgb->r = 0; rgb->g = 0; rgb->b = 0; if (bmp->data && (x >= 0) && (x < bmp->width) && (y >= 0) && (y < bmp->height)) { status = ExtractColor (API,bmp,rgb,x,y); } else if ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0) { WMF_ERROR (API,"Point outside bitmap"); API->err = wmf_E_Glitch; } return (status); } int wmf_ipa_bmp_interpolate (wmfAPI* API,wmfBMP* bmp,wmfRGB* rgb,float x,float y) { int status = -1; /* error value */ unsigned int i1; unsigned int i2; unsigned int j1; unsigned int j2; unsigned char o_11; unsigned char o_12; unsigned char o_21; unsigned char o_22; float f_11; float f_12; float f_21; float f_22; wmfRGB rgb_11; wmfRGB rgb_12; wmfRGB rgb_21; wmfRGB rgb_22; /* WMF_DEBUG (API,"~~~~~~~~wmf_[ipa_]bmp_interpolate"); */ i1 = (unsigned int) floor (x); i2 = (unsigned int) ceil (x); j1 = (unsigned int) floor (y); j2 = (unsigned int) ceil (y); if (i1 >= (bmp->width - 2)) { i1 = bmp->width - 2; i2 = bmp->width - 1; } if (i1 < 0) { i1 = 0; i2 = 1; } if (j1 >= (bmp->height - 2)) { j1 = bmp->height - 2; j2 = bmp->height - 1; } if (j1 < 0) { j1 = 0; j2 = 1; } if ((i1 == i2) && (j1 == j2)) return (wmf_ipa_bmp_color (API,bmp,rgb,i1,j1)); i2 = i1 + 1; j2 = j1 + 1; rgb->r = 0; rgb->g = 0; rgb->b = 0; status = wmf_ipa_bmp_color (API,bmp,&rgb_11,i1,j1); if (status < 0) return (status); o_11 = (unsigned char) status; status = wmf_ipa_bmp_color (API,bmp,&rgb_12,i2,j1); if (status < 0) return (status); o_12 = (unsigned char) status; status = wmf_ipa_bmp_color (API,bmp,&rgb_21,i1,j2); if (status < 0) return (status); o_21 = (unsigned char) status; status = wmf_ipa_bmp_color (API,bmp,&rgb_22,i2,j2); if (status < 0) return (status); o_22 = (unsigned char) status; x -= (float) i1; y -= (float) j1; f_11 = (1 - x) * (1 - y); f_12 = x * (1 - y); f_22 = x * y; f_21 = (1 - x) * y; status = (int) (rgb_11.r * f_11 + rgb_21.r * f_21 + rgb_22.r * f_22 + rgb_12.r * f_12); rgb->r = (unsigned char) ((status < 0) ? 0 : ((status > 255) ? 255 : status)); status = (int) (rgb_11.g * f_11 + rgb_21.g * f_21 + rgb_22.g * f_22 + rgb_12.g * f_12); rgb->g = (unsigned char) ((status < 0) ? 0 : ((status > 255) ? 255 : status)); status = (int) (rgb_11.b * f_11 + rgb_21.b * f_21 + rgb_22.b * f_22 + rgb_12.b * f_12); rgb->b = (unsigned char) ((status < 0) ? 0 : ((status > 255) ? 255 : status)); status = (int) (o_11 * f_11 + o_21 * f_21 + o_22 * f_22 + o_12 * f_12); status = ((status < 0) ? 0 : ((status > 255) ? 255 : status)); return (status); } void wmf_ipa_bmp_setcolor (wmfAPI* API,wmfBMP* bmp,wmfRGB* rgb,unsigned char opacity, unsigned int x,unsigned int y) { /* WMF_DEBUG (API,"~~~~~~~~wmf_[ipa_]bmp_setcolor"); */ if (bmp->data && (x >= 0) && (x < bmp->width) && (y >= 0) && (y < bmp->height)) { SetColor (API,bmp,rgb,opacity,x,y); } else if ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0) { WMF_ERROR (API,"Point outside bitmap"); API->err = wmf_E_Glitch; } } /* Following source adapted from ImageMagick-5.2.7's coders/bmp.c, hence: % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % BBBB M M PPPP % % B B MM MM P P % % BBBB M M M PPPP % % B B M M P % % BBBB M M P % % % % % % Read/Write ImageMagick Image Format. % % % % % % Software Design % % John Cristy % % July 1992 % % % % % % Copyright (C) 2001 ImageMagick Studio, a non-profit organization dedicated % % to making software imaging solutions freely available. % % % % Permission is hereby granted, free of charge, to any person obtaining a % % copy of this software and associated documentation files ("ImageMagick"), % % to deal in ImageMagick without restriction, including without limitation % % the rights to use, copy, modify, merge, publish, distribute, sublicense, % % and/or sell copies of ImageMagick, and to permit persons to whom the % % ImageMagick is furnished to do so, subject to the following conditions: % % % % The above copyright notice and this permission notice shall be included in % % all copies or substantial portions of ImageMagick. % % % % The software is provided "as is", without warranty of any kind, express or % % implied, including but not limited to the warranties of merchantability, % % fitness for a particular purpose and noninfringement. In no event shall % % ImageMagick Studio be liable for any claim, damages or other liability, % % whether in an action of contract, tort or otherwise, arising from, out of % % or in connection with ImageMagick or the use or other dealings in % % ImageMagick. % % % % Except as contained in this notice, the name of the ImageMagick Studio % % shall not be used in advertising or otherwise to promote the sale, use or % % other dealings in ImageMagick without prior written authorization from the % % ImageMagick Studio. % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % */ static size_t ReadBlob (BMPSource* src,size_t length,unsigned char* buffer) { size_t count = 0; for (count = 0; count < length; count++) { if (src->ptr >= src->end) break; buffer[count] = (*(src->ptr)); src->ptr++; } return (count); } static int ReadBlobByte (BMPSource* src) { int byte; if (src->ptr >= src->end) return (EOF); byte = (int) (*(src->ptr)); src->ptr++; return (byte); } static unsigned short ReadBlobLSBShort (BMPSource* src) { unsigned short value; unsigned char buffer[2]; value = ReadBlob (src,2,buffer); if (value < 2) return (~value); value = buffer[1] << 8; value |= buffer[0]; return (value); } static unsigned long ReadBlobLSBLong (BMPSource* src) { unsigned long value; unsigned char buffer[4]; value = ReadBlob (src,4,buffer); if (value < 4) return (~value); /* i.e., = -1 */ value = buffer[3] << 24; value |= buffer[2] << 16; value |= buffer[1] << 8; value |= buffer[0]; return (value); } static long TellBlob (BMPSource* src) { return ((long) (src->ptr - src->begin)); } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % D e c o d e I m a g e % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Method DecodeImage unpacks the packed image pixels into runlength-encoded % pixel packets. % % A description of each parameter follows: % % o compression: A value of 1 means the compressed pixels are runlength % encoded for a 256-color bitmap. A value of 2 means a 16-color bitmap. % % o pixels: The address of a byte (8 bits) array of pixel data created by % the decoding process. % % */ static void DecodeImage (wmfAPI* API,wmfBMP* bmp,BMPSource* src,unsigned int compression,unsigned char* pixels) { int byte; int count; int i; U16 x; U16 y; U32 u; unsigned char* q; for (u = 0; u < ((U32) bmp->width * (U32) bmp->height); u++) pixels[u] = 0; byte = 0; x = 0; q = pixels; for (y = 0; y < bmp->height; ) { count = ReadBlobByte (src); if (count == EOF) break; if (count != 0) { /* Encoded mode. */ byte = ReadBlobByte (src); for (i = 0; i < count; i++) { if (compression == 1) { (*(q++)) = (unsigned char) byte; } else { (*(q++)) = ((i & 0x01) ? (byte & 0x0f) : ((byte >> 4) & 0x0f)); x++; } } } else { /* Escape mode. */ count = ReadBlobByte (src); if (count == 0x01) return; switch (count) { case 0x00: { /* End of line. */ x = 0; y++; q = pixels + y * bmp->width; break; } case 0x02: { /* Delta mode. */ x += ReadBlobByte (src); y += ReadBlobByte (src); q = pixels + y * bmp->width + x; break; } default: { /* Absolute mode. */ for (i = 0; i < count; i++) { if (compression == 1) { (*(q++)) = ReadBlobByte (src); } else { if ((i & 0x01) == 0) byte = ReadBlobByte (src); (*(q++)) = ((i & 0x01) ? (byte & 0x0f) : ((byte >> 4) & 0x0f)); } x++; } /* Read pad byte. */ if (compression == 1) { if (count & 0x01) byte = ReadBlobByte (src); } else { if (((count & 0x03) == 1) || ((count & 0x03) == 2)) { byte = ReadBlobByte (src); } } break; } } } /* ?? TODO if (QuantumTick (y,image->rows)) MagickMonitor (LoadImageText,y,image->rows); */ } byte = ReadBlobByte (src); /* end of line */ byte = ReadBlobByte (src); return; } /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % R e a d B M P I m a g e % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Method ReadBMPImage reads a Microsoft Windows bitmap image file and % returns it. It allocates the memory necessary for the new Image structure % and returns a pointer to the new image. % % The format of the ReadBMPImage method is: % % image=ReadBMPImage(image_info) % % A description of each parameter follows: % % o image: Method ReadBMPImage returns a pointer to the image after % reading. A null image is returned if there is a memory shortage or % if the image cannot be read. % % o image_info: Specifies a pointer to an ImageInfo structure. % % o exception: return any errors or warnings in this structure. % % */ static void ReadBMPImage (wmfAPI* API,wmfBMP* bmp,BMPSource* src) { BMPInfo bmp_info; BMPData* data = 0; int byte; long start_position = 0; unsigned char packet[4]; unsigned int bytes_per_line; unsigned int image_size; unsigned int packet_size; unsigned int i; unsigned long u; size_t bytes_read; data = (BMPData*) bmp->data; memset (&bmp_info,0,sizeof (BMPInfo)); bmp_info.ba_offset = 0; bmp_info.size = ReadBlobLSBLong (src); if (bmp_info.size == 12) { /* OS/2 BMP image file. */ bmp_info.width = ReadBlobLSBShort (src); bmp_info.height = ReadBlobLSBShort (src); bmp_info.planes = ReadBlobLSBShort (src); bmp_info.bits_per_pixel = ReadBlobLSBShort (src); bmp_info.x_pixels = 0; bmp_info.y_pixels = 0; bmp_info.number_colors = 0; bmp_info.compression = 0; bmp_info.image_size = 0; } else { /* Microsoft Windows BMP image file. */ bmp_info.width = ReadBlobLSBLong (src); bmp_info.height = ReadBlobLSBLong (src); bmp_info.planes = ReadBlobLSBShort (src); bmp_info.bits_per_pixel = ReadBlobLSBShort (src); bmp_info.compression = ReadBlobLSBLong (src); bmp_info.image_size = ReadBlobLSBLong (src); bmp_info.x_pixels = ReadBlobLSBLong (src); bmp_info.y_pixels = ReadBlobLSBLong (src); bmp_info.number_colors = ReadBlobLSBLong (src); bmp_info.colors_important = ReadBlobLSBLong (src); for (u = 0; u < (bmp_info.size - 40); u++) byte = ReadBlobByte (src); if ( (bmp_info.compression == 3) && ((bmp_info.bits_per_pixel == 16) || (bmp_info.bits_per_pixel == 32)) ) { bmp_info.red_mask = ReadBlobLSBShort (src); bmp_info.green_mask = ReadBlobLSBShort (src); bmp_info.blue_mask = ReadBlobLSBShort (src); if (bmp_info.size > 40) { /* Read color management information. */ bmp_info.alpha_mask = ReadBlobLSBShort (src); bmp_info.colorspace = ReadBlobLSBLong (src); bmp_info.red_primary.x = ReadBlobLSBLong (src); bmp_info.red_primary.y = ReadBlobLSBLong (src); bmp_info.red_primary.z = ReadBlobLSBLong (src); bmp_info.green_primary.x = ReadBlobLSBLong (src); bmp_info.green_primary.y = ReadBlobLSBLong (src); bmp_info.green_primary.z = ReadBlobLSBLong (src); bmp_info.blue_primary.x = ReadBlobLSBLong (src); bmp_info.blue_primary.y = ReadBlobLSBLong (src); bmp_info.blue_primary.z = ReadBlobLSBLong (src); bmp_info.gamma_scale.x = ReadBlobLSBShort (src); bmp_info.gamma_scale.y = ReadBlobLSBShort (src); bmp_info.gamma_scale.z = ReadBlobLSBShort (src); } } } if (bmp_info.height < 0) { bmp_info.height = - bmp_info.height; data->flipped = 1; } else { data->flipped = 0; } /* WMF may change bitmap size without changing bitmap header */ if (bmp->width == 0) bmp->width = (U16) bmp_info.width; if (bmp->height == 0) bmp->height = (U16) bmp_info.height; data->NColors = 0; if ((bmp_info.number_colors != 0) || (bmp_info.bits_per_pixel < 16)) { data->NColors = (unsigned int) bmp_info.number_colors; } if (data->NColors > 0) { /* Read BMP raster colormap. */ data->rgb = (wmfRGB*) wmf_malloc (API,data->NColors * sizeof (wmfRGB)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } if (bmp_info.size == 12) packet_size = 3; else packet_size = 4; for (i = 0; i < data->NColors; i++) { bytes_read = ReadBlob (src,packet_size,packet); if (bytes_read < packet_size) { WMF_ERROR (API,"Unexpected EOF"); API->err = wmf_E_EOF; break; } data->rgb[i].b = packet[0]; data->rgb[i].g = packet[1]; data->rgb[i].r = packet[2]; } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } } while (TellBlob (src) < (long) (start_position + bmp_info.offset_bits)) { byte = ReadBlobByte (src); } /* Read image data. */ if (bmp_info.compression == 2) bmp_info.bits_per_pixel <<= 1; bytes_per_line = 4 * ((bmp->width * bmp_info.bits_per_pixel + 31) / 32); image_size = bytes_per_line * bmp->height; data->image = (unsigned char*) wmf_malloc (API,image_size); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } if ((bmp_info.compression == 0) || (bmp_info.compression == 3)) { bytes_read = ReadBlob (src,image_size,data->image); if (bytes_read < image_size) { WMF_ERROR (API,"Unexpected EOF"); API->err = wmf_E_EOF; } } else { /* Convert run-length encoded raster pixels. */ DecodeImage (API,bmp,src,(unsigned int) bmp_info.compression,data->image); } if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } data->bits_per_pixel = bmp_info.bits_per_pixel; data->bytes_per_line = bytes_per_line; data->masked = bmp_info.red_mask; } static int ExtractColor (wmfAPI* API,wmfBMP* bmp,wmfRGB* rgb,unsigned int x,unsigned int y) { int status = 0; BMPData* data = 0; int bit; unsigned int color; unsigned char opacity = WMF_BMP_OPAQUE; unsigned char* p; unsigned short word; data = (BMPData*) bmp->data; if (data->flipped) y = (bmp->height - 1) - y; switch (data->bits_per_pixel) { case 1: { p = data->image + (y * data->bytes_per_line) + (x >> 3); bit = 0x80 >> (x & 0x07); if ((*p) & bit) color = 1; else color = 0; if (data->rgb && (color < data->NColors)) { (*rgb) = data->rgb[color]; } else { if (color) { rgb->r = 0; rgb->g = 0; rgb->b = 0; } else { rgb->r = 0xff; rgb->g = 0xff; rgb->b = 0xff; } } break; } case 4: { p = data->image + (y * data->bytes_per_line) + (x >> 1); if (x & 1) color = (*p) & 0x0f; else color = ((*p) >> 4) & 0x0f; if (data->rgb && (color < data->NColors)) { (*rgb) = data->rgb[color]; } else { rgb->r = color << 4; rgb->g = color << 4; rgb->b = color << 4; } break; } case 8: { p = data->image + (y * data->bytes_per_line) + x; color = (*p); if (data->rgb && (color < data->NColors)) { (*rgb) = data->rgb[color]; } else { rgb->r = color; rgb->g = color; rgb->b = color; } break; } case 16: { p = data->image + (y * data->bytes_per_line) + (x << 1); word = (unsigned short) p[0] | (((unsigned short) p[1]) << 8); if (data->masked == 0) { rgb->r = ((word >> 10) & 0x1f) << 3; rgb->g = ((word >> 5) & 0x1f) << 3; rgb->b = ( word & 0x1f) << 3; } else { rgb->r = ((word >> 11) & 0x1f) << 3; rgb->g = ((word >> 5) & 0x3f) << 2; rgb->b = ( word & 0x1f) << 3; } break; } case 24: { p = data->image + (y * data->bytes_per_line) + (x + (x << 1)); rgb->b = p[0]; rgb->g = p[1]; rgb->r = p[2]; break; } case 32: { p = data->image + (y * data->bytes_per_line) + (x << 2); rgb->b = p[0]; rgb->g = p[1]; rgb->r = p[2]; opacity = p[3]; break; } default: if ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0) { WMF_ERROR (API,"Bitmap has bad format (illegal color depth)"); API->err = wmf_E_BadFormat; } status = -1; break; } if (status == 0) status = (int) opacity; return (status); } static void SetColor (wmfAPI* API,wmfBMP* bmp,wmfRGB* rgb,unsigned char opacity,unsigned int x,unsigned int y) { BMPData* data = 0; unsigned int i; unsigned int r_diff; unsigned int g_diff; unsigned int b_diff; unsigned int diff; unsigned int min_diff; unsigned int color; unsigned char bit; unsigned char* p; unsigned short word; data = (BMPData*) bmp->data; if (data->flipped) y = (bmp->height - 1) - y; switch (data->bits_per_pixel) { case 1: { p = data->image + (y * data->bytes_per_line) + (x >> 3); bit = 0x80 >> (x & 0x07); if (rgb->r || rgb->g || rgb->b) { (*p) |= ( bit & 0xff); } else { (*p) &= (~bit & 0xff); } break; } case 4: { p = data->image + (y * data->bytes_per_line) + (x >> 1); if (data->rgb == 0) break; min_diff = 766; color = 0; for (i = 0; i < data->NColors; i++) { r_diff = (unsigned int) ABS ((int) rgb->r - (int) data->rgb[i].r); g_diff = (unsigned int) ABS ((int) rgb->g - (int) data->rgb[i].g); b_diff = (unsigned int) ABS ((int) rgb->b - (int) data->rgb[i].b); diff = r_diff + g_diff + b_diff; if (min_diff > diff) { min_diff = diff; color = i; } } if (x & 1) { (*p) = ( ((unsigned char) color) | ((*p) & 0x0f)); } else { (*p) = ((((unsigned char) color) << 4) | ((*p) & 0xf0)); } break; } case 8: { p = data->image + (y * data->bytes_per_line) + x; if (data->rgb == 0) break; min_diff = 766; color = 0; for (i = 0; i < data->NColors; i++) { r_diff = (unsigned int) ABS ((int) rgb->r - (int) data->rgb[i].r); g_diff = (unsigned int) ABS ((int) rgb->g - (int) data->rgb[i].g); b_diff = (unsigned int) ABS ((int) rgb->b - (int) data->rgb[i].b); diff = r_diff + g_diff + b_diff; if (min_diff > diff) { min_diff = diff; color = i; } } (*p) = (unsigned char) color; break; } case 16: { p = data->image + (y * data->bytes_per_line) + (x << 1); word = 0; if (data->masked == 0) { word |= (rgb->r >> 3) << 10; word |= (rgb->g >> 3) << 5; word |= rgb->b >> 3; } else { word |= (rgb->r >> 3) << 11; word |= (rgb->g >> 2) << 5; word |= rgb->b >> 3; } p[0] = (unsigned char) ( word & 0x00ff ); p[1] = (unsigned char) ((word & 0xff00) >> 8); break; } case 24: { p = data->image + (y * data->bytes_per_line) + (x + (x << 1)); p[0] = rgb->b; p[1] = rgb->g; p[2] = rgb->r; break; } case 32: { p = data->image + (y * data->bytes_per_line) + (x << 2); p[0] = rgb->b; p[1] = rgb->g; p[2] = rgb->r; p[3] = opacity; break; } default: if ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0) { WMF_ERROR (API,"Bitmap has bad format (illegal color depth)"); API->err = wmf_E_BadFormat; } break; } } libwmf-0.2.8.4/src/ipa/plot/0000755000077100007710000000000010012152747015020 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/plot/bmp.h0000644000077100007710000000307607362765701015773 0ustar fjffjf00000000000000/* libwmf ("ipa/plot/bmp.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_plot_rop_draw (wmfAPI* API,wmfROP_Draw_t* ropdraw) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]rop_draw"); } static void wmf_plot_bmp_draw (wmfAPI* API,wmfBMP_Draw_t* bmp_draw) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]bmp_draw"); } static void wmf_plot_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read) { WMF_DEBUG (API,"wmf_[plot_]bmp_read"); wmf_ipa_bmp_read (API,bmp_read); } static void wmf_plot_bmp_free (wmfAPI* API,wmfBMP* bmp) { WMF_DEBUG (API,"wmf_[plot_]bmp_free"); wmf_ipa_bmp_free (API,bmp); } libwmf-0.2.8.4/src/ipa/plot/device.h0000644000077100007710000000577507362765701016464 0ustar fjffjf00000000000000/* libwmf ("ipa/plot/device.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is called by wmf_play() the *first* time the meta file is played */ static void wmf_plot_device_open (wmfAPI* API) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); /* plot_t* plot = (plot_t*) ddata->plot_data; */ WMF_DEBUG (API,"wmf_[plot_]device_open"); } /* This is called by wmf_api_destroy() */ static void wmf_plot_device_close (wmfAPI* API) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]device_close"); /* */ if (plot) { if (plot->params) pl_deleteplparams (plot->params); } } /* This is called from the beginning of each play for initial page setup */ static void wmf_plot_device_begin (wmfAPI* API) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]device_begin"); } /* This is called from the end of each play for page termination */ static void wmf_plot_device_end (wmfAPI* API) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]device_end"); } static plotPoint plot_translate (wmfAPI* API,wmfD_Coord d_pt) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plotPoint g_pt; double x; double y; x = ((double) d_pt.x - (double) ddata->bbox.TL.x); x /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); x *= (double) ddata->width; y = ((double) d_pt.y - (double) ddata->bbox.TL.y); y /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); y *= (double) ddata->height; g_pt.x = (int) floor (x); g_pt.y = (int) floor (y); return (g_pt); } static float plot_width (wmfAPI* API,float wmf_width) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); double width; width = (double) wmf_width * (double) ddata->width; width /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); return ((float) width); } static float plot_height (wmfAPI* API,float wmf_height) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); double height; height = (double) wmf_height * (double) ddata->height; height /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); return ((float) height); } libwmf-0.2.8.4/src/ipa/plot/draw.h0000644000077100007710000000625207362765701016151 0ustar fjffjf00000000000000/* libwmf ("ipa/plot/draw.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_plot_flood_interior (wmfAPI* API,wmfFlood_t* flood) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]flood_interior"); } static void wmf_plot_flood_exterior (wmfAPI* API,wmfFlood_t* flood) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]flood_exterior"); } static void wmf_plot_draw_pixel (wmfAPI* API,wmfDrawPixel_t* draw_pixel) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_pixel"); } static void wmf_plot_draw_pie (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_pie"); } static void wmf_plot_draw_chord (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_chord"); } static void wmf_plot_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_arc"); } static void wmf_plot_draw_ellipse (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_ellipse"); } static void wmf_plot_draw_line (wmfAPI* API,wmfDrawLine_t* draw_line) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_line"); } static void wmf_plot_poly_line (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]poly_line"); } static void wmf_plot_draw_polygon (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_polygon"); } static void wmf_plot_draw_rectangle (wmfAPI* API,wmfDrawRectangle_t* draw_rectangle) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_rectangle"); } libwmf-0.2.8.4/src/ipa/plot/region.h0000644000077100007710000000304307362765701016472 0ustar fjffjf00000000000000/* libwmf ("ipa/plot/region.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_plot_region_frame (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]region_frame"); } static void wmf_plot_region_paint (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]region_paint"); } static void wmf_plot_region_clip (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]region_clip"); } libwmf-0.2.8.4/src/ipa/svg/0000755000077100007710000000000010012152747014641 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/svg/bmp.h0000644000077100007710000000627707362765701015622 0ustar fjffjf00000000000000/* libwmf ("ipa/svg/bmp.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_svg_rop_draw (wmfAPI* API,wmfROP_Draw_t* rop_draw) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]rop_draw"); } /* TODO ?? Care about bmp_draw->type */ static void wmf_svg_bmp_draw (wmfAPI* API,wmfBMP_Draw_t* bmp_draw) { wmf_svg_t* ddata = WMF_SVG_GetData (API); float width; float height; char* name = 0; svgPoint pt; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]bmp_draw"); if (out == 0) return; if (bmp_draw->bmp.data == 0) return; if ((ddata->flags & WMF_SVG_INLINE_IMAGES) == 0) { if (ddata->image.name == 0) return; name = ddata->image.name (ddata->image.context); if (name == 0) return; wmf_ipa_bmp_png (API,bmp_draw,name); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } /* Okay, if we've got this far then "name" is the filename of an png (cropped) image */ } pt = svg_translate (API,bmp_draw->pt); width = (float) (bmp_draw->pixel_width * (double) bmp_draw->crop.w); height = (float) (bmp_draw->pixel_height * (double) bmp_draw->crop.h); width = svg_width (API,width); height = svg_height (API,height); width = ABS (width); height = ABS (height); wmf_stream_printf (API,out,"crop.w; height /= (float) bmp_draw->crop.h; wmf_stream_printf (API,out,"\ttransform=\"matrix("); wmf_stream_printf (API,out,"%f 0 0 %f %f %f)\"\n",width,height,pt.x,pt.y); if ((ddata->flags & WMF_SVG_INLINE_IMAGES) == 0) { wmf_stream_printf (API,out,"\tsodipodi:absref=\"%s\"\n",name); wmf_stream_printf (API,out,"\txlink:href=\"%s\"/>\n",name); } else { wmf_stream_printf (API,out,"\txlink:href=\"data:image/png;base64,"); wmf_ipa_bmp_b64 (API,bmp_draw,out); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } wmf_stream_printf (API,out,"\"/>\n"); } } static void wmf_svg_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read) { WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]bmp_read"); wmf_ipa_bmp_read (API,bmp_read); } static void wmf_svg_bmp_free (wmfAPI* API,wmfBMP* bmp) { WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]bmp_free"); wmf_ipa_bmp_free (API,bmp); } libwmf-0.2.8.4/src/ipa/svg/device.h0000644000077100007710000001005307362765701016266 0ustar fjffjf00000000000000/* libwmf ("ipa/svg/device.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is called by wmf_play() the *first* time the meta file is played */ static void wmf_svg_device_open (wmfAPI* API) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]device_open"); } /* This is called by wmf_api_destroy() */ static void wmf_svg_device_close (wmfAPI* API) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]device_close"); } /* This is called from the beginning of each play for initial page setup */ static void wmf_svg_device_begin (wmfAPI* API) { wmf_svg_t* ddata = WMF_SVG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]device_begin"); if (out == 0) return; if ((out->reset (out->context)) && ((API->flags & WMF_OPT_IGNORE_NONFATAL) == 0)) { WMF_ERROR (API,"unable to reset output stream!"); API->err = wmf_E_DeviceError; return; } if ((ddata->bbox.BR.x <= ddata->bbox.TL.x) || (ddata->bbox.BR.y <= ddata->bbox.TL.y)) { WMF_ERROR (API,"~~~~~~~~wmf_[svg_]device_begin: bounding box has null or negative size!"); API->err = wmf_E_Glitch; return; } if ((ddata->width == 0) || (ddata->height == 0)) { ddata->width = (unsigned int) ceil (ddata->bbox.BR.x - ddata->bbox.TL.x); ddata->height = (unsigned int) ceil (ddata->bbox.BR.y - ddata->bbox.TL.y); } wmf_stream_printf (API,out,"\n"); wmf_stream_printf (API,out,"\n"); wmf_stream_printf (API,out,"width,ddata->height); wmf_stream_printf (API,out,"\txmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\">\n"); if (ddata->Description) { wmf_stream_printf (API,out,"%s\n",ddata->Description); } } /* This is called from the end of each play for page termination */ static void wmf_svg_device_end (wmfAPI* API) { wmf_svg_t* ddata = WMF_SVG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]device_end"); if (out == 0) return; wmf_stream_printf (API,out,"\n"); } static svgPoint svg_translate (wmfAPI* API,wmfD_Coord d_pt) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgPoint g_pt; double x; double y; x = ((double) d_pt.x - (double) ddata->bbox.TL.x); x /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); x *= (double) ddata->width; y = ((double) d_pt.y - (double) ddata->bbox.TL.y); y /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); y *= (double) ddata->height; g_pt.x = (float) x; g_pt.y = (float) y; return (g_pt); } static float svg_width (wmfAPI* API,float wmf_width) { wmf_svg_t* ddata = WMF_SVG_GetData (API); double width; width = (double) wmf_width * (double) ddata->width; width /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); return ((float) width); } static float svg_height (wmfAPI* API,float wmf_height) { wmf_svg_t* ddata = WMF_SVG_GetData (API); double height; height = (double) wmf_height * (double) ddata->height; height /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); return ((float) height); } libwmf-0.2.8.4/src/ipa/svg/draw.h0000644000077100007710000002511407470252457015767 0ustar fjffjf00000000000000/* libwmf ("ipa/svg/draw.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_svg_flood_interior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]flood_interior"); if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"flood_interior unsupported."); } else { WMF_ERROR (API,"flood_interior unsupported."); API->err = wmf_E_Glitch; } } static void wmf_svg_flood_exterior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]flood_exterior"); if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"flood_exterior unsupported."); } else { WMF_ERROR (API,"flood_exterior unsupported."); API->err = wmf_E_Glitch; } } static void wmf_svg_draw_pixel (wmfAPI* API,wmfDrawPixel_t* draw_pixel) { wmf_svg_t* ddata = WMF_SVG_GetData (API); wmfRGB* rgb = &(draw_pixel->color); svgPoint pt; float width; float height; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_pixel"); if (out == 0) return; pt = svg_translate (API,draw_pixel->pt); width = svg_width (API,(float) draw_pixel->pixel_width ); height = svg_height (API,(float) draw_pixel->pixel_height); wmf_stream_printf (API,out,"\n"); } static void wmf_svg_draw_pie (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_pie"); svg_draw_arc (API,draw_arc,svg_arc_pie); } static void wmf_svg_draw_chord (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_chord"); svg_draw_arc (API,draw_arc,svg_arc_chord); } static void wmf_svg_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_arc"); svg_draw_arc (API,draw_arc,svg_arc_open); } static void wmf_svg_draw_ellipse (wmfAPI* API,wmfDrawArc_t* draw_arc) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgPoint TL; svgPoint BR; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_ellipse"); if (out == 0) return; if (TO_FILL (draw_arc) || TO_DRAW (draw_arc)) { TL = svg_translate (API,draw_arc->TL); BR = svg_translate (API,draw_arc->BR); wmf_stream_printf (API,out,"dc); wmf_stream_printf (API,out,"; "); svg_style_stroke (API,draw_arc->dc); wmf_stream_printf (API,out,"\" "); wmf_stream_printf (API,out,"/>\n"); } } static void svg_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc,svg_arc_t finish) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgPoint TL; svgPoint BR; svgPoint start; svgPoint end; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~svg_draw_arc"); if (out == 0) return; if ((draw_arc->start.x == draw_arc->end.x) || (draw_arc->start.y == draw_arc->end.y)) { wmf_svg_draw_ellipse (API,draw_arc); return; } if (TO_FILL (draw_arc) || TO_DRAW (draw_arc)) { TL = svg_translate (API,draw_arc->TL); BR = svg_translate (API,draw_arc->BR); start = svg_translate (API,draw_arc->start); end = svg_translate (API,draw_arc->end ); wmf_stream_printf (API,out,"dc); wmf_stream_printf (API,out,"; "); } svg_style_stroke (API,draw_arc->dc); wmf_stream_printf (API,out,"\" "); wmf_stream_printf (API,out,"/>\n"); } } static void wmf_svg_draw_line (wmfAPI* API,wmfDrawLine_t* draw_line) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgPoint from; svgPoint to; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_line"); if (out == 0) return; if (TO_DRAW (draw_line)) { from = svg_translate (API,draw_line->from); to = svg_translate (API,draw_line->to ); wmf_stream_printf (API,out,"dc); wmf_stream_printf (API,out,"\" "); wmf_stream_printf (API,out,"/>\n"); } } static void wmf_svg_poly_line (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgPoint pt; U16 i; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]poly_line"); if (out == 0) return; if (poly_line->count <= 1) return; if (TO_DRAW (poly_line)) { wmf_stream_printf (API,out,"count; i++) { if ((i & 3) == 1) wmf_stream_printf (API,out,"\n\t"); pt = svg_translate (API,poly_line->pt[i]); wmf_stream_printf (API,out,"%f,%f ",pt.x,pt.y); } wmf_stream_printf (API,out,"\"\n\t"); wmf_stream_printf (API,out,"style=\""); svg_style_stroke (API,poly_line->dc); wmf_stream_printf (API,out,"\" "); wmf_stream_printf (API,out,"/>\n"); } } static void wmf_svg_draw_polygon (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgPoint pt; U16 i; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_polygon"); if (out == 0) return; if (poly_line->count <= 2) return; if (TO_FILL (poly_line) || TO_DRAW (poly_line)) { wmf_stream_printf (API,out,"count; i++) { if ((i & 3) == 1) wmf_stream_printf (API,out,"\n\t"); pt = svg_translate (API,poly_line->pt[i]); wmf_stream_printf (API,out,"%f,%f ",pt.x,pt.y); } wmf_stream_printf (API,out,"\"\n\t"); wmf_stream_printf (API,out,"style=\""); svg_style_fill (API,poly_line->dc); wmf_stream_printf (API,out,"; "); svg_style_stroke (API,poly_line->dc); wmf_stream_printf (API,out,"\" "); wmf_stream_printf (API,out,"/>\n"); } } static void wmf_svg_draw_polypolygon(wmfAPI * API, wmfPolyPoly_t* polypolygon) { wmf_svg_t* ddata = WMF_SVG_GetData (API); wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_polypolygon"); if (out == 0) return; if (TO_FILL(polypolygon) || TO_DRAW(polypolygon)) { int polygon, point; wmfPolyLine_t poly_line; svgPoint pt; wmf_stream_printf (API,out,"npoly; polygon++) { poly_line.dc = polypolygon->dc; poly_line.pt = polypolygon->pt[polygon]; poly_line.count = polypolygon->count[polygon]; if ((poly_line.count > 2) && poly_line.pt) { pt = svg_translate (API,poly_line.pt[0]); wmf_stream_printf (API,out,"M%f,%fL",pt.x,pt.y); for (point = 1; point < poly_line.count; point++) { if ((point & 3) == 1) wmf_stream_printf (API,out,"\n\t"); pt = svg_translate (API,poly_line.pt[point]); wmf_stream_printf (API,out,"%f,%f ",pt.x,pt.y); } wmf_stream_printf (API,out,"Z"); } } wmf_stream_printf (API,out,"\"\n\t"); wmf_stream_printf (API,out,"style=\""); svg_style_fill (API,polypolygon->dc); wmf_stream_printf (API,out,"; "); svg_style_stroke (API,polypolygon->dc); wmf_stream_printf (API,out,"\" "); wmf_stream_printf (API,out,"/>\n"); } } static void wmf_svg_draw_rectangle (wmfAPI* API,wmfDrawRectangle_t* draw_rect) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgPoint TL; svgPoint BR; float width; float height; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_rectangle"); if (out == 0) return; if (TO_FILL (draw_rect) || TO_DRAW (draw_rect)) { TL = svg_translate (API,draw_rect->TL); BR = svg_translate (API,draw_rect->BR); wmf_stream_printf (API,out,"width > 0) || (draw_rect->height > 0)) { width = svg_width (API,draw_rect->width ) / 2; height = svg_height (API,draw_rect->height) / 2; wmf_stream_printf (API,out,"rx=\"%f\" ",width); wmf_stream_printf (API,out,"ry=\"%f\" ",height); } wmf_stream_printf (API,out,"\n\t"); wmf_stream_printf (API,out,"style=\""); svg_style_fill (API,draw_rect->dc); wmf_stream_printf (API,out,"; "); svg_style_stroke (API,draw_rect->dc); wmf_stream_printf (API,out,"\" "); wmf_stream_printf (API,out,"/>\n"); } } libwmf-0.2.8.4/src/ipa/svg/region.h0000644000077100007710000000266307362765701016322 0ustar fjffjf00000000000000/* libwmf ("ipa/svg/region.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_svg_region_frame (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]region_frame"); } static void wmf_svg_region_paint (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]region_paint"); } static void wmf_svg_region_clip (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]region_clip"); } libwmf-0.2.8.4/src/ipa/x/0000755000077100007710000000000010012152747014311 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/x/bmp.h0000644000077100007710000001014107362765701015253 0ustar fjffjf00000000000000/* libwmf ("ipa/x/bmp.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_x_rop_draw (wmfAPI* API,wmfROP_Draw_t* rop_draw) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint TL; XPoint BR; WMF_DEBUG (API,"wmf_[x_]rop_draw"); if (!TO_FILL (rop_draw)) return; setbrushstyle (API,rop_draw->dc); switch (rop_draw->ROP) /* Ternary raster operations */ { case SRCCOPY: /* dest = source */ break; case SRCPAINT: /* dest = source OR dest */ break; case SRCAND: /* dest = source AND dest */ break; case SRCINVERT: /* dest = source XOR dest */ break; case SRCERASE: /* dest = source AND (NOT dest) */ break; case NOTSRCCOPY: /* dest = (NOT source) */ break; case NOTSRCERASE: /* dest = (NOT src) AND (NOT dest) */ break; case MERGECOPY: /* dest = (source AND pattern) */ break; case MERGEPAINT: /* dest = (NOT source) OR dest */ break; case PATCOPY: /* dest = pattern */ break; case PATPAINT: /* dest = DPSnoo */ break; case PATINVERT: /* dest = pattern XOR dest */ break; case DSTINVERT: /* dest = (NOT dest) */ break; case BLACKNESS: /* dest = BLACK */ XSetForeground (ddata->display,ddata->gc,ddata->black); break; case WHITENESS: /* dest = WHITE */ XSetForeground (ddata->display,ddata->gc,ddata->white); break; default: break; } TL = x_translate (API,rop_draw->TL); BR = x_translate (API,rop_draw->BR); BR.x -= TL.x; BR.y -= TL.y; if (ddata->window != None) { XFillRectangle (ddata->display,ddata->window,ddata->gc,TL.x,TL.y,BR.x,BR.y); } if (ddata->pixmap != None) { XFillRectangle (ddata->display,ddata->pixmap,ddata->gc,TL.x,TL.y,BR.x,BR.y); } } static void wmf_x_bmp_draw (wmfAPI* API,wmfBMP_Draw_t* bmp_draw) { wmf_x_t* ddata = WMF_X_GetData (API); wmfRGB rgb; int opacity; float bmp_width; float bmp_height; float x; float y; unsigned int i; unsigned int j; unsigned int width; unsigned int height; XPoint pt; WMF_DEBUG (API,"wmf_[x_]bmp_draw"); setdefaultstyle (API); pt = x_translate (API,bmp_draw->pt); bmp_width = x_width (API,(float) ((double) bmp_draw->crop.w * bmp_draw->pixel_width )); bmp_height = x_height (API,(float) ((double) bmp_draw->crop.h * bmp_draw->pixel_height)); width = (unsigned int) ceil (1.0 + bmp_width ); /* The 1.0 is a bit of a fudge factor... */ height = (unsigned int) ceil (1.0 + bmp_height); /* Works with test11.wmf, anyway. [??] */ for (j = 0; j < height; j++) { y = (float) ((double) j * (double) (bmp_draw->crop.h - 1) / (double) (height - 1)); y += (float) bmp_draw->crop.y; for (i = 0; i < width; i++) { x = (float) ((double) i * (double) (bmp_draw->crop.w - 1) / (double) (width - 1)); x += (float) bmp_draw->crop.x; opacity = wmf_ipa_bmp_interpolate (API,&(bmp_draw->bmp),&rgb,x,y); if (opacity < 0) break; XSetForeground (ddata->display,ddata->gc,get_color (API,&rgb)); if (ddata->window != None) { XDrawPoint (ddata->display,ddata->window,ddata->gc,i+pt.x,(height-1-j)+pt.y); } if (ddata->pixmap != None) { XDrawPoint (ddata->display,ddata->pixmap,ddata->gc,i+pt.x,(height-1-j)+pt.y); } } } } static void wmf_x_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read) { WMF_DEBUG (API,"wmf_[x_]bmp_read"); wmf_ipa_bmp_read (API,bmp_read); } static void wmf_x_bmp_free (wmfAPI* API,wmfBMP* bmp) { WMF_DEBUG (API,"wmf_[x_]bmp_free"); wmf_ipa_bmp_free (API,bmp); } libwmf-0.2.8.4/src/ipa/x/color.h0000644000077100007710000001203207260330344015600 0ustar fjffjf00000000000000/* libwmf ("ipa/x/color.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void setup_color (wmfAPI* API) { wmf_x_t* ddata = WMF_X_GetData (API); XColor rgb; int r; int g; int b; unsigned long c; ddata->flags &= ~WMF_X_CMAP_DESTROY; /* Okay, trouble with X is all those visual classes, of which (thankfully) * PseudoColor and TrueColor are the most common; * Color allocation is always going to be tricky; here I set up a 6-bit * pseudo-TrueColor mapping for PseudoColor... */ if (ddata->class == PseudoColor) { ddata->colormap = DefaultColormap (ddata->display,DefaultScreen (ddata->display)); if (ddata->visual->map_entries >= 64) { ddata->color = wmf_malloc (API,64 * sizeof (unsigned long)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } if (XAllocColorCells (ddata->display,ddata->colormap,False,0,0,ddata->color,64) == 0) { ddata->colormap = XCopyColormapAndFree (ddata->display,ddata->colormap); ddata->flags |= WMF_X_CMAP_DESTROY; if (XAllocColorCells (ddata->display,ddata->colormap,False,0,0,ddata->color,64) == 0) { WMF_ERROR (API,"setup_color: something bizarre going on here."); wmf_free (API,ddata->color); ddata->color = 0; XFreeColormap (ddata->display,ddata->colormap); ddata->colormap = DefaultColormap (ddata->display,DefaultScreen (ddata->display)); ddata->flags &= ~WMF_X_CMAP_DESTROY; } } } if (ddata->color) { rgb.flags = DoRed | DoGreen | DoBlue; c = 0; for (b = 65535; b >= 0; b -= 21845) for (g = 65535; g >= 0; g -= 21845) for (r = 65535; r >= 0; r -= 21845) { rgb.pixel = ddata->color[c]; rgb.red = r; rgb.green = g; rgb.blue = b; XStoreColor (ddata->display,ddata->colormap,&rgb); c++; } ddata->black = ddata->color[0]; ddata->white = ddata->color[63]; ddata->mask.red = 48; ddata->mask.green = 12; ddata->mask.blue = 3; } else { WMF_DEBUG (API,"setup_color: too few colors; going B&W..."); ddata->black = BlackPixel (ddata->display,DefaultScreen (ddata->display)); ddata->white = WhitePixel (ddata->display,DefaultScreen (ddata->display)); ddata->mask.red = 0; ddata->mask.green = 0; ddata->mask.blue = 0; } } else if (ddata->class == TrueColor) { ddata->black = 0; ddata->white = ddata->visual->red_mask | ddata->visual->green_mask | ddata->visual->blue_mask; ddata->mask.red = ddata->visual->red_mask; ddata->mask.green = ddata->visual->green_mask; ddata->mask.blue = ddata->visual->blue_mask; } else { WMF_ERROR (API,"setup_color: this class of visual is not supported!"); WMF_ERROR (API," please contact us at http://www.wvware.com/"); API->err = wmf_E_Glitch; return; } } static unsigned long get_color (wmfAPI* API,wmfRGB* rgb) { wmf_x_t* ddata = WMF_X_GetData (API); unsigned long pixel; unsigned long mask; unsigned long red; unsigned long green; unsigned long blue; int shift; int bits; if ((ddata->mask.red == 0) || (ddata->mask.green == 0) || (ddata->mask.blue == 0)) { if ((rgb->r > 0x7f) || (rgb->g > 0x7f) || (rgb->b > 0x7f)) { pixel = ddata->white; } else { pixel = ddata->black; } return (pixel); } /* lots of assumptions built into this next bit, so if your colors go * haywire then gosh. */ mask = ddata->mask.red; shift = 0; while ((mask & 1) == 0) { mask >>= 1; shift++; } bits = 0; while ((mask & 1) == 1) { mask >>= 1; bits++; } red = (long) rgb->r; while (bits > 8) { red <<= 1; bits--; } while (bits < 8) { red >>= 1; bits++; } red <<= shift; mask = ddata->mask.green; shift = 0; while ((mask & 1) == 0) { mask >>= 1; shift++; } bits = 0; while ((mask & 1) == 1) { mask >>= 1; bits++; } green = (long) rgb->g; while (bits > 8) { green <<= 1; bits--; } while (bits < 8) { green >>= 1; bits++; } green <<= shift; mask = ddata->mask.blue; shift = 0; while ((mask & 1) == 0) { mask >>= 1; shift++; } bits = 0; while ((mask & 1) == 1) { mask >>= 1; bits++; } blue = (long) rgb->b; while (bits > 8) { blue <<= 1; bits--; } while (bits < 8) { blue >>= 1; bits++; } blue <<= shift; pixel = red | green | blue; if (ddata->color) pixel = ddata->color[pixel]; /* map color */ return (pixel); } libwmf-0.2.8.4/src/ipa/x/device.h0000644000077100007710000001743507362765702015752 0ustar fjffjf00000000000000/* libwmf ("ipa/x/device.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is called by wmf_play() the *first* time the meta file is played */ static void wmf_x_device_open (wmfAPI* API) { wmf_x_t* ddata = WMF_X_GetData (API); XWindowAttributes root_attributes; XTextProperty wText; XSizeHints sizehints; XSetWindowAttributes attributes; unsigned int border; unsigned long valuemask; static char* default_name = "libwmf (x)"; WMF_DEBUG (API,"wmf_[x_]device_open"); if ((!(ddata->x_width > 0)) || (!(ddata->x_height > 0))) { WMF_ERROR (API,"window/pixmap has unset or bad size."); API->err = wmf_E_Glitch; return; } if (ddata->flags & WMF_X_DISPLAY_OPEN) { ddata->flags &= ~WMF_X_DISPLAY_CLOSE; ddata->flags &= ~WMF_X_WINDOW_OPEN; ddata->flags &= ~WMF_X_WINDOW_CLOSE; ddata->flags &= ~WMF_X_PIXMAP_OPEN; ddata->flags &= ~WMF_X_PIXMAP_CLOSE; ddata->flags &= ~WMF_X_CMAP_DESTROY; ddata->display = XOpenDisplay (ddata->display_name); if (ddata->display == 0) { WMF_ERROR (API,"unable to open display!"); API->err = wmf_E_DeviceError; return; } ddata->flags |= WMF_X_DISPLAY_CLOSE; ddata->flags |= WMF_X_WINDOW_OPEN; ddata->flags |= WMF_X_PIXMAP_OPEN; } else /* display already open */ { if (ddata->display == 0) { WMF_ERROR (API,"display not open!"); API->err = wmf_E_DeviceError; return; } } ddata->root = RootWindow (ddata->display,DefaultScreen (ddata->display)); XGetWindowAttributes (ddata->display,ddata->root,&root_attributes); ddata->visual = root_attributes.visual; ddata->depth = root_attributes.depth; #if defined(__cplusplus) || defined(c_plusplus) ddata->class = ddata->visual->c_class; /* C++ class of screen (monochrome, etc.) */ #else ddata->class = ddata->visual->class; /* class of screen (monochrome, etc.) */ #endif setup_color (API); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } ddata->gc = XCreateGC (ddata->display,ddata->root,0,0); if (ddata->gc == 0) { WMF_ERROR (API,"unable to create gc!"); API->err = wmf_E_DeviceError; return; } XSetForeground (ddata->display,ddata->gc,ddata->white); if (ddata->flags & WMF_X_WINDOW_OPEN) { ddata->flags &= ~WMF_X_WINDOW_CLOSE; border = 0; /* Default border size. */ valuemask = 0; valuemask |= CWBackPixel; attributes.background_pixel = ddata->white; valuemask |= CWColormap; attributes.colormap = ddata->colormap; ddata->window = XCreateWindow (ddata->display,ddata->root,0,0, ddata->x_width,ddata->x_height,border,ddata->depth, InputOutput,ddata->visual,valuemask,&attributes); if (ddata->window == None) { WMF_ERROR (API,"unable to create window!"); API->err = wmf_E_DeviceError; return; } ddata->flags |= WMF_X_WINDOW_CLOSE; XFillRectangle (ddata->display,ddata->window,ddata->gc, 0,0,ddata->x_width,ddata->x_height); /* Window manager stuff */ if (ddata->window_name == 0) ddata->window_name = default_name; if (ddata->icon_name == 0) ddata->icon_name = default_name; XStringListToTextProperty (&(ddata->window_name),1,&wText); XSetWMName (ddata->display,ddata->window,&wText); XStringListToTextProperty (&(ddata->icon_name) ,1,&wText); XSetWMIconName (ddata->display,ddata->window,&wText); sizehints.flags = PSize; sizehints.width = (int) ddata->x_width; sizehints.height = (int) ddata->x_height; XSetWMNormalHints (ddata->display,ddata->window,&sizehints); XMapWindow (ddata->display,ddata->window); } if (ddata->flags & WMF_X_PIXMAP_OPEN) { ddata->flags &= ~WMF_X_PIXMAP_CLOSE; ddata->pixmap = XCreatePixmap (ddata->display,ddata->root, ddata->x_width,ddata->x_height,ddata->depth); if (ddata->pixmap == None) { WMF_ERROR (API,"unable to create pixmap!"); API->err = wmf_E_DeviceError; return; } ddata->flags |= WMF_X_PIXMAP_CLOSE; XFillRectangle (ddata->display,ddata->pixmap,ddata->gc, 0,0,ddata->x_width,ddata->x_height); if (ddata->window != None) { XSetWindowBackgroundPixmap (ddata->display,ddata->window,ddata->pixmap); XClearWindow (ddata->display,ddata->window); } } XFlush (ddata->display); } /* This is called by wmf_api_destroy() */ static void wmf_x_device_close (wmfAPI* API) { wmf_x_t* ddata = WMF_X_GetData (API); WMF_DEBUG (API,"wmf_[x_]device_close"); if (ddata->hatch != None) XFreePixmap (ddata->display,ddata->hatch); if (ddata->brush != None) XFreePixmap (ddata->display,ddata->brush); if (ddata->gc) XFreeGC (ddata->display,ddata->gc); if (ddata->flags & WMF_X_CMAP_DESTROY) XFreeColormap (ddata->display,ddata->colormap); if (ddata->flags & WMF_X_WINDOW_CLOSE) XDestroyWindow (ddata->display,ddata->window); if (ddata->flags & WMF_X_PIXMAP_CLOSE) XFreePixmap (ddata->display,ddata->pixmap); if (ddata->flags & WMF_X_DISPLAY_CLOSE) XCloseDisplay (ddata->display); } /* This is called from the beginning of each play for initial page setup */ static void wmf_x_device_begin (wmfAPI* API) { wmf_x_t* ddata = WMF_X_GetData (API); WMF_DEBUG (API,"wmf_[x_]device_begin"); setdefaultstyle (API); XSetClipMask (ddata->display,ddata->gc,None); XSetForeground (ddata->display,ddata->gc,ddata->white); if (ddata->window != None) XFillRectangle (ddata->display,ddata->window,ddata->gc, 0,0,ddata->x_width,ddata->x_height); if (ddata->pixmap != None) XFillRectangle (ddata->display,ddata->pixmap,ddata->gc, 0,0,ddata->x_width,ddata->x_height); XFlush (ddata->display); } /* This is called from the end of each play for page termination */ static void wmf_x_device_end (wmfAPI* API) { wmf_x_t* ddata = WMF_X_GetData (API); WMF_DEBUG (API,"wmf_[x_]device_end"); XFlush (ddata->display); } /* translation & scaling functions */ static XPoint x_translate (wmfAPI* API,wmfD_Coord d_pt) { return (x_translate_ft64 (API,d_pt,0)); } static XPoint x_translate_ft64 (wmfAPI* API,wmfD_Coord d_pt,FT_Vector* pen) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint x_pt; double x; double y; x = ((double) d_pt.x - (double) ddata->bbox.TL.x); x /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); x *= (double) ddata->x_width; y = ((double) d_pt.y - (double) ddata->bbox.TL.y); y /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); y *= (double) ddata->x_height; x_pt.x = (short) floor (x); x_pt.y = (short) floor (y); if (pen) { pen->x = floor ((x - floor (x)) * 64); pen->y = floor ((y - floor (y)) * 64); } return (x_pt); } static float x_width (wmfAPI* API,float wmf_width) { wmf_x_t* ddata = WMF_X_GetData (API); double width; width = (double) wmf_width * (double) ddata->x_width; width /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); return ((float) width); } static float x_height (wmfAPI* API,float wmf_height) { wmf_x_t* ddata = WMF_X_GetData (API); double height; height = (double) wmf_height * (double) ddata->x_height; height /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); return ((float) height); } libwmf-0.2.8.4/src/ipa/x/draw.h0000644000077100007710000002117407362765702015443 0ustar fjffjf00000000000000/* libwmf ("ipa/x/draw.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_x_flood_interior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]flood_interior"); /* TODO */ } static void wmf_x_flood_exterior (wmfAPI* API,wmfFlood_t* flood) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]flood_exterior"); /* TODO */ } static void wmf_x_draw_pixel (wmfAPI* API,wmfDrawPixel_t* draw_pixel) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint pt; WMF_DEBUG (API,"wmf_[x_]draw_pixel"); pt = x_translate (API,draw_pixel->pt); setdefaultstyle (API); XSetForeground (ddata->display,ddata->gc,get_color (API,&(draw_pixel->color))); if (ddata->window != None) { XDrawPoint (ddata->display,ddata->window,ddata->gc,pt.x,pt.y); } if (ddata->pixmap != None) { XDrawPoint (ddata->display,ddata->pixmap,ddata->gc,pt.x,pt.y); } } static void wmf_x_draw_pie (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]draw_pie"); x_draw_arc (API,draw_arc,x_arc_pie); } static void wmf_x_draw_chord (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]draw_chord"); x_draw_arc (API,draw_arc,x_arc_chord); } static void wmf_x_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]draw_arc"); x_draw_arc (API,draw_arc,x_arc_open); } static void wmf_x_draw_ellipse (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]draw_ellipse"); x_draw_arc (API,draw_arc,x_arc_ellipse); } static void x_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc,x_arc_t finish) /* TODO !! */ { wmf_x_t* ddata = WMF_X_GetData (API); XPoint TL; XPoint BR; XPoint s_pt; XPoint e_pt; int Ox; int Oy; int w; int h; int start = 0; int end = 64 * 360; WMF_DEBUG (API,"~~~~~~~~x_draw_arc"); TL = x_translate (API,draw_arc->TL); BR = x_translate (API,draw_arc->BR); Ox = (BR.x + TL.x) / 2; /* origin of ellipse */ Oy = (BR.y + TL.y) / 2; w = (BR.x - TL.x); /* axes of ellipse */ h = (BR.y - TL.y); if (finish != x_arc_ellipse) { start = (int) (atan2 (draw_arc->end.y ,draw_arc->end.x ) * 64 * 180 / PI); end = (int) (atan2 (draw_arc->start.y,draw_arc->start.x) * 64 * 180 / PI); start = (64 * 360) - start; end = (64 * 360) - end; while (start < 0) { start += 64 * 360; end += 64 * 360; } while (end <= start) end += 64 * 360; end -= start; if (finish != x_arc_open) { s_pt = x_translate (API,draw_arc->start); s_pt.x += Ox; s_pt.y += Oy; e_pt = x_translate (API,draw_arc->end); e_pt.x += Ox; e_pt.y += Oy; } } if (TO_FILL (draw_arc) && (finish != x_arc_open)) { setbrushstyle (API,draw_arc->dc); if (finish == x_arc_ellipse) { XSetArcMode (ddata->display,ddata->gc,ArcChord); } else if (finish == x_arc_pie) { XSetArcMode (ddata->display,ddata->gc,ArcPieSlice); } else if (finish == x_arc_chord) { XSetArcMode (ddata->display,ddata->gc,ArcChord); } if (ddata->window != None) { XFillArc (ddata->display,ddata->window,ddata->gc,TL.x,TL.y,w,h,start,end); } if (ddata->pixmap != None) { XFillArc (ddata->display,ddata->pixmap,ddata->gc,TL.x,TL.y,w,h,start,end); } } if (TO_DRAW (draw_arc)) { setlinestyle (API,draw_arc->dc); if (ddata->window != None) { XDrawArc (ddata->display,ddata->window,ddata->gc,TL.x,TL.y,w,h,start,end); } if (ddata->pixmap != None) { XDrawArc (ddata->display,ddata->pixmap,ddata->gc,TL.x,TL.y,w,h,start,end); } if (finish == x_arc_ellipse) { /* Do nothing */ } else if (finish == x_arc_open) { /* Do nothing */ } else if (finish == x_arc_pie) { if (ddata->window != None) { XDrawLine (ddata->display,ddata->window,ddata->gc,e_pt.x,e_pt.y,Ox,Oy); XDrawLine (ddata->display,ddata->window,ddata->gc,Ox,Oy,s_pt.x,s_pt.y); } if (ddata->pixmap != None) { XDrawLine (ddata->display,ddata->pixmap,ddata->gc,e_pt.x,e_pt.y,Ox,Oy); XDrawLine (ddata->display,ddata->pixmap,ddata->gc,Ox,Oy,s_pt.x,s_pt.y); } } else if (finish == x_arc_chord) { if (ddata->window != None) { XDrawLine (ddata->display,ddata->window,ddata->gc,e_pt.x,e_pt.y,s_pt.x,s_pt.y); } if (ddata->pixmap != None) { XDrawLine (ddata->display,ddata->pixmap,ddata->gc,e_pt.x,e_pt.y,s_pt.x,s_pt.y); } } } } static void wmf_x_draw_line (wmfAPI* API,wmfDrawLine_t* draw_line) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint from; XPoint to; WMF_DEBUG (API,"wmf_[x_]draw_line"); if (TO_DRAW (draw_line)) { setlinestyle (API,draw_line->dc); from = x_translate (API,draw_line->from); to = x_translate (API,draw_line->to ); if (ddata->window != None) { XDrawLine (ddata->display,ddata->window,ddata->gc,from.x,from.y,to.x,to.y); } if (ddata->pixmap != None) { XDrawLine (ddata->display,ddata->pixmap,ddata->gc,from.x,from.y,to.x,to.y); } } } static void wmf_x_poly_line (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint* pt; U16 i; WMF_DEBUG (API,"wmf_[x_]poly_line"); if (poly_line->count < 2) return; pt = (XPoint*) wmf_malloc (API,poly_line->count * sizeof (XPoint)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } for (i = 0; i < poly_line->count; i++) { pt[i] = x_translate (API,poly_line->pt[i]); } if (TO_DRAW (poly_line)) { setlinestyle (API,poly_line->dc); if (ddata->window != None) { XDrawLines (ddata->display,ddata->window,ddata->gc, pt,poly_line->count,CoordModeOrigin); } if (ddata->pixmap != None) { XDrawLines (ddata->display,ddata->pixmap,ddata->gc, pt,poly_line->count,CoordModeOrigin); } } wmf_free (API,pt); } static void wmf_x_draw_polygon (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint* pt; U16 i; WMF_DEBUG (API,"wmf_[x_]draw_polygon"); if (poly_line->count < 2) return; pt = (XPoint*) wmf_malloc (API,(poly_line->count + 1) * sizeof (XPoint)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } for (i = 0; i < poly_line->count; i++) { pt[i] = x_translate (API,poly_line->pt[i]); } pt[poly_line->count] = pt[0]; if (TO_FILL (poly_line)) { setbrushstyle (API,poly_line->dc); if (ddata->window != None) { XFillPolygon (ddata->display,ddata->window,ddata->gc, pt,poly_line->count+1,Complex,CoordModeOrigin); } if (ddata->pixmap != None) { XFillPolygon (ddata->display,ddata->pixmap,ddata->gc, pt,poly_line->count+1,Complex,CoordModeOrigin); } } if (TO_DRAW (poly_line)) { setlinestyle (API,poly_line->dc); if (ddata->window != None) { XDrawLines (ddata->display,ddata->window,ddata->gc, pt,poly_line->count+1,CoordModeOrigin); } if (ddata->pixmap != None) { XDrawLines (ddata->display,ddata->pixmap,ddata->gc, pt,poly_line->count+1,CoordModeOrigin); } } wmf_free (API,pt); } static void wmf_x_draw_rectangle (wmfAPI* API,wmfDrawRectangle_t* draw_rectangle) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint TL; XPoint BR; WMF_DEBUG (API,"wmf_[x_]draw_rectangle"); TL = x_translate (API,draw_rectangle->TL); BR = x_translate (API,draw_rectangle->BR); BR.x -= TL.x; BR.y -= TL.y; if (TO_FILL (draw_rectangle)) { setbrushstyle (API,draw_rectangle->dc); if (ddata->window != None) { XFillRectangle (ddata->display,ddata->window,ddata->gc,TL.x,TL.y,BR.x,BR.y); } if (ddata->pixmap != None) { XFillRectangle (ddata->display,ddata->pixmap,ddata->gc,TL.x,TL.y,BR.x,BR.y); } } if (TO_DRAW (draw_rectangle)) { setlinestyle (API,draw_rectangle->dc); if (ddata->window != None) { XDrawRectangle (ddata->display,ddata->window,ddata->gc,TL.x,TL.y,BR.x,BR.y); } if (ddata->pixmap != None) { XDrawRectangle (ddata->display,ddata->pixmap,ddata->gc,TL.x,TL.y,BR.x,BR.y); } } } libwmf-0.2.8.4/src/ipa/x/font.h0000644000077100007710000001211007362765702015442 0ustar fjffjf00000000000000/* libwmf ("ipa/x/font.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_x_draw_text (wmfAPI* API,wmfDrawText_t* draw_text) { wmf_x_t* ddata = WMF_X_GetData (API); wmfFont* font = 0; wmfRGB* bg = 0; wmfD_Coord TL; wmfD_Coord BR; wmfD_Coord TR; wmfD_Coord BL; XPoint pt; XPoint pts[5]; float font_height; float font_ratio; double theta; double phi; FT_Face face; FT_F26Dot6 width; FT_F26Dot6 height; FT_Matrix matrix; FT_Vector pen; WMF_DEBUG (API,"wmf_[x_]draw_text"); setdefaultstyle (API); if (WMF_DC_OPAQUE (draw_text->dc)) { if ((draw_text->BR.x > draw_text->TL.x) && (draw_text->BR.y > draw_text->TL.y)) { TL = draw_text->TL; BR = draw_text->BR; TR.x = draw_text->BR.x; TR.y = draw_text->TL.y; BL.x = draw_text->TL.x; BL.y = draw_text->BR.y; } else { TL = draw_text->bbox.TL; BR = draw_text->bbox.BR; TR = draw_text->bbox.TR; BL = draw_text->bbox.BL; } bg = WMF_DC_BACKGROUND (draw_text->dc); XSetForeground (ddata->display,ddata->gc,get_color (API,bg)); pts[0] = x_translate (API,TL); pts[1] = x_translate (API,TR); pts[2] = x_translate (API,BR); pts[3] = x_translate (API,BL); pts[4] = pts[0]; if (ddata->window != None) { XFillPolygon (ddata->display,ddata->window,ddata->gc,pts,4,Convex,CoordModeOrigin); } if (ddata->pixmap != None) { XFillPolygon (ddata->display,ddata->pixmap,ddata->gc,pts,4,Convex,CoordModeOrigin); } } else { bg = &wmf_white; } if (strlen (draw_text->str) > 1) { wmf_ipa_draw_text (API,draw_text,wmf_x_draw_text); return; } font = WMF_DC_FONT (draw_text->dc); face = WMF_FONT_FTFACE (font); font_height = x_height (API,(float) draw_text->font_height); font_ratio = x_width (API,(float) (draw_text->font_height * draw_text->font_ratio)); font_ratio /= font_height; width = (FT_F26Dot6) (64 * font_height * font_ratio); height = (FT_F26Dot6) (64 * font_height); FT_Set_Char_Size (face,width,height,0,0); theta = - WMF_TEXT_ANGLE (font); phi = atan2 (sin (theta),font_ratio * cos (theta)); pt = x_translate_ft64 (API,draw_text->pt,&pen); matrix.xx = (FT_Fixed) ( cos (phi) * 0x10000L); matrix.xy = (FT_Fixed) ( sin (phi) * 0x10000L); matrix.yx = (FT_Fixed) (- sin (phi) * 0x10000L); matrix.yy = (FT_Fixed) ( cos (phi) * 0x10000L); FT_Set_Transform (face,&matrix,&pen); FT_Load_Char (face,draw_text->str[0],FT_LOAD_RENDER); pt.x += face->glyph->bitmap_left; pt.y -= face->glyph->bitmap_top; x_draw_ftbitmap (API,&(face->glyph->bitmap),pt,WMF_DC_TEXTCOLOR (draw_text->dc),bg); } static void x_draw_ftbitmap (wmfAPI* API,FT_Bitmap* bitmap,XPoint pt,wmfRGB* fg,wmfRGB* bg) { wmf_x_t* ddata = WMF_X_GetData (API); wmfRGB rgb; float red; float green; float blue; float grey; /* 1 = black(fg); 0 = white(bg) */ unsigned char* buffer; unsigned long fg_pixel; unsigned int row; unsigned int rows; unsigned int col; unsigned int cols; int x; int y; rows = bitmap->rows; cols = bitmap->width; fg_pixel = get_color (API,fg); if (bitmap->pixel_mode == ft_pixel_mode_mono) { XSetForeground (ddata->display,ddata->gc,fg_pixel); } for (row = 0; row < rows; row++) { buffer = bitmap->buffer + row * bitmap->pitch; y = pt.y + row; for (col = 0; col < cols; col++) { if (bitmap->pixel_mode == ft_pixel_mode_grays) { grey = (float) buffer[col] / (float) (bitmap->num_grays - 1); } else if (bitmap->pixel_mode == ft_pixel_mode_mono) { grey = ((buffer[col>>3] << (col & 7)) & 128) ? 1 : 0; } else /* Unsupported ft_pixel_mode */ { grey = 0; } if (grey > 0) /* if not background */ { x = pt.x + col; if ((grey >= 1) && (bitmap->pixel_mode != ft_pixel_mode_mono)) { XSetForeground (ddata->display,ddata->gc,fg_pixel); } else /* find anti-aliased color */ { red = grey * (float) fg->r + (1 - grey) * (float) bg->r; green = grey * (float) fg->g + (1 - grey) * (float) bg->g; blue = grey * (float) fg->b + (1 - grey) * (float) bg->b; rgb = wmf_rgb_color (API,red/255,green/255,blue/255); XSetForeground (ddata->display,ddata->gc,get_color (API,&rgb)); } if (ddata->window != None) { XDrawPoint (ddata->display,ddata->window,ddata->gc,x,y); } if (ddata->pixmap != None) { XDrawPoint (ddata->display,ddata->pixmap,ddata->gc,x,y); } } } } } libwmf-0.2.8.4/src/ipa/x/region.h0000644000077100007710000001014307362765702015763 0ustar fjffjf00000000000000/* libwmf ("ipa/x/region.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_x_region_frame (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_x_t* ddata = WMF_X_GetData (API); wmfPen* pen = 0; XPoint TL; XPoint BR; unsigned int i; int width; int height; WMF_DEBUG (API,"wmf_[x_]region_frame"); if (poly_rect->count == 0) return; setdefaultstyle (API); pen = WMF_DC_PEN (poly_rect->dc); XSetForeground (ddata->display,ddata->gc,get_color (API,WMF_PEN_COLOR (pen))); width = x_width (API,poly_rect->width ); height = x_height (API,poly_rect->height); if (width < 1) width = 1; if (height < 1) height = 1; for (i = 0; i < poly_rect->count; i++) { TL = x_translate (API,poly_rect->TL[i]); BR = x_translate (API,poly_rect->BR[i]); if (ddata->window != None) { XFillRectangle (ddata->display,ddata->window,ddata->gc, TL.x-width,TL.y-height,TL.x-(TL.x-width),BR.y-(TL.y-height)); XFillRectangle (ddata->display,ddata->window,ddata->gc, TL.x-width,BR.y,BR.x-(TL.x-width),BR.y+height-(BR.y)); XFillRectangle (ddata->display,ddata->window,ddata->gc, TL.x,TL.y-height,BR.x+width-(TL.x),TL.y-(TL.y-height)); XFillRectangle (ddata->display,ddata->window,ddata->gc, BR.x,TL.y,BR.x+width-(BR.x),BR.y+height-(TL.y)); } if (ddata->pixmap != None) { XFillRectangle (ddata->display,ddata->pixmap,ddata->gc, TL.x-width,TL.y-height,TL.x-(TL.x-width),BR.y-(TL.y-height)); XFillRectangle (ddata->display,ddata->pixmap,ddata->gc, TL.x-width,BR.y,BR.x-(TL.x-width),BR.y+height-(BR.y)); XFillRectangle (ddata->display,ddata->pixmap,ddata->gc, TL.x,TL.y-height,BR.x+width-(TL.x),TL.y-(TL.y-height)); XFillRectangle (ddata->display,ddata->pixmap,ddata->gc, BR.x,TL.y,BR.x+width-(BR.x),BR.y+height-(TL.y)); } } } static void wmf_x_region_paint (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint TL; XPoint BR; unsigned int i; WMF_DEBUG (API,"wmf_[x_]region_paint"); if (poly_rect->count == 0) return; if (TO_FILL (poly_rect)) { setbrushstyle (API,poly_rect->dc); for (i = 0; i < poly_rect->count; i++) { TL = x_translate (API,poly_rect->TL[i]); BR = x_translate (API,poly_rect->BR[i]); BR.x -= TL.x; BR.y -= TL.y; if (ddata->window != None) { XFillRectangle (ddata->display,ddata->window,ddata->gc,TL.x,TL.y,BR.x,BR.y); } if (ddata->pixmap != None) { XFillRectangle (ddata->display,ddata->pixmap,ddata->gc,TL.x,TL.y,BR.x,BR.y); } } } } static void wmf_x_region_clip (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_x_t* ddata = WMF_X_GetData (API); XPoint TL; XPoint BR; XRectangle* rect; unsigned int i; WMF_DEBUG (API,"wmf_[x_]region_clip"); XSetClipMask (ddata->display,ddata->gc,None); if (poly_rect->count == 0) return; rect = (XRectangle*) wmf_malloc (API,poly_rect->count * sizeof (XRectangle)); for (i = 0; i < poly_rect->count; i++) { TL = x_translate (API,poly_rect->TL[i]); BR = x_translate (API,poly_rect->BR[i]); rect[i].x = TL.x; rect[i].y = TL.y; rect[i].width = BR.x - TL.x; rect[i].height = BR.y - TL.y; } XSetClipRectangles (ddata->display,ddata->gc,0,0,rect,poly_rect->count,Unsorted); wmf_free (API,rect); } libwmf-0.2.8.4/src/ipa/xgd/0000755000077100007710000000000010271770014014624 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/ipa/xgd/bmp.h0000644000077100007710000001251607434422176015572 0ustar fjffjf00000000000000/* libwmf ("ipa/xgd/bmp.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_gd_rop_draw (wmfAPI* API,wmfROP_Draw_t* rop_draw) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint TL; gdPoint BR; int brushstyle; WMF_DEBUG (API,"wmf_[gd_]rop_draw"); if (!TO_FILL (rop_draw)) return; brushstyle = setbrushstyle (API,rop_draw->dc); switch (rop_draw->ROP) /* Ternary raster operations */ { case SRCCOPY: /* dest = source */ break; case SRCPAINT: /* dest = source OR dest */ break; case SRCAND: /* dest = source AND dest */ break; case SRCINVERT: /* dest = source XOR dest */ break; case SRCERASE: /* dest = source AND (NOT dest) */ break; case NOTSRCCOPY: /* dest = (NOT source) */ break; case NOTSRCERASE: /* dest = (NOT src) AND (NOT dest) */ break; case MERGECOPY: /* dest = (source AND pattern) */ break; case MERGEPAINT: /* dest = (NOT source) OR dest */ break; case PATCOPY: /* dest = pattern */ break; case PATPAINT: /* dest = DPSnoo */ break; case PATINVERT: /* dest = pattern XOR dest */ break; case DSTINVERT: /* dest = (NOT dest) */ break; case BLACKNESS: /* dest = BLACK */ brushstyle = gdImageColorResolve (gd->image,0,0,0); break; case WHITENESS: /* dest = WHITE */ brushstyle = gdImageColorResolve (gd->image,255,255,255); break; default: break; } TL = gd_translate (API,rop_draw->TL); BR = gd_translate (API,rop_draw->BR); gdImageFilledRectangle (gd->image,TL.x,TL.y,BR.x,BR.y,brushstyle); } static void wmf_gd_bmp_draw (wmfAPI* API,wmfBMP_Draw_t* bmp_draw) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; wmfRGB bg; wmfRGB rgb; int opacity; float bmp_width; float bmp_height; float x; float y; unsigned int i; unsigned int j; unsigned int width; unsigned int height; int alpha; int color; unsigned long tfg; unsigned long tbg; gdPoint pt; WMF_DEBUG (API,"wmf_[gd_]bmp_draw"); pt = gd_translate (API,bmp_draw->pt); bmp_width = gd_width (API,(float) ((double) bmp_draw->crop.w * bmp_draw->pixel_width )); bmp_height = gd_height (API,(float) ((double) bmp_draw->crop.h * bmp_draw->pixel_height)); width = (unsigned int) ceil (1.0 + bmp_width ); /* The 1.0 is a bit of a fudge factor... */ height = (unsigned int) ceil (1.0 + bmp_height); /* Works with test11.wmf, anyway. [??] */ for (j = 0; j < height; j++) { y = (float) ((double) j * (double) (bmp_draw->crop.h - 1) / (double) (height - 1)); y += (float) bmp_draw->crop.y; for (i = 0; i < width; i++) { x = (float) ((double) i * (double) (bmp_draw->crop.w - 1) / (double) (width - 1)); x += (float) bmp_draw->crop.x; opacity = wmf_ipa_bmp_interpolate (API,&(bmp_draw->bmp),&rgb,x,y); if (opacity < 0) break; if (opacity == 0) continue; if (opacity < 0xff) { color = gdImageGetPixel (gd->image,i+pt.x,(height-1-j)+pt.y); alpha = gdImageAlpha (gd->image, color); alpha = (((0x7f - alpha) + 1) << 1) - 1; bg.r = (unsigned char) (gdImageRed (gd->image, color) & 0xff); bg.g = (unsigned char) (gdImageGreen (gd->image, color) & 0xff); bg.b = (unsigned char) (gdImageBlue (gd->image, color) & 0xff); /* not sure if this is correct, but... */ tfg = (1 + (unsigned long) opacity) * (1 + (unsigned long) rgb.r); tbg = (1 + (unsigned long) (0xff - opacity)) * (1 + (unsigned long) bg.r); rgb.r = (unsigned char) ((((tfg + tbg) >> 8) - 1) & 0xff); tfg = (1 + (unsigned long) opacity) * (1 + (unsigned long) rgb.g); tbg = (1 + (unsigned long) (0xff - opacity)) * (1 + (unsigned long) bg.g); rgb.g = (unsigned char) ((((tfg + tbg) >> 8) - 1) & 0xff); tfg = (1 + (unsigned long) opacity) * (1 + (unsigned long) rgb.b); tbg = (1 + (unsigned long) (0xff - opacity)) * (1 + (unsigned long) bg.b); rgb.b = (unsigned char) ((((tfg + tbg) >> 8) - 1) & 0xff); tbg = (unsigned long) opacity; tbg *= 0x100 - (unsigned long) alpha; tbg = ((tbg - 1) >> 8) + (unsigned long) alpha; alpha = (int) (tbg & 0xff); alpha = 0x7f - (((alpha + 1) >> 1) - 1); } else { alpha = 0x7f - (((opacity + 1) >> 1) - 1); } color = gdImageColorResolveAlpha (gd->image,rgb.r,rgb.g,rgb.b,alpha); gdImageSetPixel (gd->image,i+pt.x,(height-1-j)+pt.y,color); } } } static void wmf_gd_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read) { WMF_DEBUG (API,"wmf_[gd_]bmp_read"); wmf_ipa_bmp_read (API,bmp_read); } static void wmf_gd_bmp_free (wmfAPI* API,wmfBMP* bmp) { WMF_DEBUG (API,"wmf_[gd_]bmp_free"); wmf_ipa_bmp_free (API,bmp); } libwmf-0.2.8.4/src/ipa/xgd/device.h0000644000077100007710000001536610271767772016270 0ustar fjffjf00000000000000/* libwmf ("ipa/xgd/device.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is called by wmf_play() the *first* time the meta file is played */ static void wmf_gd_device_open (wmfAPI* API) { #ifndef HAVE_LIBPNG wmf_gd_t* ddata = WMF_GD_GetData (API); #endif WMF_DEBUG (API,"wmf_[gd_]device_open"); #ifndef HAVE_LIBPNG if (ddata->type == wmf_gd_png) { WMF_ERROR (API,"Sorry! libwmf[gd] does not have PNG support!"); API->err = wmf_E_DeviceError; return; } #endif /* HAVE_LIBPNG */ #ifndef HAVE_LIBJPEG if (ddata->type == wmf_gd_jpeg) { WMF_ERROR (API,"Sorry! libwmf[gd] does not have JPEG support!"); API->err = wmf_E_DeviceError; return; } #endif /* HAVE_LIBJPEG */ } /* This is called by wmf_api_destroy() */ static void wmf_gd_device_close (wmfAPI* API) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; WMF_DEBUG (API,"wmf_[gd_]device_close"); if (gd->brush.hatch) gdImageDestroy (gd->brush.hatch); if (gd->brush.image) gdImageDestroy (gd->brush.image); if (gd->pen.image) gdImageDestroy (gd->pen.image); if (gd->image) gdImageDestroy (gd->image); } /* This is called from the beginning of each play for initial page setup */ static void wmf_gd_device_begin (wmfAPI* API) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; WMF_DEBUG (API,"wmf_[gd_]device_begin"); if ((ddata->width == 0) || (ddata->height == 0)) { WMF_ERROR (API,"Image has bad size!"); API->err = wmf_E_Glitch; return; } gd->image = gdImageCreateTrueColor ((int) ddata->width,(int) ddata->height); if (gd->image == 0) { WMF_ERROR (API,"Unable to create image!"); API->err = wmf_E_DeviceError; return; } gd->brush.hatch = 0; gd->brush.image = 0; gd->pen.image = 0; gd->white = gdImageColorAllocate (gd->image,255,255,255); /* background color */ gdImageFilledRectangle (gd->image,0,0,(int) ddata->width - 1,(int) ddata->height - 1,gd->white); } /* This is called from the end of each play for page termination */ static void wmf_gd_device_end (wmfAPI* API) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdSink sink; WMF_DEBUG (API,"wmf_[gd_]device_end"); switch (ddata->type) { #ifdef HAVE_LIBPNG case (wmf_gd_png): if (ddata->flags & WMF_GD_OUTPUT_FILE) { if (ddata->file == 0) { WMF_ERROR (API,"Attempt to write to null stream!"); API->err = wmf_E_BadFile; break; } gdImagePng (gd->image,ddata->file); } else if (ddata->flags & WMF_GD_OUTPUT_MEMORY) { sink.context = (void*) API; sink.sink = gd_sink; gd->buffer = 0; gdImagePngToSink (gd->image,&sink); if (ERR (API)) { WMF_ERROR (API,"PNG Write failed!"); break; } ddata->memory = gd->buffer; } break; #endif #ifdef HAVE_LIBJPEG case (wmf_gd_jpeg): if (ddata->flags & WMF_GD_OUTPUT_FILE) { if (ddata->file == 0) { WMF_ERROR (API,"Attempt to write to null stream!"); API->err = wmf_E_BadFile; break; } gdImageJpeg (gd->image,ddata->file,-1); /* Default quality. */ } else if (ddata->flags & WMF_GD_OUTPUT_MEMORY) { WMF_ERROR (API,"JPEG Output to memory not supported!"); /* Or is it ?? */ API->err = wmf_E_Glitch; } break; #endif case (wmf_gd_image): /* no output, but don't destroy image (see below) */ break; default: WMF_ERROR (API,"Output format is not supported!"); API->err = wmf_E_Glitch; break; } if (gd->brush.hatch) gdImageDestroy (gd->brush.hatch); if (gd->brush.image) gdImageDestroy (gd->brush.image); if (gd->pen.image) gdImageDestroy (gd->pen.image); if (ddata->type == wmf_gd_image) { gdClipSetReset (gd->image); /* Remove any clipping rectangles */ ddata->gd_image = (void*) gd->image; } else { gdImageDestroy (gd->image); } gd->brush.hatch = 0; gd->brush.image = 0; gd->pen.image = 0; gd->image = 0; } static int gd_sink (void* context,const char* buffer,int length) { wmfAPI* API = (wmfAPI*) context; wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; int i; char* more = 0; if ((ddata->flags & WMF_GD_OWN_BUFFER) && ddata->sink.function) { return (ddata->sink.function (ddata->sink.context,(char*) buffer,length)); } if (ERR (API)) return (0); if (length <= 0) return (length); if (gd->buffer == 0) { gd->buffer = (char*) wmf_malloc (API,4096); if (ERR (API)) { gd->buffer = 0; return (0); } gd->max_length = 4096; gd->length = 0; } while ((gd->length + (long) length) > gd->max_length) { more = (char*) wmf_realloc (API,gd->buffer,gd->max_length + 4096); if (ERR (API)) break; gd->buffer = more; gd->max_length += 4096; } if (ERR (API)) return (0); gd->ptr = gd->buffer + gd->length; for (i = 0; i < length; i++) { (*(gd->ptr)) = (char) buffer[i]; gd->ptr++; gd->length++; } return (length); } static gdPoint gd_translate (wmfAPI* API,wmfD_Coord d_pt) { return (gd_translate_ft64 (API,d_pt,0)); } static gdPoint gd_translate_ft64 (wmfAPI* API,wmfD_Coord d_pt,FT_Vector* pen) { wmf_gd_t* ddata = WMF_GD_GetData (API); gdPoint g_pt; double x; double y; x = ((double) d_pt.x - (double) ddata->bbox.TL.x); x /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); x *= (double) ddata->width; y = ((double) d_pt.y - (double) ddata->bbox.TL.y); y /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); y *= (double) ddata->height; g_pt.x = (int) floor (x); g_pt.y = (int) floor (y); if (pen) { pen->x = floor ((x - floor (x)) * 64); pen->y = floor ((y - floor (y)) * 64); } return (g_pt); } static float gd_width (wmfAPI* API,float wmf_width) { wmf_gd_t* ddata = WMF_GD_GetData (API); double width; width = (double) wmf_width * (double) ddata->width; width /= ((double) ddata->bbox.BR.x - (double) ddata->bbox.TL.x); return ((float) width); } static float gd_height (wmfAPI* API,float wmf_height) { wmf_gd_t* ddata = WMF_GD_GetData (API); double height; height = (double) wmf_height * (double) ddata->height; height /= ((double) ddata->bbox.BR.y - (double) ddata->bbox.TL.y); return ((float) height); } libwmf-0.2.8.4/src/ipa/xgd/draw.h0000644000077100007710000001715507362765704015764 0ustar fjffjf00000000000000/* libwmf ("ipa/xgd/draw.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_gd_flood_interior (wmfAPI* API,wmfFlood_t* flood) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; wmfRGB* rgb; gdPoint pt; int color; WMF_DEBUG (API,"wmf_[gd_]flood_interior"); pt = gd_translate (API,flood->pt); rgb = &(flood->color); color = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); gdImageFillToBorder (gd->image,pt.x,pt.y,color,color); } static void wmf_gd_flood_exterior (wmfAPI* API,wmfFlood_t* flood) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; wmfRGB* rgb; gdPoint pt; int color; WMF_DEBUG (API,"wmf_[gd_]flood_exterior"); pt = gd_translate (API,flood->pt); rgb = &(flood->color); color = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); if (flood->type == FLOODFILLSURFACE) { gdImageFill (gd->image,pt.x,pt.y,color); } else { gdImageFillToBorder (gd->image,pt.x,pt.y,color,color); } } static void wmf_gd_draw_pixel (wmfAPI* API,wmfDrawPixel_t* draw_pixel) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint pt; wmfRGB* rgb; int color; WMF_DEBUG (API,"wmf_[gd_]draw_pixel"); pt = gd_translate (API,draw_pixel->pt); rgb = &(draw_pixel->color); color = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); gdImageSetPixel (gd->image,pt.x,pt.y,color); } static void wmf_gd_draw_pie (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]draw_pie"); gd_draw_arc (API,draw_arc,gd_arc_pie); } static void wmf_gd_draw_chord (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]draw_chord"); gd_draw_arc (API,draw_arc,gd_arc_chord); } static void wmf_gd_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]draw_arc"); gd_draw_arc (API,draw_arc,gd_arc_open); } static void wmf_gd_draw_ellipse (wmfAPI* API,wmfDrawArc_t* draw_arc) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]draw_ellipse"); gd_draw_arc (API,draw_arc,gd_arc_ellipse); } static void gd_draw_arc (wmfAPI* API,wmfDrawArc_t* draw_arc,gd_arc_t finish) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint TL; gdPoint BR; gdPoint s_pt; gdPoint e_pt; int Ox; int Oy; int w; int h; int start = 0; int end = 360; int brushstyle; int linestyle; WMF_DEBUG (API,"~~~~~~~~gd_draw_arc"); TL = gd_translate (API,draw_arc->TL); BR = gd_translate (API,draw_arc->BR); Ox = (BR.x + TL.x) / 2; /* origin of ellipse */ Oy = (BR.y + TL.y) / 2; w = (BR.x - TL.x); /* axes of ellipse */ h = (BR.y - TL.y); if (finish != gd_arc_ellipse) { start = (int) (atan2 (draw_arc->start.y,draw_arc->start.x) * 180 / PI); end = (int) (atan2 (draw_arc->end.y ,draw_arc->end.x ) * 180 / PI); if (start < 0) { start += 360; end += 360; } if (end < start) end += 360; if (finish != gd_arc_open) { s_pt = gd_translate (API,draw_arc->start); s_pt.x += Ox; s_pt.y += Oy; e_pt = gd_translate (API,draw_arc->end); e_pt.x += Ox; e_pt.y += Oy; } } if (TO_FILL (draw_arc)) { brushstyle = setbrushstyle (API,draw_arc->dc); if (finish == gd_arc_ellipse) { gdImageFilledArc (gd->image,Ox,Oy,w,h,start,end,brushstyle,gdChord); } else if (finish == gd_arc_open) { /* Do nothing */ } else if (finish == gd_arc_pie) { gdImageFilledArc (gd->image,Ox,Oy,w,h,start,end,brushstyle,gdPie); } else if (finish == gd_arc_chord) { gdImageFilledArc (gd->image,Ox,Oy,w,h,start,end,brushstyle,gdChord); } } if (TO_DRAW (draw_arc)) { linestyle = setlinestyle (API,draw_arc->dc); gdImageArc (gd->image,Ox,Oy,w,h,start,end,linestyle); if (finish == gd_arc_ellipse) { /* Do nothing */ } else if (finish == gd_arc_open) { /* Do nothing */ } else if (finish == gd_arc_pie) { gdImageLine (gd->image,e_pt.x,e_pt.y,Ox,Oy,linestyle); gdImageLine (gd->image,Ox,Oy,s_pt.x,s_pt.y,linestyle); } else if (finish == gd_arc_chord) { gdImageLine (gd->image,e_pt.x,e_pt.y,s_pt.x,s_pt.y,linestyle); } } } static void wmf_gd_draw_line (wmfAPI* API,wmfDrawLine_t* draw_line) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint from; gdPoint to; int linestyle; WMF_DEBUG (API,"wmf_[gd_]draw_line"); if (TO_DRAW (draw_line)) { linestyle = setlinestyle (API,draw_line->dc); from = gd_translate (API,draw_line->from); to = gd_translate (API,draw_line->to ); gdImageLine (gd->image,from.x,from.y,to.x,to.y,linestyle); } } static void wmf_gd_poly_line (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint from; gdPoint to; int linestyle; U16 i; WMF_DEBUG (API,"wmf_[gd_]poly_line"); if (TO_DRAW (poly_line) && (poly_line->count > 1)) { linestyle = setlinestyle (API,poly_line->dc); from = gd_translate (API,poly_line->pt[0]); for (i = 1; i < poly_line->count; i++) { to = gd_translate (API,poly_line->pt[i]); gdImageLine (gd->image,from.x,from.y,to.x,to.y,linestyle); from = to; } } } static void wmf_gd_draw_polygon (wmfAPI* API,wmfPolyLine_t* poly_line) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint* pt; int brushstyle; int linestyle; U16 i; WMF_DEBUG (API,"wmf_[gd_]draw_polygon"); if (poly_line->count < 3) return; pt = (gdPoint*) wmf_malloc (API,poly_line->count * sizeof (gdPoint)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } for (i = 0; i < poly_line->count; i++) { pt[i] = gd_translate (API,poly_line->pt[i]); } if (TO_FILL (poly_line)) { brushstyle = setbrushstyle (API,poly_line->dc); gdImageFilledPolygon (gd->image,pt,poly_line->count,brushstyle); } if (TO_DRAW (poly_line)) { linestyle = setlinestyle (API,poly_line->dc); gdImagePolygon (gd->image,pt,poly_line->count,linestyle); } wmf_free (API,pt); } static void wmf_gd_draw_rectangle (wmfAPI* API,wmfDrawRectangle_t* draw_rectangle) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint TL; gdPoint BR; int brushstyle; int linestyle; WMF_DEBUG (API,"wmf_[gd_]draw_rectangle"); TL = gd_translate (API,draw_rectangle->TL); BR = gd_translate (API,draw_rectangle->BR); if (TO_FILL (draw_rectangle)) { brushstyle = setbrushstyle (API,draw_rectangle->dc); gdImageFilledRectangle (gd->image,TL.x,TL.y,BR.x,BR.y,brushstyle); } if (TO_DRAW (draw_rectangle)) { linestyle = setlinestyle (API,draw_rectangle->dc); gdImageRectangle (gd->image,TL.x,TL.y,BR.x,BR.y,linestyle); } } libwmf-0.2.8.4/src/ipa/xgd/font.h0000644000077100007710000001146607367010431015755 0ustar fjffjf00000000000000/* libwmf ("ipa/xgd/font.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_gd_draw_text (wmfAPI* API,wmfDrawText_t* draw_text) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint pt; gdPoint pts[4]; wmfFont* font = 0; wmfRGB* fg = 0; wmfRGB* bg = 0; wmfD_Coord TL; wmfD_Coord BR; wmfD_Coord BL; wmfD_Coord TR; int color; float font_height; float font_ratio; double theta; double phi; FT_Face face; FT_F26Dot6 width; FT_F26Dot6 height; FT_Matrix matrix; FT_Vector pen; WMF_DEBUG (API,"wmf_[gd_]draw_text"); if (WMF_DC_OPAQUE (draw_text->dc)) { if ((draw_text->BR.x > draw_text->TL.x) && (draw_text->BR.y > draw_text->TL.y)) { TL = draw_text->TL; BR = draw_text->BR; TR.x = draw_text->BR.x; TR.y = draw_text->TL.y; BL.x = draw_text->TL.x; BL.y = draw_text->BR.y; } else { TL = draw_text->bbox.TL; BR = draw_text->bbox.BR; TR = draw_text->bbox.TR; BL = draw_text->bbox.BL; } bg = WMF_DC_BACKGROUND (draw_text->dc); color = gdImageColorResolve (gd->image,bg->r,bg->g,bg->b); pts[0] = gd_translate (API,TL); pts[1] = gd_translate (API,TR); pts[2] = gd_translate (API,BR); pts[3] = gd_translate (API,BL); gdImageFilledPolygon (gd->image,pts,4,color); } else { bg = &wmf_white; /* improper for gd? TODO */ } if (strlen (draw_text->str) > 1) { wmf_ipa_draw_text (API,draw_text,wmf_gd_draw_text); return; } font = WMF_DC_FONT (draw_text->dc); face = WMF_FONT_FTFACE (font); font_height = gd_height (API,(float) draw_text->font_height); font_ratio = gd_width (API,(float) (draw_text->font_height * draw_text->font_ratio)); font_ratio /= font_height; width = (FT_F26Dot6) (64 * font_height * font_ratio); height = (FT_F26Dot6) (64 * font_height); FT_Set_Char_Size (face,width,height,0,0); theta = - WMF_TEXT_ANGLE (font); phi = atan2 (sin (theta),font_ratio * cos (theta)); pt = gd_translate_ft64 (API,draw_text->pt,&pen); matrix.xx = (FT_Fixed) ( cos (phi) * 0x10000L); matrix.xy = (FT_Fixed) ( sin (phi) * 0x10000L); matrix.yx = (FT_Fixed) (- sin (phi) * 0x10000L); matrix.yy = (FT_Fixed) ( cos (phi) * 0x10000L); FT_Set_Transform (face,&matrix,&pen); FT_Load_Char (face,draw_text->str[0],FT_LOAD_RENDER); pt.x += face->glyph->bitmap_left; pt.y -= face->glyph->bitmap_top; fg = WMF_DC_TEXTCOLOR (draw_text->dc); gd_draw_ftbitmap (API,&(face->glyph->bitmap),pt,fg,bg); } static void gd_draw_ftbitmap (wmfAPI* API,FT_Bitmap* bitmap,gdPoint pt,wmfRGB* fg,wmfRGB* bg) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; wmfRGB rgb; float red; float green; float blue; float grey; /* 1 = black(fg); 0 = white(bg) */ unsigned char* buffer; unsigned int row; unsigned int rows; unsigned int col; unsigned int cols; int x; int y; int fg_pixel; int color; rows = bitmap->rows; cols = bitmap->width; fg_pixel = gdImageColorResolve (gd->image,fg->r,fg->g,fg->b); if (bitmap->pixel_mode == ft_pixel_mode_mono) { color = fg_pixel; } for (row = 0; row < rows; row++) { buffer = bitmap->buffer + row * bitmap->pitch; y = pt.y + row; for (col = 0; col < cols; col++) { if (bitmap->pixel_mode == ft_pixel_mode_grays) { grey = (float) buffer[col] / (float) (bitmap->num_grays - 1); } else if (bitmap->pixel_mode == ft_pixel_mode_mono) { grey = ((buffer[col>>3] << (col & 7)) & 128) ? 1 : 0; } else /* Unsupported ft_pixel_mode */ { grey = 0; } if (grey > 0) /* if not background */ { x = pt.x + col; if ((grey >= 1) && (bitmap->pixel_mode != ft_pixel_mode_mono)) { color = fg_pixel; } else /* find anti-aliased color */ { red = grey * (float) fg->r + (1 - grey) * (float) bg->r; green = grey * (float) fg->g + (1 - grey) * (float) bg->g; blue = grey * (float) fg->b + (1 - grey) * (float) bg->b; rgb = wmf_rgb_color (API,red/255,green/255,blue/255); color = gdImageColorResolve (gd->image,rgb.r,rgb.g,rgb.b); } gdImageSetPixel (gd->image,x,y,color); } } } } libwmf-0.2.8.4/src/ipa/xgd/region.h0000644000077100007710000000622607362765704016307 0ustar fjffjf00000000000000/* libwmf ("ipa/xgd/region.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static void wmf_gd_region_frame (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_gd_t* ddata = WMF_GD_GetData (API); wmfPen* pen = 0; wmfRGB* rgb = 0; gd_t* gd = (gd_t*) ddata->gd_data; gdPoint TL; gdPoint BR; unsigned int i; int width; int height; int color; WMF_DEBUG (API,"wmf_[gd_]region_frame"); if (poly_rect->count == 0) return; pen = WMF_DC_PEN (poly_rect->dc); rgb = WMF_PEN_COLOR (pen); color = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); width = gd_width (API,poly_rect->width ); height = gd_height (API,poly_rect->height); if (width < 1) width = 1; if (height < 1) height = 1; for (i = 0; i < poly_rect->count; i++) { TL = gd_translate (API,poly_rect->TL[i]); BR = gd_translate (API,poly_rect->BR[i]); gdImageFilledRectangle (gd->image,TL.x-width,TL.y-height,TL.x,BR.y,color); gdImageFilledRectangle (gd->image,TL.x-width,BR.y,BR.x,BR.y+height,color); gdImageFilledRectangle (gd->image,TL.x,TL.y-height,BR.x+width,TL.y,color); gdImageFilledRectangle (gd->image,BR.x,TL.y,BR.x+width,BR.y+height,color); } } static void wmf_gd_region_paint (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint TL; gdPoint BR; unsigned int i; int brushstyle; WMF_DEBUG (API,"wmf_[gd_]region_paint"); if (poly_rect->count == 0) return; if (TO_FILL (poly_rect)) { brushstyle = setbrushstyle (API,poly_rect->dc); for (i = 0; i < poly_rect->count; i++) { TL = gd_translate (API,poly_rect->TL[i]); BR = gd_translate (API,poly_rect->BR[i]); gdImageFilledRectangle (gd->image,TL.x,TL.y,BR.x,BR.y,brushstyle); } } } static void wmf_gd_region_clip (wmfAPI* API,wmfPolyRectangle_t* poly_rect) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; gdPoint TL; gdPoint BR; gdClipRectangle rect; unsigned int i; WMF_DEBUG (API,"wmf_[gd_]region_clip"); gdClipSetReset (gd->image); if (poly_rect->count == 0) return; for (i = 0; i < poly_rect->count; i++) { TL = gd_translate (API,poly_rect->TL[i]); BR = gd_translate (API,poly_rect->BR[i]); rect.x_min = MIN (TL.x,BR.x); rect.x_max = MAX (TL.x,BR.x) - 1; rect.y_min = MIN (TL.y,BR.y); rect.y_max = MAX (TL.y,BR.y) - 1; gdClipSetAdd (gd->image,&rect); } } libwmf-0.2.8.4/src/ipa/Makefile.am0000644000077100007710000000220407470662072016107 0ustar fjffjf00000000000000CFLAGS = @CFLAGS@ @WMF_CFLAGS@ LDFLAGS = @LDFLAGS@ DEFS = @DEFS@ @WMF_DEFS@ \ -DPACKAGE=\"@PACKAGE@\" \ -DVERSION=\"@VERSION@\" if LIBWMF_OPT_SYS_GD GDHDRS = else GDHDRS = -I$(top_srcdir)/src/extra/gd endif INCLUDES = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src \ $(GDHDRS) \ -I$(top_builddir) noinst_LTLIBRARIES = libipa.la libipa_la_SOURCES = eps.c fig.c svg.c xgd.c x.c ipa.c plot.c foreign.c libipa_la_LDFLAGS = IPAHEADERS = \ ipa/bmp.h \ ipa.h EPSHEADERS = \ eps/bmp.h \ eps/device.h \ eps/draw.h \ eps/region.h \ eps.h FIGHEADERS = \ fig/bmp.h \ fig/color.h \ fig/device.h \ fig/draw.h \ fig/font.h \ fig/region.h \ fig.h SVGHEADERS = \ svg/bmp.h \ svg/device.h \ svg/draw.h \ svg/region.h \ svg.h GDHEADERS = \ xgd/bmp.h \ xgd/device.h \ xgd/draw.h \ xgd/font.h \ xgd/region.h \ xgd.h XHEADERS = \ x/bmp.h \ x/color.h \ x/device.h \ x/draw.h \ x/font.h \ x/region.h \ x.h PLOTHEADERS = \ plot/bmp.h \ plot/device.h \ plot/draw.h \ plot/region.h \ plot.h EXTRA_DIST = template.c template.h $(IPAHEADERS) $(EPSHEADERS) $(FIGHEADERS) $(SVGHEADERS) $(GDHEADERS) $(XHEADERS) $(PLOTHEADERS) libwmf-0.2.8.4/src/ipa/Makefile.in0000664000077100007710000004032210272000332016100 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ SOURCES = $(libipa_la_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/ipa DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libipa_la_LIBADD = am_libipa_la_OBJECTS = eps.lo fig.lo svg.lo xgd.lo x.lo ipa.lo plot.lo \ foreign.lo libipa_la_OBJECTS = $(am_libipa_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libipa_la_SOURCES) DIST_SOURCES = $(libipa_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @WMF_CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ @WMF_DEFS@ \ -DPACKAGE=\"@PACKAGE@\" \ -DVERSION=\"@VERSION@\" DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ @LIBWMF_OPT_SYS_GD_FALSE@GDHDRS = -I$(top_srcdir)/src/extra/gd @LIBWMF_OPT_SYS_GD_TRUE@GDHDRS = INCLUDES = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src \ $(GDHDRS) \ -I$(top_builddir) noinst_LTLIBRARIES = libipa.la libipa_la_SOURCES = eps.c fig.c svg.c xgd.c x.c ipa.c plot.c foreign.c libipa_la_LDFLAGS = IPAHEADERS = \ ipa/bmp.h \ ipa.h EPSHEADERS = \ eps/bmp.h \ eps/device.h \ eps/draw.h \ eps/region.h \ eps.h FIGHEADERS = \ fig/bmp.h \ fig/color.h \ fig/device.h \ fig/draw.h \ fig/font.h \ fig/region.h \ fig.h SVGHEADERS = \ svg/bmp.h \ svg/device.h \ svg/draw.h \ svg/region.h \ svg.h GDHEADERS = \ xgd/bmp.h \ xgd/device.h \ xgd/draw.h \ xgd/font.h \ xgd/region.h \ xgd.h XHEADERS = \ x/bmp.h \ x/color.h \ x/device.h \ x/draw.h \ x/font.h \ x/region.h \ x.h PLOTHEADERS = \ plot/bmp.h \ plot/device.h \ plot/draw.h \ plot/region.h \ plot.h EXTRA_DIST = template.c template.h $(IPAHEADERS) $(EPSHEADERS) $(FIGHEADERS) $(SVGHEADERS) $(GDHEADERS) $(XHEADERS) $(PLOTHEADERS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ipa/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/ipa/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libipa.la: $(libipa_la_OBJECTS) $(libipa_la_DEPENDENCIES) $(LINK) $(libipa_la_LDFLAGS) $(libipa_la_OBJECTS) $(libipa_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eps.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fig.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/foreign.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgd.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(mkdir_p) $(distdir)/eps $(distdir)/fig $(distdir)/ipa $(distdir)/plot $(distdir)/svg $(distdir)/x $(distdir)/xgd @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/src/ipa/eps.c0000644000077100007710000003460507367010430015006 0ustar fjffjf00000000000000/* libwmf (ipa/eps.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include #include #include "wmfdefs.h" #ifndef WITHOUT_LAYERS #include "libwmf/eps.h" static void wmf_eps_device_open (wmfAPI*); static void wmf_eps_device_close (wmfAPI*); static void wmf_eps_device_begin (wmfAPI*); static void wmf_eps_device_end (wmfAPI*); static void wmf_eps_flood_interior (wmfAPI*,wmfFlood_t*); static void wmf_eps_flood_exterior (wmfAPI*,wmfFlood_t*); static void wmf_eps_draw_pixel (wmfAPI*,wmfDrawPixel_t*); static void wmf_eps_draw_pie (wmfAPI*,wmfDrawArc_t*); static void wmf_eps_draw_chord (wmfAPI*,wmfDrawArc_t*); static void wmf_eps_draw_arc (wmfAPI*,wmfDrawArc_t*); static void wmf_eps_draw_ellipse (wmfAPI*,wmfDrawArc_t*); static void wmf_eps_draw_line (wmfAPI*,wmfDrawLine_t*); static void wmf_eps_poly_line (wmfAPI*,wmfPolyLine_t*); static void wmf_eps_draw_polygon (wmfAPI*,wmfPolyLine_t*); static void wmf_eps_draw_rectangle (wmfAPI*,wmfDrawRectangle_t*); static void wmf_eps_rop_draw (wmfAPI*,wmfROP_Draw_t*); static void wmf_eps_bmp_draw (wmfAPI*,wmfBMP_Draw_t*); static void wmf_eps_bmp_read (wmfAPI*,wmfBMP_Read_t*); static void wmf_eps_bmp_free (wmfAPI*,wmfBMP*); static void wmf_eps_draw_text (wmfAPI*,wmfDrawText_t*); static void wmf_eps_udata_init (wmfAPI*,wmfUserData_t*); static void wmf_eps_udata_copy (wmfAPI*,wmfUserData_t*); static void wmf_eps_udata_set (wmfAPI*,wmfUserData_t*); static void wmf_eps_udata_free (wmfAPI*,wmfUserData_t*); static void wmf_eps_region_frame (wmfAPI*,wmfPolyRectangle_t*); static void wmf_eps_region_paint (wmfAPI*,wmfPolyRectangle_t*); static void wmf_eps_region_clip (wmfAPI*,wmfPolyRectangle_t*); #include "ipa/eps.h" #include "ipa/eps/bmp.h" #include "ipa/eps/device.h" #include "ipa/eps/draw.h" #include "ipa/eps/region.h" #endif /* ! WITHOUT_LAYERS */ void wmf_eps_function (wmfAPI* API) { #ifndef WITHOUT_LAYERS wmf_eps_t* ddata = 0; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; if ((API->flags & API_STANDARD_INTERFACE) == 0) { WMF_ERROR (API,"Can't use this device layer with 'lite' interface!"); API->err = wmf_E_DeviceError; return; } /* IPA function reference links */ FR->device_open = wmf_eps_device_open; FR->device_close = wmf_eps_device_close; FR->device_begin = wmf_eps_device_begin; FR->device_end = wmf_eps_device_end; FR->flood_interior = wmf_eps_flood_interior; FR->flood_exterior = wmf_eps_flood_exterior; FR->draw_pixel = wmf_eps_draw_pixel; FR->draw_pie = wmf_eps_draw_pie; FR->draw_chord = wmf_eps_draw_chord; FR->draw_arc = wmf_eps_draw_arc; FR->draw_ellipse = wmf_eps_draw_ellipse; FR->draw_line = wmf_eps_draw_line; FR->poly_line = wmf_eps_poly_line; FR->draw_polygon = wmf_eps_draw_polygon; FR->draw_rectangle = wmf_eps_draw_rectangle; FR->rop_draw = wmf_eps_rop_draw; FR->bmp_draw = wmf_eps_bmp_draw; FR->bmp_read = wmf_eps_bmp_read; FR->bmp_free = wmf_eps_bmp_free; FR->draw_text = wmf_eps_draw_text; FR->udata_init = wmf_eps_udata_init; FR->udata_copy = wmf_eps_udata_copy; FR->udata_set = wmf_eps_udata_set; FR->udata_free = wmf_eps_udata_free; FR->region_frame = wmf_eps_region_frame; FR->region_paint = wmf_eps_region_paint; FR->region_clip = wmf_eps_region_clip; /* Allocate device data structure */ ddata = (wmf_eps_t*) wmf_malloc (API,sizeof (wmf_eps_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; /* Device data defaults */ ddata->bbox.TL.x = 0; ddata->bbox.TL.y = 0; ddata->bbox.BR.x = 0; ddata->bbox.BR.y = 0; ddata->out = 0; ddata->Title = 0; ddata->Creator = 0; ddata->Date = 0; ddata->For = 0; ddata->eps_x = 0; ddata->eps_y = 0; ddata->eps_width = 0; ddata->eps_height = 0; ddata->page_width = 596; ddata->page_height = 842; ddata->flags = 0; #else /* ! WITHOUT_LAYERS */ API->device_data = 0; API->err = wmf_E_DeviceError; #endif /* ! WITHOUT_LAYERS */ } #ifndef WITHOUT_LAYERS static void wmf_eps_draw_text (wmfAPI* API,wmfDrawText_t* draw_text) { wmf_eps_t* ddata = WMF_EPS_GetData (API); wmfStream* out = ddata->out; wmfFont* font = 0; wmfRGB* rgb = 0; float red; float green; float blue; float size; float ratio; float theta; unsigned int i; unsigned int length; WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]draw_text"); if (out == 0) return; size = (float) draw_text->font_height; ratio = (float) draw_text->font_ratio; font = WMF_DC_FONT (draw_text->dc); theta = (float) (WMF_TEXT_ANGLE (font) * 180 / PI); wmf_stream_printf (API,out,"gsave %% wmf_[eps_]draw_text\n"); wmf_stream_printf (API,out,"/%s findfont %f scalefont setfont\n",WMF_FONT_PSNAME (font),size); wmf_stream_printf (API,out,"%f %f translate 1 -1 scale %f rotate ",draw_text->pt.x,draw_text->pt.y,theta); wmf_stream_printf (API,out,"%f 1 scale\n",ratio); wmf_stream_printf (API,out,"("); length = strlen (draw_text->str); for (i = 0; i < length; i++) { if (draw_text->str[i] == ')') wmf_stream_printf (API,out,"\\)"); else if (draw_text->str[i] == '(') wmf_stream_printf (API,out,"\\("); else wmf_stream_printf (API,out,"%c",draw_text->str[i]); } wmf_stream_printf (API,out,")\n"); if (WMF_DC_OPAQUE (draw_text->dc)) { wmf_stream_printf (API,out,"dup stringwidth pop dup "); wmf_stream_printf (API,out,"newpath 0 %f moveto 0 rlineto 0 %f rlineto neg 0 rlineto closepath ", - 0.29 * size,1.07 * size); rgb = WMF_DC_BACKGROUND (draw_text->dc); red = (float) ((int) rgb->r) / 255; green = (float) ((int) rgb->g) / 255; blue = (float) ((int) rgb->b) / 255; wmf_stream_printf (API,out,"%f %f %f setrgbcolor fill ",red,green,blue); } rgb = WMF_DC_TEXTCOLOR (draw_text->dc); red = (float) ((int) rgb->r) / 255; green = (float) ((int) rgb->g) / 255; blue = (float) ((int) rgb->b) / 255; wmf_stream_printf (API,out,"%f %f %f setrgbcolor ",red,green,blue); wmf_stream_printf (API,out,"0 0 moveto show\n"); wmf_stream_printf (API,out,"grestore\n"); } static void wmf_eps_udata_init (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]udata_init"); } static void wmf_eps_udata_copy (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]udata_copy"); } static void wmf_eps_udata_set (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]udata_set"); } static void wmf_eps_udata_free (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_eps_t* ddata = WMF_EPS_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[eps_]udata_free"); } /* Write out postscript path, *minus* the ultimate `fill', then call eps_path_fill * Note: I KNOW there is a better way to do patterns, but my ghostscript hangs when I try! * * Assumes that lbStyle != BS_NULL */ static void eps_path_fill (wmfAPI* API,wmfDC* dc,wmfD_Rect* bbox) { wmf_eps_t* ddata = WMF_EPS_GetData (API); wmfStream* out = ddata->out; wmfBrush* brush; wmfRGB* rgb; wmfBMP* bmp; float red; float green; float blue; float side; WMF_DEBUG (API,"~~~~~~~~eps_path_fill"); if (out == 0) return; brush = WMF_DC_BRUSH (dc); switch (WMF_BRUSH_STYLE (brush)) { case BS_NULL: WMF_ERROR (API,"Attempt to set null fill-style!"); API->err = wmf_E_Glitch; break; case BS_HATCHED: wmf_stream_printf (API,out,"clip "); if (WMF_DC_OPAQUE (dc)) { rgb = WMF_DC_BACKGROUND (dc); red = (float) ((int) rgb->r) / 255; green = (float) ((int) rgb->g) / 255; blue = (float) ((int) rgb->b) / 255; wmf_stream_printf (API,out,"%f %f %f setrgbcolor ",red,green,blue); wmf_stream_printf (API,out,"fill "); } wmf_stream_printf (API,out,"\n"); wmf_stream_printf (API,out,"1 setlinewidth "); wmf_stream_printf (API,out,"[] 0 setdash "); rgb = WMF_BRUSH_COLOR (brush); red = (float) ((int) rgb->r) / 255; green = (float) ((int) rgb->g) / 255; blue = (float) ((int) rgb->b) / 255; wmf_stream_printf (API,out,"%f %f %f setrgbcolor\n",red,green,blue); switch (WMF_BRUSH_HATCH (brush)) { case HS_HORIZONTAL: wmf_stream_printf (API,out,"%f 5 %f { newpath dup %f exch moveto %f exch lineto stroke } for\n", bbox->TL.y,bbox->BR.y,bbox->TL.x,bbox->BR.x); break; case HS_VERTICAL: wmf_stream_printf (API,out,"%f 5 %f { newpath dup %f moveto %f lineto stroke } for\n", bbox->TL.x,bbox->BR.x,bbox->TL.y,bbox->BR.y); break; case HS_FDIAGONAL: wmf_stream_printf (API,out,"gsave %% HS_FDIAGONAL\n"); wmf_stream_printf (API,out,"%f %f translate -45 rotate ", bbox->TL.x-(bbox->BR.y-bbox->TL.y)/2,(bbox->TL.y+bbox->BR.y)/2); side = ((bbox->BR.x-bbox->TL.x) + (bbox->BR.y-bbox->TL.y)) / 1.41421356237309504880; wmf_stream_printf (API,out,"0 5 %f { newpath dup 0 moveto %f lineto stroke } for ", side,side); wmf_stream_printf (API,out,"grestore\n"); break; case HS_BDIAGONAL: wmf_stream_printf (API,out,"gsave %% HS_BDIAGONAL\n"); wmf_stream_printf (API,out,"%f %f translate -45 rotate ", bbox->TL.x-(bbox->BR.y-bbox->TL.y)/2,(bbox->TL.y+bbox->BR.y)/2); side = ((bbox->BR.x-bbox->TL.x) + (bbox->BR.y-bbox->TL.y)) / 1.41421356237309504880; wmf_stream_printf (API,out,"0 5 %f { newpath dup 0 exch moveto %f exch lineto stroke } for ", side,side); wmf_stream_printf (API,out,"grestore\n"); break; case HS_CROSS: wmf_stream_printf (API,out,"%f 5 %f { newpath dup %f exch moveto %f exch lineto stroke } for\n", bbox->TL.y,bbox->BR.y,bbox->TL.x,bbox->BR.x); wmf_stream_printf (API,out,"%f 5 %f { newpath dup %f moveto %f lineto stroke } for\n", bbox->TL.x,bbox->BR.x,bbox->TL.y,bbox->BR.y); break; case HS_DIAGCROSS: wmf_stream_printf (API,out,"gsave %% HS_DIAGCROSS\n"); wmf_stream_printf (API,out,"%f %f translate -45 rotate ", bbox->TL.x-(bbox->BR.y-bbox->TL.y)/2,(bbox->TL.y+bbox->BR.y)/2); side = ((bbox->BR.x-bbox->TL.x) + (bbox->BR.y-bbox->TL.y)) / 1.41421356237309504880; wmf_stream_printf (API,out,"0 5 %f { newpath dup 0 moveto %f lineto stroke } for ", side,side); wmf_stream_printf (API,out,"0 5 %f { newpath dup 0 exch moveto %f exch lineto stroke } for ", side,side); wmf_stream_printf (API,out,"grestore\n"); break; default: if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Unsupported brush/hatch style!"); } else { WMF_ERROR (API,"Unsupported brush/hatch style!"); API->err = wmf_E_Glitch; } break; } break; case BS_DIBPATTERN: bmp = WMF_BRUSH_BITMAP (brush); if (bmp->data == 0) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Attempt to fill with non-existent pattern!"); } else { WMF_ERROR (API,"Attempt to fill with non-existent pattern!"); API->err = wmf_E_Glitch; break; } } /* no break here - TODO: implement bitmap fill */ default: if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Unsupported brush style!"); /* no break here */ } else { WMF_ERROR (API,"Unsupported brush style!"); API->err = wmf_E_Glitch; break; } case BS_SOLID: rgb = WMF_BRUSH_COLOR (brush); red = (float) ((int) rgb->r) / 255; green = (float) ((int) rgb->g) / 255; blue = (float) ((int) rgb->b) / 255; wmf_stream_printf (API,out,"%f %f %f setrgbcolor fill\n",red,green,blue); break; } } /* Write out postscript path, *minus* the ultimate `stroke', then call eps_path_stroke * * Assumes that lopnStyle != PS_NULL */ static void eps_path_stroke (wmfAPI* API,wmfDC* dc,float linewidth) { wmf_eps_t* ddata = WMF_EPS_GetData (API); wmfStream* out = ddata->out; wmfPen* pen = 0; wmfRGB* rgb = 0; float red; float green; float blue; WMF_DEBUG (API,"~~~~~~~~eps_path_stroke"); if (out == 0) return; wmf_stream_printf (API,out,"\n"); wmf_stream_printf (API,out,"%f setlinewidth ",linewidth); pen = WMF_DC_PEN (dc); rgb = WMF_PEN_COLOR (pen); red = (float) ((int) rgb->r) / 255; green = (float) ((int) rgb->g) / 255; blue = (float) ((int) rgb->b) / 255; wmf_stream_printf (API,out,"%f %f %f setrgbcolor ",red,green,blue); switch (WMF_PEN_ENDCAP (pen)) { case PS_ENDCAP_SQUARE: wmf_stream_printf (API,out,"2 setlinecap "); break; case PS_ENDCAP_ROUND: wmf_stream_printf (API,out,"1 setlinecap "); break; case PS_ENDCAP_FLAT: default: wmf_stream_printf (API,out,"0 setlinecap "); break; } switch (WMF_PEN_JOIN (pen)) { case PS_JOIN_BEVEL: wmf_stream_printf (API,out,"2 setlinejoin "); break; case PS_JOIN_ROUND: wmf_stream_printf (API,out,"1 setlinejoin "); break; case PS_JOIN_MITER: default: wmf_stream_printf (API,out,"0 setlinejoin "); break; } switch (WMF_PEN_STYLE (pen)) { case PS_DASH: /* DASH_LINE */ wmf_stream_printf (API,out,"[ %f %f ] 0 setdash ", linewidth*10,linewidth*10); break; case PS_ALTERNATE: case PS_DOT: /* DOTTED_LINE */ wmf_stream_printf (API,out,"[ %f %f ] 0 setdash ", linewidth,linewidth*2); break; case PS_DASHDOT: /* DASH_DOT_LINE */ wmf_stream_printf (API,out,"[ %f %f %f %f ] 0 setdash ", linewidth*10,linewidth*2,linewidth,linewidth*2); break; case PS_DASHDOTDOT: /* DASH_2_DOTS_LINE */ wmf_stream_printf (API,out,"[ %f %f %f %f %f %f ] 0 setdash ", linewidth*10,linewidth*2,linewidth,linewidth*2,linewidth,linewidth*2); break; case PS_INSIDEFRAME: /* There is nothing to do in this case... */ case PS_SOLID: default: wmf_stream_printf (API,out,"[] 0 setdash "); break; } wmf_stream_printf (API,out,"stroke\n"); } #endif /* ! WITHOUT_LAYERS */ libwmf-0.2.8.4/src/ipa/fig.c0000644000077100007710000002332107367010430014755 0ustar fjffjf00000000000000/* libwmf (ipa/fig.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include #include #ifdef HAVE_TIME_H #include #endif /* HAVE_TIME_H */ #include "wmfdefs.h" #ifndef WITHOUT_LAYERS #include "libwmf/fig.h" static void wmf_fig_device_open (wmfAPI*); static void wmf_fig_device_close (wmfAPI*); static void wmf_fig_device_begin (wmfAPI*); static void wmf_fig_device_end (wmfAPI*); static void wmf_fig_flood_interior (wmfAPI*,wmfFlood_t*); static void wmf_fig_flood_exterior (wmfAPI*,wmfFlood_t*); static void wmf_fig_draw_pixel (wmfAPI*,wmfDrawPixel_t*); static void wmf_fig_draw_pie (wmfAPI*,wmfDrawArc_t*); static void wmf_fig_draw_chord (wmfAPI*,wmfDrawArc_t*); static void wmf_fig_draw_arc (wmfAPI*,wmfDrawArc_t*); static void wmf_fig_draw_ellipse (wmfAPI*,wmfDrawArc_t*); static void wmf_fig_draw_line (wmfAPI*,wmfDrawLine_t*); static void wmf_fig_poly_line (wmfAPI*,wmfPolyLine_t*); static void wmf_fig_draw_polygon (wmfAPI*,wmfPolyLine_t*); static void wmf_fig_draw_rectangle (wmfAPI*,wmfDrawRectangle_t*); static void wmf_fig_rop_draw (wmfAPI*,wmfROP_Draw_t*); static void wmf_fig_bmp_draw (wmfAPI*,wmfBMP_Draw_t*); static void wmf_fig_bmp_read (wmfAPI*,wmfBMP_Read_t*); static void wmf_fig_bmp_free (wmfAPI*,wmfBMP*); static void wmf_fig_draw_text (wmfAPI*,wmfDrawText_t*); static void wmf_fig_udata_init (wmfAPI*,wmfUserData_t*); static void wmf_fig_udata_copy (wmfAPI*,wmfUserData_t*); static void wmf_fig_udata_set (wmfAPI*,wmfUserData_t*); static void wmf_fig_udata_free (wmfAPI*,wmfUserData_t*); static void wmf_fig_region_frame (wmfAPI*,wmfPolyRectangle_t*); static void wmf_fig_region_paint (wmfAPI*,wmfPolyRectangle_t*); static void wmf_fig_region_clip (wmfAPI*,wmfPolyRectangle_t*); #include "ipa/fig.h" #include "ipa/fig/bmp.h" #include "ipa/fig/color.h" #include "ipa/fig/device.h" #include "ipa/fig/draw.h" #include "ipa/fig/font.h" #include "ipa/fig/region.h" #endif /* ! WITHOUT_LAYERS */ void wmf_fig_function (wmfAPI* API) { #ifndef WITHOUT_LAYERS wmf_fig_t* ddata = 0; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; fig_t* fig = 0; int i; if ((API->flags & API_STANDARD_INTERFACE) == 0) { WMF_ERROR (API,"Can't use this device layer with 'lite' interface!"); API->err = wmf_E_DeviceError; return; } /* IPA function reference links */ FR->device_open = wmf_fig_device_open; FR->device_close = wmf_fig_device_close; FR->device_begin = wmf_fig_device_begin; FR->device_end = wmf_fig_device_end; FR->flood_interior = wmf_fig_flood_interior; FR->flood_exterior = wmf_fig_flood_exterior; FR->draw_pixel = wmf_fig_draw_pixel; FR->draw_pie = wmf_fig_draw_pie; FR->draw_chord = wmf_fig_draw_chord; FR->draw_arc = wmf_fig_draw_arc; FR->draw_ellipse = wmf_fig_draw_ellipse; FR->draw_line = wmf_fig_draw_line; FR->poly_line = wmf_fig_poly_line; FR->draw_polygon = wmf_fig_draw_polygon; FR->draw_rectangle = wmf_fig_draw_rectangle; FR->rop_draw = wmf_fig_rop_draw; FR->bmp_draw = wmf_fig_bmp_draw; FR->bmp_read = wmf_fig_bmp_read; FR->bmp_free = wmf_fig_bmp_free; FR->draw_text = wmf_fig_draw_text; FR->udata_init = wmf_fig_udata_init; FR->udata_copy = wmf_fig_udata_copy; FR->udata_set = wmf_fig_udata_set; FR->udata_free = wmf_fig_udata_free; FR->region_frame = wmf_fig_region_frame; FR->region_paint = wmf_fig_region_paint; FR->region_clip = wmf_fig_region_clip; /* Allocate device data structure */ ddata = (wmf_fig_t*) wmf_malloc (API,sizeof (wmf_fig_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; /* Device data defaults */ ddata->fig_data = (void*) wmf_malloc (API,sizeof (fig_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } fig = (fig_t*) ddata->fig_data; for (i = 0; i < NUMPATTERNS; i++) { fig->equiv[i] = 0; } ddata->bbox.TL.x = 0; ddata->bbox.TL.y = 0; ddata->bbox.BR.x = 0; ddata->bbox.BR.y = 0; ddata->out = 0; ddata->Title = 0; ddata->Creator = 0; ddata->Date = 0; ddata->For = 0; ddata->fig_x = 0; ddata->fig_y = 0; ddata->fig_width = 0; ddata->fig_height = 0; ddata->format = wmf_P_A4; ddata->dpi = 1200; ddata->depth = 999; ddata->ddec = 1; ddata->image.context = 0; ddata->image.name = 0; ddata->flags = 0; #ifdef HAVE_LIBPNG ddata->flags |= WMF_FIG_SUPPORTS_PNG; #endif #ifdef HAVE_LIBJPEG ddata->flags |= WMF_FIG_SUPPORTS_JPEG; #endif /* Add the 32 standard colors at the head of the IPA color table: */ fig_std_colors (API); #else /* ! WITHOUT_LAYERS */ API->device_data = 0; API->err = wmf_E_DeviceError; #endif /* ! WITHOUT_LAYERS */ } #ifndef WITHOUT_LAYERS static void wmf_fig_udata_init (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]udata_init"); } static void wmf_fig_udata_copy (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]udata_copy"); } static void wmf_fig_udata_set (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]udata_set"); } static void wmf_fig_udata_free (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_fig_t* ddata = WMF_FIG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[fig_]udata_free"); } static int fig_brushstyle (wmfAPI* API,wmfDC* dc) { wmfBrush* brush = WMF_DC_BRUSH (dc); wmfBMP* bmp = 0; int fillstyle = -1; /* Not filled */ if (WMF_BRUSH_STYLE (brush) == BS_NULL) { return (fillstyle); } switch (WMF_BRUSH_STYLE (brush)) { case BS_NULL: fillstyle = -1; break; case BS_SOLID: fillstyle = 20; break; case BS_HATCHED: switch (WMF_BRUSH_HATCH (brush)) { case HS_HORIZONTAL: fillstyle = 49; break; case HS_VERTICAL: fillstyle = 50; break; case HS_FDIAGONAL: fillstyle = 44; break; case HS_BDIAGONAL: fillstyle = 45; break; case HS_CROSS: fillstyle = 51; break; case HS_DIAGCROSS: fillstyle = 46; break; default: fillstyle = 20; wmf_printf (API,"Unsupported Hatching: %d\n",(int) (brush->lbHatch)); break; } break; case BS_DIBPATTERN: WMF_DEBUG (API,"Attempt to fill with bitmap! Using random pattern instead..."); bmp = WMF_BRUSH_BITMAP (brush); fillstyle = fig_bmp_pattern (API,bmp->data); break; default: wmf_printf (API,"Unsupported Brush Style: %d\n",(int) (brush->lbStyle)); break; } return (fillstyle); } static int fig_linestyle (wmfAPI* API,wmfDC* dc) { wmfPen* pen = WMF_DC_PEN (dc); int linestyle = SOLID_LINE; switch (WMF_PEN_STYLE (pen)) { case PS_DASH: /* DASH_LINE */ linestyle = DASH_LINE; break; case PS_ALTERNATE: case PS_DOT: /* DOTTED_LINE */ linestyle = DOTTED_LINE; break; case PS_DASHDOT: /* DASH_DOT_LINE */ linestyle = DASH_DOT_LINE; break; case PS_DASHDOTDOT: /* DASH_2_DOTS_LINE */ linestyle = DASH_2_DOTS_LINE; break; case PS_INSIDEFRAME: /* There is nothing to do in this case... */ case PS_SOLID: default: linestyle = SOLID_LINE; break; } return (linestyle); } static int fig_joinstyle (wmfAPI* API,wmfDC* dc) { wmfPen* pen = WMF_DC_PEN (dc); int joinstyle = JOIN_ROUND; switch (WMF_PEN_JOIN (pen)) { case PS_JOIN_BEVEL: joinstyle = JOIN_BEVEL; break; case PS_JOIN_MITER: joinstyle = JOIN_MITER; break; case PS_JOIN_ROUND: default: joinstyle = JOIN_ROUND; break; } return (joinstyle); } static int fig_capstyle (wmfAPI* API,wmfDC* dc) { wmfPen* pen = WMF_DC_PEN (dc); int capstyle = CAP_ROUND; switch (WMF_PEN_ENDCAP (pen)) { case PS_ENDCAP_SQUARE: capstyle = CAP_PROJECT; break; case PS_ENDCAP_FLAT: capstyle = CAP_PROJECT; break; case PS_ENDCAP_ROUND: default: capstyle = CAP_ROUND; break; } return (capstyle); } static void fig_set_style (wmfAPI* API,wmfDC* dc,figDC* fig) { wmf_fig_t* ddata = WMF_FIG_GetData (API); wmfBrush* brush = WMF_DC_BRUSH (dc); wmfPen* pen = WMF_DC_PEN (dc); fig->pen_style = 0; fig->thickness = (fig_height (API,WMF_PEN_HEIGHT (pen)) * 72) / ddata->dpi; fig->area_fill = fig_brushstyle (API,dc); fig->line_style = fig_linestyle (API,dc); fig->join_style = fig_joinstyle (API,dc); fig->cap_style = fig_capstyle (API,dc); fig->radius = 5; fig->forward_arrow = 0; fig->backward_arrow = 0; fig->pen_color = wmf_ipa_color_index (API,WMF_PEN_COLOR (pen)); fig->fill_color = wmf_ipa_color_index (API,WMF_BRUSH_COLOR (brush)); /* If a pattern is specified, the given fill_color should be used to * render its lines instead of the given pen_color, and the background * should be white. Without this, Xfig would use fill_color to fill * the space between pattern lines drawn in pen_color, which is wrong. */ if (fig->area_fill > 40) { fig->pen_color = fig->fill_color; fig->fill_color = 7; } else { fig->thickness++; } fig->style_val = 5.0; } #endif /* ! WITHOUT_LAYERS */ libwmf-0.2.8.4/src/ipa/svg.c0000644000077100007710000003716107760372156015033 0ustar fjffjf00000000000000/* libwmf (ipa/svg.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include #include #include "wmfdefs.h" #ifndef WITHOUT_LAYERS #include "libwmf/svg.h" static void wmf_svg_device_open (wmfAPI*); static void wmf_svg_device_close (wmfAPI*); static void wmf_svg_device_begin (wmfAPI*); static void wmf_svg_device_end (wmfAPI*); static void wmf_svg_flood_interior (wmfAPI*,wmfFlood_t*); static void wmf_svg_flood_exterior (wmfAPI*,wmfFlood_t*); static void wmf_svg_draw_pixel (wmfAPI*,wmfDrawPixel_t*); static void wmf_svg_draw_pie (wmfAPI*,wmfDrawArc_t*); static void wmf_svg_draw_chord (wmfAPI*,wmfDrawArc_t*); static void wmf_svg_draw_arc (wmfAPI*,wmfDrawArc_t*); static void wmf_svg_draw_ellipse (wmfAPI*,wmfDrawArc_t*); static void wmf_svg_draw_line (wmfAPI*,wmfDrawLine_t*); static void wmf_svg_poly_line (wmfAPI*,wmfPolyLine_t*); static void wmf_svg_draw_polygon (wmfAPI*,wmfPolyLine_t*); static void wmf_svg_draw_polypolygon(wmfAPI * API, wmfPolyPoly_t* polypolygon); static void wmf_svg_draw_rectangle (wmfAPI*,wmfDrawRectangle_t*); static void wmf_svg_rop_draw (wmfAPI*,wmfROP_Draw_t*); static void wmf_svg_bmp_draw (wmfAPI*,wmfBMP_Draw_t*); static void wmf_svg_bmp_read (wmfAPI*,wmfBMP_Read_t*); static void wmf_svg_bmp_free (wmfAPI*,wmfBMP*); static void wmf_svg_draw_text (wmfAPI*,wmfDrawText_t*); static void wmf_svg_udata_init (wmfAPI*,wmfUserData_t*); static void wmf_svg_udata_copy (wmfAPI*,wmfUserData_t*); static void wmf_svg_udata_set (wmfAPI*,wmfUserData_t*); static void wmf_svg_udata_free (wmfAPI*,wmfUserData_t*); static void wmf_svg_region_frame (wmfAPI*,wmfPolyRectangle_t*); static void wmf_svg_region_paint (wmfAPI*,wmfPolyRectangle_t*); static void wmf_svg_region_clip (wmfAPI*,wmfPolyRectangle_t*); #include "ipa/svg.h" #include "ipa/svg/bmp.h" #include "ipa/svg/device.h" #include "ipa/svg/draw.h" #include "ipa/svg/region.h" #endif /* ! WITHOUT_LAYERS */ void wmf_svg_function (wmfAPI* API) { #ifndef WITHOUT_LAYERS wmf_svg_t* ddata = 0; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; if ((API->flags & API_STANDARD_INTERFACE) == 0) { WMF_ERROR (API,"Can't use this device layer with 'lite' interface!"); API->err = wmf_E_DeviceError; return; } /* IPA function reference links */ FR->device_open = wmf_svg_device_open; FR->device_close = wmf_svg_device_close; FR->device_begin = wmf_svg_device_begin; FR->device_end = wmf_svg_device_end; FR->flood_interior = wmf_svg_flood_interior; FR->flood_exterior = wmf_svg_flood_exterior; FR->draw_pixel = wmf_svg_draw_pixel; FR->draw_pie = wmf_svg_draw_pie; FR->draw_chord = wmf_svg_draw_chord; FR->draw_arc = wmf_svg_draw_arc; FR->draw_ellipse = wmf_svg_draw_ellipse; FR->draw_line = wmf_svg_draw_line; FR->poly_line = wmf_svg_poly_line; FR->draw_polygon = wmf_svg_draw_polygon; FR->draw_polypolygon = wmf_svg_draw_polypolygon; FR->draw_rectangle = wmf_svg_draw_rectangle; FR->rop_draw = wmf_svg_rop_draw; FR->bmp_draw = wmf_svg_bmp_draw; FR->bmp_read = wmf_svg_bmp_read; FR->bmp_free = wmf_svg_bmp_free; FR->draw_text = wmf_svg_draw_text; FR->udata_init = wmf_svg_udata_init; FR->udata_copy = wmf_svg_udata_copy; FR->udata_set = wmf_svg_udata_set; FR->udata_free = wmf_svg_udata_free; FR->region_frame = wmf_svg_region_frame; FR->region_paint = wmf_svg_region_paint; FR->region_clip = wmf_svg_region_clip; /* Allocate device data structure */ ddata = (wmf_svg_t*) wmf_malloc (API,sizeof (wmf_svg_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; /* Device data defaults */ ddata->bbox.TL.x = 0; ddata->bbox.TL.y = 0; ddata->bbox.BR.x = 0; ddata->bbox.BR.y = 0; ddata->out = 0; ddata->Description = 0; ddata->width = 0; ddata->height = 0; ddata->image.context = 0; ddata->image.name = 0; ddata->flags = 0; #else /* ! WITHOUT_LAYERS */ API->device_data = 0; API->err = wmf_E_DeviceError; #endif /* ! WITHOUT_LAYERS */ } #ifndef WITHOUT_LAYERS static void wmf_svg_draw_text (wmfAPI* API,wmfDrawText_t* draw_text) { wmf_svg_t* ddata = WMF_SVG_GetData (API); svgFont font; svgPoint pt; float font_height; float font_ratio; float sin_theta; float cos_theta; double theta; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]draw_text"); if (out == 0) return; pt = svg_translate (API,draw_text->pt); font_height = svg_height (API,(float) draw_text->font_height); font_ratio = svg_width (API,(float) (draw_text->font_height * draw_text->font_ratio)); font_ratio /= font_height; theta = - WMF_TEXT_ANGLE (draw_text->dc->font); sin_theta = (float) sin (theta); cos_theta = (float) cos (theta); /* TODO: Scaling? */ /* TODO: Background color? */ /* TODO: string-length?? */ wmf_stream_printf (API,out,"dc))); wmf_stream_printf (API,out,"font-family:%s; ",font.family); wmf_stream_printf (API,out,"font-style:%s; ", font.style); wmf_stream_printf (API,out,"font-weight:%s; ",font.weight); wmf_stream_printf (API,out,"font-size:%f; ",font_height); wmf_stream_printf (API,out,"fill:%s",svg_color_closest (WMF_DC_TEXTCOLOR (draw_text->dc))); /* wmf_stream_printf (API,out,"\">",(float) (theta * 180 / PI)); */ wmf_stream_printf (API,out,"\" transform=\"matrix("); wmf_stream_printf (API,out,"%f %f %f %f ",cos_theta,sin_theta,-sin_theta,cos_theta); wmf_stream_printf (API,out,"%f %f)\"\n\t>",pt.x,pt.y); wmf_stream_printf (API,out,"%s",draw_text->str); /* wmf_stream_printf (API,out,"\n"); */ wmf_stream_printf (API,out,"\n"); } static void wmf_svg_udata_init (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]udata_init"); } static void wmf_svg_udata_copy (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]udata_copy"); } static void wmf_svg_udata_set (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]udata_set"); } static void wmf_svg_udata_free (wmfAPI* API,wmfUserData_t* user_data) { /* wmf_svg_t* ddata = WMF_SVG_GetData (API); */ WMF_DEBUG (API,"~~~~~~~~wmf_[svg_]udata_free"); } static svgFont svg_font (char* ps_name) { svgFont* font = svg_known_fonts; while (font->ps_name) { if (strcmp (ps_name,font->ps_name) == 0) break; font++; } return (*font); } static char* svg_color_closest (wmfRGB* rgb) { int i; int i_best; int d; int d_r; int d_g; int d_b; int d_best; i_best = 0; d_r = (int) rgb->r - (int) svg_named_color[i_best].r; d_r = ABS (d_r); d_g = (int) rgb->g - (int) svg_named_color[i_best].g; d_g = ABS (d_g); d_b = (int) rgb->b - (int) svg_named_color[i_best].b; d_b = ABS (d_b); d_best = MAX (d_r,d_g); d_best = MAX (d_b,d_best); for (i = 1; i < 147; i++) { d_r = (int) rgb->r - (int) svg_named_color[i].r; d_r = ABS (d_r); d_g = (int) rgb->g - (int) svg_named_color[i].g; d_g = ABS (d_g); d_b = (int) rgb->b - (int) svg_named_color[i].b; d_b = ABS (d_b); d = MAX (d_r,d_g); d = MAX (d_b,d); if (d == 0) { i_best = i; break; } if (d < d_best) { i_best = i; d_best = d; } } return (svg_named_color[i_best].name); } static void svg_style_fill (wmfAPI* API,wmfDC* dc) { wmf_svg_t* ddata = WMF_SVG_GetData (API); wmfRGB* bg_color; wmfRGB* brush_color; wmfBMP* brush_bmp; wmfBrush* brush; unsigned int fill_opaque; unsigned int fill_polyfill; unsigned int fill_ROP; unsigned int brush_style; unsigned int brush_hatch; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~svg_style_fill"); if (out == 0) return; fill_opaque = (unsigned int) WMF_DC_OPAQUE (dc); fill_polyfill = (unsigned int) WMF_DC_POLYFILL (dc); fill_ROP = (unsigned int) WMF_DC_ROP (dc); bg_color = WMF_DC_BACKGROUND (dc); brush = WMF_DC_BRUSH (dc); brush_style = (unsigned int) WMF_BRUSH_STYLE (brush); brush_hatch = (unsigned int) WMF_BRUSH_HATCH (brush); brush_color = WMF_BRUSH_COLOR (brush); brush_bmp = WMF_BRUSH_BITMAP (brush); if (brush_style == BS_NULL) { wmf_stream_printf (API,out,"fill:none"); return; } if (fill_opaque) { wmf_stream_printf (API,out,"fill-opacity:1.0; "); } else { wmf_stream_printf (API,out,"fill-opacity:0.5; "); /* semi-transparent... ?? */ } switch (fill_polyfill) /* Is this correct ?? */ { case WINDING: wmf_stream_printf (API,out,"fill-rule:nonzero; "); break; case ALTERNATE: default: wmf_stream_printf (API,out,"fill-rule:evenodd; "); break; } switch (brush_style) { #ifdef WRITE_EPS_NOT_SVG /* float side; */ case BS_HATCHED: fputs ("clip ",out); if (dc->bgmode != TRANSPARENT) { rgb = dc->bgcolor; red = (float) ((int) rgb.r) / 255; green = (float) ((int) rgb.g) / 255; blue = (float) ((int) rgb.b) / 255; fprintf (out,"%f %f %f setrgbcolor ",red,green,blue); fputs ("fill ",out); } fputs ("\n",out); fputs ("1 setlinewidth ",out); fputs ("[] 0 setdash ",out); rgb = brush->lbColor; red = (float) ((int) rgb.r) / 255; green = (float) ((int) rgb.g) / 255; blue = (float) ((int) rgb.b) / 255; fprintf (out,"%f %f %f setrgbcolor\n",red,green,blue); switch (brush->lbHatch) { case HS_HORIZONTAL: fprintf (out,"%f 5 %f { newpath dup %f exch moveto %f exch lineto stroke } for\n", bbox->TL.y,bbox->BR.y,bbox->TL.x,bbox->BR.x); break; case HS_VERTICAL: fprintf (out,"%f 5 %f { newpath dup %f moveto %f lineto stroke } for\n", bbox->TL.x,bbox->BR.x,bbox->TL.y,bbox->BR.y); break; case HS_FDIAGONAL: fputs ("gsave % HS_FDIAGONAL\n",out); fprintf (out,"%f %f translate -45 rotate ", bbox->TL.x-(bbox->BR.y-bbox->TL.y)/2,(bbox->TL.y+bbox->BR.y)/2); side = ((bbox->BR.x-bbox->TL.x) + (bbox->BR.y-bbox->TL.y)) / 1.41421356237309504880; fprintf (out,"0 5 %f { newpath dup 0 moveto %f lineto stroke } for ", side,side); fputs ("grestore\n",out); break; case HS_BDIAGONAL: fputs ("gsave % HS_BDIAGONAL\n",out); fprintf (out,"%f %f translate -45 rotate ", bbox->TL.x-(bbox->BR.y-bbox->TL.y)/2,(bbox->TL.y+bbox->BR.y)/2); side = ((bbox->BR.x-bbox->TL.x) + (bbox->BR.y-bbox->TL.y)) / 1.41421356237309504880; fprintf (out,"0 5 %f { newpath dup 0 exch moveto %f exch lineto stroke } for ", side,side); fputs ("grestore\n",out); break; case HS_CROSS: fprintf (out,"%f 5 %f { newpath dup %f exch moveto %f exch lineto stroke } for\n", bbox->TL.y,bbox->BR.y,bbox->TL.x,bbox->BR.x); fprintf (out,"%f 5 %f { newpath dup %f moveto %f lineto stroke } for\n", bbox->TL.x,bbox->BR.x,bbox->TL.y,bbox->BR.y); break; case HS_DIAGCROSS: fputs ("gsave % HS_DIAGCROSS\n",out); fprintf (out,"%f %f translate -45 rotate ", bbox->TL.x-(bbox->BR.y-bbox->TL.y)/2,(bbox->TL.y+bbox->BR.y)/2); side = ((bbox->BR.x-bbox->TL.x) + (bbox->BR.y-bbox->TL.y)) / 1.41421356237309504880; fprintf (out,"0 5 %f { newpath dup 0 moveto %f lineto stroke } for ", side,side); fprintf (out,"0 5 %f { newpath dup 0 exch moveto %f exch lineto stroke } for ", side,side); fputs ("grestore\n",out); break; default: if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Unsupported brush/hatch style!"); } else { WMF_ERROR (API,"Unsupported brush/hatch style!"); API->err = wmf_E_Glitch; } break; } break; #endif /* WRITE_EPS_NOT_SVG */ case BS_DIBPATTERN: if (brush_bmp->data == 0) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Attempt to fill with non-existent pattern!"); } else { WMF_ERROR (API,"Attempt to fill with non-existent pattern!"); API->err = wmf_E_Glitch; break; } } /* no break here - TODO: implement bitmap fill */ default: if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Unsupported brush style!"); /* no break here */ } else { WMF_ERROR (API,"Unsupported brush style!"); API->err = wmf_E_Glitch; break; } case BS_SOLID: break; } wmf_stream_printf (API,out,"fill:%s",svg_color_closest (brush_color)); } static void svg_style_stroke (wmfAPI* API,wmfDC* dc) { wmf_svg_t* ddata = WMF_SVG_GetData (API); wmfPen* pen; wmfRGB* pen_color; float pen_width; unsigned int pen_style; unsigned int pen_endcap; unsigned int pen_join; unsigned int pen_type; wmfStream* out = ddata->out; WMF_DEBUG (API,"~~~~~~~~svg_style_stroke"); if (out == 0) return; pen = WMF_DC_PEN (dc); pen_color = WMF_PEN_COLOR (pen); pen_width = ( svg_width (API,(float) WMF_PEN_WIDTH (pen)) + svg_height (API,(float) WMF_PEN_HEIGHT (pen)) ) / 2; pen_style = (unsigned int) WMF_PEN_STYLE (pen); pen_endcap = (unsigned int) WMF_PEN_ENDCAP (pen); pen_join = (unsigned int) WMF_PEN_JOIN (pen); pen_type = (unsigned int) WMF_PEN_TYPE (pen); if (pen_style == PS_NULL) { wmf_stream_printf (API,out,"stroke:none"); return; } wmf_stream_printf (API,out,"stroke-width:%f; ",MAX (0,pen_width)); switch (pen_endcap) { case PS_ENDCAP_SQUARE: wmf_stream_printf (API,out,"stroke-linecap:square; "); break; case PS_ENDCAP_ROUND: wmf_stream_printf (API,out,"stroke-linecap:round; "); break; case PS_ENDCAP_FLAT: default: wmf_stream_printf (API,out,"stroke-linecap:butt; "); break; } switch (pen_join) { case PS_JOIN_BEVEL: wmf_stream_printf (API,out,"stroke-linejoin:bevel; "); break; case PS_JOIN_ROUND: wmf_stream_printf (API,out,"stroke-linejoin:round; "); break; case PS_JOIN_MITER: default: wmf_stream_printf (API,out,"stroke-linejoin:miter; "); break; } switch (pen_style) { case PS_DASH: /* DASH_LINE */ wmf_stream_printf (API,out,"stroke-dasharray:%f %f; ", pen_width*10,pen_width*10); break; case PS_ALTERNATE: case PS_DOT: /* DOTTED_LINE */ wmf_stream_printf (API,out,"stroke-dasharray:%f %f; ", pen_width,pen_width*2); break; case PS_DASHDOT: /* DASH_DOT_LINE */ wmf_stream_printf (API,out,"stroke-dasharray:%f %f %f %f; ", pen_width*10,pen_width*2,pen_width,pen_width*2); break; case PS_DASHDOTDOT: /* DASH_2_DOTS_LINE */ wmf_stream_printf (API,out,"stroke-dasharray:%f %f %f %f %f %f; ", pen_width*10,pen_width*2,pen_width,pen_width*2,pen_width,pen_width*2); break; case PS_INSIDEFRAME: /* There is nothing to do in this case... */ case PS_SOLID: default: wmf_stream_printf (API,out,"stroke-dasharray:none; "); break; } wmf_stream_printf (API,out,"stroke:%s",svg_color_closest (pen_color)); } #endif /* ! WITHOUT_LAYERS */ libwmf-0.2.8.4/src/ipa/xgd.c0000644000077100007710000003113107575412341015000 0ustar fjffjf00000000000000/* libwmf (ipa/gd.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include "wmfdefs.h" #ifdef HAVE_GD #include "libwmf/gd.h" static void wmf_gd_device_open (wmfAPI*); static void wmf_gd_device_close (wmfAPI*); static void wmf_gd_device_begin (wmfAPI*); static void wmf_gd_device_end (wmfAPI*); static void wmf_gd_flood_interior (wmfAPI*,wmfFlood_t*); static void wmf_gd_flood_exterior (wmfAPI*,wmfFlood_t*); static void wmf_gd_draw_pixel (wmfAPI*,wmfDrawPixel_t*); static void wmf_gd_draw_pie (wmfAPI*,wmfDrawArc_t*); static void wmf_gd_draw_chord (wmfAPI*,wmfDrawArc_t*); static void wmf_gd_draw_arc (wmfAPI*,wmfDrawArc_t*); static void wmf_gd_draw_ellipse (wmfAPI*,wmfDrawArc_t*); static void wmf_gd_draw_line (wmfAPI*,wmfDrawLine_t*); static void wmf_gd_poly_line (wmfAPI*,wmfPolyLine_t*); static void wmf_gd_draw_polygon (wmfAPI*,wmfPolyLine_t*); static void wmf_gd_draw_rectangle (wmfAPI*,wmfDrawRectangle_t*); static void wmf_gd_rop_draw (wmfAPI*,wmfROP_Draw_t*); static void wmf_gd_bmp_draw (wmfAPI*,wmfBMP_Draw_t*); static void wmf_gd_bmp_read (wmfAPI*,wmfBMP_Read_t*); static void wmf_gd_bmp_free (wmfAPI*,wmfBMP*); static void wmf_gd_draw_text (wmfAPI*,wmfDrawText_t*); static void wmf_gd_udata_init (wmfAPI*,wmfUserData_t*); static void wmf_gd_udata_copy (wmfAPI*,wmfUserData_t*); static void wmf_gd_udata_set (wmfAPI*,wmfUserData_t*); static void wmf_gd_udata_free (wmfAPI*,wmfUserData_t*); static void wmf_gd_region_frame (wmfAPI*,wmfPolyRectangle_t*); static void wmf_gd_region_paint (wmfAPI*,wmfPolyRectangle_t*); static void wmf_gd_region_clip (wmfAPI*,wmfPolyRectangle_t*); #include "ipa/xgd.h" #include "ipa/xgd/bmp.h" #include "ipa/xgd/device.h" #include "ipa/xgd/draw.h" #include "ipa/xgd/font.h" #include "ipa/xgd/region.h" #endif /* HAVE_GD */ void wmf_gd_function (wmfAPI* API) { #ifdef HAVE_GD wmf_gd_t* ddata = 0; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; gd_t* gd = 0; if ((API->flags & API_STANDARD_INTERFACE) == 0) { WMF_ERROR (API,"Can't use this device layer with 'lite' interface!"); API->err = wmf_E_DeviceError; return; } /* IPA function reference links */ FR->device_open = wmf_gd_device_open; FR->device_close = wmf_gd_device_close; FR->device_begin = wmf_gd_device_begin; FR->device_end = wmf_gd_device_end; FR->flood_interior = wmf_gd_flood_interior; FR->flood_exterior = wmf_gd_flood_exterior; FR->draw_pixel = wmf_gd_draw_pixel; FR->draw_pie = wmf_gd_draw_pie; FR->draw_chord = wmf_gd_draw_chord; FR->draw_arc = wmf_gd_draw_arc; FR->draw_ellipse = wmf_gd_draw_ellipse; FR->draw_line = wmf_gd_draw_line; FR->poly_line = wmf_gd_poly_line; FR->draw_polygon = wmf_gd_draw_polygon; FR->draw_rectangle = wmf_gd_draw_rectangle; FR->rop_draw = wmf_gd_rop_draw; FR->bmp_draw = wmf_gd_bmp_draw; FR->bmp_read = wmf_gd_bmp_read; FR->bmp_free = wmf_gd_bmp_free; FR->draw_text = wmf_gd_draw_text; FR->udata_init = wmf_gd_udata_init; FR->udata_copy = wmf_gd_udata_copy; FR->udata_set = wmf_gd_udata_set; FR->udata_free = wmf_gd_udata_free; FR->region_frame = wmf_gd_region_frame; FR->region_paint = wmf_gd_region_paint; FR->region_clip = wmf_gd_region_clip; /* Allocate device data structure */ ddata = (wmf_gd_t*) wmf_malloc (API,sizeof (wmf_gd_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; /* Device data defaults */ ddata->type = wmf_gd_png; ddata->gd_data = (void*) wmf_malloc (API,sizeof (gd_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } gd = (gd_t*) ddata->gd_data; gd->image = 0; ddata->file = 0; ddata->memory = 0; ddata->sink.context = 0; ddata->sink.function = 0; ddata->gd_image = 0; ddata->width = 0; ddata->height = 0; ddata->bbox.TL.x = 0; ddata->bbox.TL.y = 0; ddata->bbox.BR.x = 0; ddata->bbox.BR.y = 0; ddata->flags = 0; #ifdef HAVE_LIBPNG ddata->flags |= WMF_GD_SUPPORTS_PNG; #endif #ifdef HAVE_LIBJPEG ddata->flags |= WMF_GD_SUPPORTS_JPEG; #endif #else /* HAVE_GD */ API->device_data = 0; API->err = wmf_E_DeviceError; #endif /* HAVE_GD */ } #ifdef HAVE_GD static void wmf_gd_udata_init (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]udata_init"); } static void wmf_gd_udata_copy (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]udata_copy"); } static void wmf_gd_udata_set (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]udata_set"); } static void wmf_gd_udata_free (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_gd_t* ddata = WMF_GD_GetData (API); */ /* gd_t* gd = (gd_t*) ddata->gd_data; */ WMF_DEBUG (API,"wmf_[gd_]udata_free"); } static int setbrushstyle (wmfAPI* API,wmfDC* dc) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; wmfBrush* brush = 0; wmfBMP* bmp = 0; wmfRGB* rgb = 0; wmfRGB pixel; int i; int j; int fg; int bg; int brushstyle; int opacity; unsigned int x; unsigned int y; unsigned char* bits = 0; brush = WMF_DC_BRUSH (dc); rgb = WMF_BRUSH_COLOR (brush); brushstyle = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); switch (WMF_BRUSH_STYLE (brush)) { case BS_NULL: WMF_ERROR (API,"Attempt to set null fill-style!"); API->err = wmf_E_Glitch; break; case BS_HATCHED: switch (WMF_BRUSH_HATCH (brush)) { case HS_HORIZONTAL: bits = HS_HORIZONTAL_bits; break; case HS_VERTICAL: bits = HS_VERTICAL_bits; break; case HS_FDIAGONAL: bits = HS_FDIAGONAL_bits; break; case HS_BDIAGONAL: bits = HS_BDIAGONAL_bits; break; case HS_CROSS: bits = HS_CROSS_bits; break; case HS_DIAGCROSS: bits = HS_DIAGCROSS_bits; break; default: if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Unsupported brush/hatch style!"); bits = HS_DIAGCROSS_bits; } else { WMF_ERROR (API,"Unsupported brush/hatch style!"); API->err = wmf_E_Glitch; bits = 0; } break; } if (bits == 0) break; if (gd->brush.hatch == 0) gd->brush.hatch = gdImageCreateTrueColor (8,8); if (gd->brush.hatch) { rgb = WMF_DC_BACKGROUND (dc); bg = gdImageColorResolve (gd->brush.hatch,rgb->r,rgb->g,rgb->b); if (!WMF_DC_OPAQUE (dc)) { gdImageColorTransparent (gd->brush.hatch,bg); } rgb = WMF_BRUSH_COLOR (brush); fg = gdImageColorResolve (gd->brush.hatch,rgb->r,rgb->g,rgb->b); for (j = 0; j < 8; j++) { for (i = 0; i < 8; i++) { if (bits[j] & (1<<(7-i))) { gdImageSetPixel (gd->brush.hatch,i,j,fg); } else { gdImageSetPixel (gd->brush.hatch,i,j,bg); } } } gdImageSetTile (gd->image,gd->brush.hatch); brushstyle = gdTiled; } break; case BS_DIBPATTERN: bmp = WMF_BRUSH_BITMAP (brush); if (bmp->data == 0) { if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Attempt to fill with non-existent pattern!"); break; } else { WMF_ERROR (API,"Attempt to fill with non-existent pattern!"); API->err = wmf_E_Glitch; break; } } if (gd->brush.image) { if ((gd->brush.width != (int) bmp->width ) || (gd->brush.height != (int) bmp->height)) { gdImageDestroy (gd->brush.image); gd->brush.image = 0; } } if (gd->brush.image == 0) { gd->brush.width = (int) bmp->width; gd->brush.height = (int) bmp->height; gd->brush.image = gdImageCreateTrueColor (gd->brush.width,gd->brush.height); } if (gd->brush.image) { for (y = 0; y < (unsigned int) gd->brush.height; y++) { for (x = 0; x < (unsigned int) gd->brush.width; x++) { opacity = wmf_ipa_bmp_color (API,bmp,&pixel,x,y); fg = gdImageColorResolve (gd->brush.image,pixel.r,pixel.g,pixel.b); gdImageSetPixel (gd->brush.image,(int) x,(int) y,fg); } } gdImageSetTile (gd->image,gd->brush.image); brushstyle = gdTiled; } break; default: if (API->flags & WMF_OPT_IGNORE_NONFATAL) { WMF_DEBUG (API,"Unsupported brush style!"); /* no break here */ } else { WMF_ERROR (API,"Unsupported brush style!"); API->err = wmf_E_Glitch; break; } case BS_SOLID: break; } return (brushstyle); } static int setlinestyle (wmfAPI* API,wmfDC* dc) { wmf_gd_t* ddata = WMF_GD_GetData (API); gd_t* gd = (gd_t*) ddata->gd_data; wmfPen* pen = 0; wmfRGB* rgb = 0; int pen_width; int pen_height; int fg; int bg; int linestyle; int i; int style[14]; pen = WMF_DC_PEN (dc); /* Color */ rgb = WMF_PEN_COLOR (pen); fg = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); rgb = WMF_DC_BACKGROUND (dc); bg = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); linestyle = fg; /* Size */ pen_width = (int) ceil ((double) gd_width (API,WMF_PEN_WIDTH (pen))); pen_height = (int) ceil ((double) gd_height (API,WMF_PEN_HEIGHT (pen))); if (pen_width < 1) pen_width = 1; if (pen_height < 1) pen_height = 1; if ((pen_width == 1) && (pen_height == 1)) { /* Ordinary line */ } else { if (gd->pen.image == 0) { /* Need to create a brush */ gd->pen.image = gdImageCreateTrueColor (pen_width,pen_height); } else if ((pen_width == gd->pen.width) && (pen_height == gd->pen.height)) { /* Already have brush of correct size */ } else { /* Need to free current brush & create new one */ gdImageDestroy (gd->pen.image); gd->pen.image = gdImageCreateTrueColor (pen_width,pen_height); } if (gd->pen.image) { gd->pen.width = pen_width; gd->pen.height = pen_height; rgb = WMF_PEN_COLOR (pen); fg = gdImageColorResolve (gd->pen.image,rgb->r,rgb->g,rgb->b); rgb = WMF_DC_BACKGROUND (dc); bg = gdImageColorResolve (gd->image,rgb->r,rgb->g,rgb->b); if (bg != fg) gdImageColorTransparent (gd->pen.image,bg); gdImageFilledRectangle (gd->pen.image,0,0,gd->pen.width,gd->pen.height,bg); /* `Square' nib */ gdImageFilledRectangle (gd->pen.image,0,0,gd->pen.width,gd->pen.height,fg); gdImageSetBrush (gd->image,gd->pen.image); linestyle = gdBrushed; } } switch (WMF_PEN_STYLE (pen)) { case PS_DASH: for (i = 0; i < 5; i++) style[i] = fg; for (i = 5; i < 8; i++) style[i] = bg; gdImageSetStyle (gd->image,style, 8); if (linestyle == gdBrushed) { linestyle = gdStyledBrushed; } else { linestyle = gdStyled; } break; case PS_DOT: for (i = 0; i < 2; i++) style[i] = fg; for (i = 2; i < 4; i++) style[i] = bg; gdImageSetStyle (gd->image,style, 4); if (linestyle == gdBrushed) { linestyle = gdStyledBrushed; } else { linestyle = gdStyled; } break; case PS_DASHDOT: for (i = 0; i < 4; i++) style[i] = fg; for (i = 4; i < 7; i++) style[i] = bg; for (i = 7; i < 9; i++) style[i] = fg; for (i = 9; i < 12; i++) style[i] = bg; gdImageSetStyle (gd->image,style,12); if (linestyle == gdBrushed) { linestyle = gdStyledBrushed; } else { linestyle = gdStyled; } break; case PS_DASHDOTDOT: for (i = 0; i < 4; i++) style[i] = fg; for (i = 4; i < 6; i++) style[i] = bg; for (i = 6; i < 8; i++) style[i] = fg; for (i = 8; i < 10; i++) style[i] = bg; for (i = 10; i < 12; i++) style[i] = fg; for (i = 12; i < 14; i++) style[i] = bg; gdImageSetStyle (gd->image,style,14); if (linestyle == gdBrushed) { linestyle = gdStyledBrushed; } else { linestyle = gdStyled; } break; case PS_INSIDEFRAME: /* There is nothing to do in this case... */ case PS_SOLID: default: break; } return (linestyle); } #endif /* HAVE_GD */ int * wmf_gd_image_pixels (void * gd_image) { int * pixels = 0; #ifdef HAVE_GD gdImagePtr img = (gdImagePtr) gd_image; if (img) pixels = img->_tpixels; #endif /* HAVE_GD */ return (pixels); } libwmf-0.2.8.4/src/ipa/x.c0000644000077100007710000002613707367010430014467 0ustar fjffjf00000000000000/* libwmf (ipa/x.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include "wmfdefs.h" #ifdef X_DISPLAY_MISSING void wmf_x_function (wmfAPI* API) { API->err = wmf_E_DeviceError; WMF_DEBUG (API,"No support for X"); } #else /* X_DISPLAY_MISSING */ /* i.e., not */ #include #include "libwmf/x.h" static void wmf_x_device_open (wmfAPI*); static void wmf_x_device_close (wmfAPI*); static void wmf_x_device_begin (wmfAPI*); static void wmf_x_device_end (wmfAPI*); static void wmf_x_flood_interior (wmfAPI*,wmfFlood_t*); static void wmf_x_flood_exterior (wmfAPI*,wmfFlood_t*); static void wmf_x_draw_pixel (wmfAPI*,wmfDrawPixel_t*); static void wmf_x_draw_pie (wmfAPI*,wmfDrawArc_t*); static void wmf_x_draw_chord (wmfAPI*,wmfDrawArc_t*); static void wmf_x_draw_arc (wmfAPI*,wmfDrawArc_t*); static void wmf_x_draw_ellipse (wmfAPI*,wmfDrawArc_t*); static void wmf_x_draw_line (wmfAPI*,wmfDrawLine_t*); static void wmf_x_poly_line (wmfAPI*,wmfPolyLine_t*); static void wmf_x_draw_polygon (wmfAPI*,wmfPolyLine_t*); static void wmf_x_draw_rectangle (wmfAPI*,wmfDrawRectangle_t*); static void wmf_x_rop_draw (wmfAPI*,wmfROP_Draw_t*); static void wmf_x_bmp_draw (wmfAPI*,wmfBMP_Draw_t*); static void wmf_x_bmp_read (wmfAPI*,wmfBMP_Read_t*); static void wmf_x_bmp_free (wmfAPI*,wmfBMP*); static void wmf_x_draw_text (wmfAPI*,wmfDrawText_t*); static void wmf_x_udata_init (wmfAPI*,wmfUserData_t*); static void wmf_x_udata_copy (wmfAPI*,wmfUserData_t*); static void wmf_x_udata_set (wmfAPI*,wmfUserData_t*); static void wmf_x_udata_free (wmfAPI*,wmfUserData_t*); static void wmf_x_region_frame (wmfAPI*,wmfPolyRectangle_t*); static void wmf_x_region_paint (wmfAPI*,wmfPolyRectangle_t*); static void wmf_x_region_clip (wmfAPI*,wmfPolyRectangle_t*); #include #include #include "ipa/x.h" #include "ipa/x/bmp.h" #include "ipa/x/color.h" #include "ipa/x/device.h" #include "ipa/x/draw.h" #include "ipa/x/font.h" #include "ipa/x/region.h" void wmf_x_function (wmfAPI* API) { wmf_x_t* ddata = 0; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; if ((API->flags & API_STANDARD_INTERFACE) == 0) { WMF_ERROR (API,"Can't use this device layer with 'lite' interface!"); API->err = wmf_E_DeviceError; return; } /* IPA function reference links */ FR->device_open = wmf_x_device_open; FR->device_close = wmf_x_device_close; FR->device_begin = wmf_x_device_begin; FR->device_end = wmf_x_device_end; FR->flood_interior = wmf_x_flood_interior; FR->flood_exterior = wmf_x_flood_exterior; FR->draw_pixel = wmf_x_draw_pixel; FR->draw_pie = wmf_x_draw_pie; FR->draw_chord = wmf_x_draw_chord; FR->draw_arc = wmf_x_draw_arc; FR->draw_ellipse = wmf_x_draw_ellipse; FR->draw_line = wmf_x_draw_line; FR->poly_line = wmf_x_poly_line; FR->draw_polygon = wmf_x_draw_polygon; FR->draw_rectangle = wmf_x_draw_rectangle; FR->rop_draw = wmf_x_rop_draw; FR->bmp_draw = wmf_x_bmp_draw; FR->bmp_read = wmf_x_bmp_read; FR->bmp_free = wmf_x_bmp_free; FR->draw_text = wmf_x_draw_text; FR->udata_init = wmf_x_udata_init; FR->udata_copy = wmf_x_udata_copy; FR->udata_set = wmf_x_udata_set; FR->udata_free = wmf_x_udata_free; FR->region_frame = wmf_x_region_frame; FR->region_paint = wmf_x_region_paint; FR->region_clip = wmf_x_region_clip; /* Allocate device data structure */ ddata = (wmf_x_t*) wmf_malloc (API,sizeof (wmf_x_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; /* Device data defaults */ ddata->display_name = 0; ddata->window_name = 0; ddata->icon_name = 0; ddata->display = 0; ddata->root = None; ddata->window = None; ddata->pixmap = None; ddata->hatch = None; ddata->brush = None; ddata->gc = 0; ddata->color = 0; ddata->bbox.TL.x = 0; ddata->bbox.TL.y = 0; ddata->bbox.BR.x = 0; ddata->bbox.BR.y = 0; ddata->flags = 0; } static void wmf_x_udata_init (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]udata_init"); } static void wmf_x_udata_copy (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]udata_copy"); } static void wmf_x_udata_set (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]udata_set"); } static void wmf_x_udata_free (wmfAPI* API,wmfUserData_t* userdata) { /* wmf_x_t* ddata = WMF_X_GetData (API); */ WMF_DEBUG (API,"wmf_[x_]udata_free"); } static void setbrushstyle (wmfAPI* API,wmfDC* dc) { wmf_x_t* ddata = WMF_X_GetData (API); wmfBMP* bmp = 0; wmfRGB pixel; wmfBrush* brush = 0; int opacity; int fill_style; U16 i; U16 j; XGCValues values; brush = WMF_DC_BRUSH (dc); values.function = Our_XROPfunction[WMF_DC_ROP (dc) - 1]; if (values.function == GXinvert) { values.function = GXxor; values.foreground = ddata->black; } else { values.foreground = get_color (API,WMF_BRUSH_COLOR (brush)); } values.background = get_color (API,WMF_DC_BACKGROUND (dc)); switch (WMF_BRUSH_STYLE (brush)) { /* TODO: these arrays are convenient but how SEG-safe are they? */ case BS_HATCHED: if (ddata->hatch != None) XFreePixmap (ddata->display,ddata->hatch); ddata->hatch = XCreateBitmapFromData (ddata->display,ddata->root, HatchBrushes[WMF_BRUSH_HATCH (brush)],8,8); fill_style = ((WMF_DC_OPAQUE (dc)) ? FillOpaqueStippled : FillStippled); XSetStipple (ddata->display,ddata->gc,ddata->hatch); break; case BS_DIBPATTERN: setdefaultstyle (API); bmp = WMF_BRUSH_BITMAP (brush); if (ddata->brush != None) { XFreePixmap (ddata->display,ddata->brush); ddata->brush = None; } if (bmp->data == 0) { fill_style = FillSolid; break; } ddata->brush = XCreatePixmap (ddata->display,ddata->root, bmp->width,bmp->height,ddata->depth); if (ddata->brush == None) { fill_style = FillSolid; break; } for (j = 0; j < bmp->height; j++) { for (i = 0; i < bmp->width; i++) { opacity = wmf_ipa_bmp_color (API,bmp,&pixel,i,j); XSetForeground (ddata->display,ddata->gc,get_color (API,&pixel)); XDrawPoint (ddata->display,ddata->brush,ddata->gc,i,j); } } XSetTile (ddata->display,ddata->gc,ddata->brush); fill_style = FillTiled; break; case BS_NULL: case BS_SOLID: case BS_PATTERN: default: fill_style = FillSolid; break; } XSetFillStyle (ddata->display,ddata->gc,fill_style); switch (WMF_DC_POLYFILL (dc)) { case ALTERNATE: values.fill_rule = EvenOddRule; break; case WINDING: values.fill_rule = WindingRule; break; default: values.fill_rule = EvenOddRule; break; } XChangeGC (ddata->display,ddata->gc,GCFunction|GCForeground|GCBackground|GCFillRule,&values); } static void setlinestyle (wmfAPI* API,wmfDC* dc) { wmf_x_t* ddata = WMF_X_GetData (API); wmfPen* pen = 0; unsigned long color; char* dashes = 0; int dash_len; XGCValues values; pen = WMF_DC_PEN (dc); color = get_color (API,WMF_PEN_COLOR (pen)); switch (WMF_DC_ROP (dc)) { case R2_BLACK: values.foreground = ddata->black; values.function = GXcopy; break; case R2_WHITE: values.foreground = ddata->white; values.function = GXcopy; break; case R2_XORPEN: values.foreground = color; /* It is very unlikely someone wants to XOR with 0 */ /* This fixes the rubber-drawings in paintbrush */ if (values.foreground == 0) { values.foreground = ((ddata->white) ? ddata->white : ddata->black); } values.function = GXxor; break; default: values.foreground = color; values.function = Our_XROPfunction[WMF_DC_ROP (dc) - 1]; break; } switch (WMF_PEN_STYLE (pen)) { case PS_DASH: dashes = (char*) PEN_dash; dash_len = 2; values.line_style = ((WMF_DC_OPAQUE (dc)) ? LineDoubleDash : LineOnOffDash); break; case PS_DOT: dashes = (char*) PEN_dot; dash_len = 2; values.line_style = ((WMF_DC_OPAQUE (dc)) ? LineDoubleDash : LineOnOffDash); break; case PS_DASHDOT: dashes = (char*) PEN_dashdot; dash_len = 4; values.line_style = ((WMF_DC_OPAQUE (dc)) ? LineDoubleDash : LineOnOffDash); break; case PS_DASHDOTDOT: dashes = (char*) PEN_dashdotdot; dash_len = 6; values.line_style = ((WMF_DC_OPAQUE (dc)) ? LineDoubleDash : LineOnOffDash); break; case PS_ALTERNATE: /* FIXME: should be alternating _pixels_ that are set */ dashes = (char*) PEN_alternate; dash_len = 2; values.line_style = ((WMF_DC_OPAQUE (dc)) ? LineDoubleDash : LineOnOffDash); break; case PS_USERSTYLE: /* FIXME */ default: dashes = 0; dash_len = 2; values.line_style = LineSolid; break; } values.fill_style = FillSolid; values.line_width = (int) ceil ( (double) x_width (API,WMF_PEN_WIDTH (pen)) + (double) x_height (API,WMF_PEN_HEIGHT (pen)) ); if (values.line_width < 1) values.line_width = 1; switch (WMF_PEN_ENDCAP (pen)) { case PS_ENDCAP_SQUARE: values.cap_style = CapProjecting; break; case PS_ENDCAP_FLAT: values.cap_style = CapButt; break; case PS_ENDCAP_ROUND: default: values.cap_style = CapRound; break; } switch (WMF_PEN_JOIN (pen)) { case PS_JOIN_BEVEL: values.join_style = JoinBevel; break; case PS_JOIN_MITER: values.join_style = JoinMiter; break; case PS_JOIN_ROUND: default: values.join_style = JoinRound; break; } if (dashes) XSetDashes (ddata->display,ddata->gc,0,dashes,dash_len); values.background = get_color (API,WMF_DC_BACKGROUND (dc)); XChangeGC (ddata->display,ddata->gc, GCFunction | GCForeground | GCLineStyle | GCLineWidth | GCCapStyle | GCBackground | GCJoinStyle | GCFillStyle, &values); } static void setdefaultstyle (wmfAPI* API) { wmf_x_t* ddata = WMF_X_GetData (API); XGCValues values; values.function = GXcopy; values.foreground = ddata->black; values.background = ddata->white; values.fill_style = FillSolid; values.fill_rule = EvenOddRule; values.cap_style = CapRound; values.join_style = JoinRound; values.line_style = LineSolid; values.line_width = 1; XChangeGC (ddata->display,ddata->gc, GCFunction | GCForeground | GCLineStyle | GCJoinStyle | GCCapStyle | GCBackground | GCLineWidth | GCFillStyle | GCFillRule, &values); } #endif /* X_DISPLAY_MISSING */ libwmf-0.2.8.4/src/ipa/ipa.c0000644000077100007710000000543007367010430014762 0ustar fjffjf00000000000000/* libwmf (ipa/ipa.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /* Define WMF_API if this is module so that ipa headers are included via "wmfdefs.h" first */ #define WMF_IPA 1 #include "wmfdefs.h" #include "ipa/ipa.h" #include "ipa/ipa/bmp.h" /* Provides default bitmap functionality */ #define NPageTypes 11 static ipa_page_info PageInfo[NPageTypes] = { { wmf_P_A5, "A5", 420, 595 }, { wmf_P_A4, "A4", 595, 842 }, { wmf_P_A3, "A3", 842, 1191 }, { wmf_P_A2, "A2", 1191, 1684 }, { wmf_P_A1, "A1", 1684, 2384 }, { wmf_P_A0, "A0", 2384, 3370 }, { wmf_P_B5, "B5", 516, 729 }, { wmf_P_Letter, "Letter", 612, 792 }, { wmf_P_Legal, "Legal", 612, 1008 }, { wmf_P_Ledger, "Ledger", 1224, 792 }, { wmf_P_Tabloid, "Tabloid", 792, 1224 }}; char* wmf_ipa_page_format (wmfAPI* API,wmf_page_t type) { int i; char* format = 0; for (i = 0; i < NPageTypes; i++) { if (PageInfo[i].type == type) { format = PageInfo[i].format; break; } } if (format == 0) { WMF_ERROR (API,"Glitch! unexpected page type!"); API->err = wmf_E_Glitch; } return (format); } unsigned int wmf_ipa_page_width (wmfAPI* API,wmf_page_t type) { int i; unsigned int length = 0; for (i = 0; i < NPageTypes; i++) { if (PageInfo[i].type == type) { length = PageInfo[i].width; break; } } if (length == 0) { WMF_ERROR (API,"Glitch! unexpected page type!"); API->err = wmf_E_Glitch; } return (length); } unsigned int wmf_ipa_page_height (wmfAPI* API,wmf_page_t type) { int i; unsigned int length = 0; for (i = 0; i < NPageTypes; i++) { if (PageInfo[i].type == type) { length = PageInfo[i].height; break; } } if (length == 0) { WMF_ERROR (API,"Glitch! unexpected page type!"); API->err = wmf_E_Glitch; } return (length); } libwmf-0.2.8.4/src/ipa/plot.c0000644000077100007710000001412607367010430015171 0ustar fjffjf00000000000000/* libwmf (ipa/plot.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include #include "wmfdefs.h" #ifdef HAVE_LIBPLOT #include "libwmf/plot.h" static void wmf_plot_device_open (wmfAPI*); static void wmf_plot_device_close (wmfAPI*); static void wmf_plot_device_begin (wmfAPI*); static void wmf_plot_device_end (wmfAPI*); static void wmf_plot_flood_interior (wmfAPI*,wmfFlood_t*); static void wmf_plot_flood_exterior (wmfAPI*,wmfFlood_t*); static void wmf_plot_draw_pixel (wmfAPI*,wmfDrawPixel_t*); static void wmf_plot_draw_pie (wmfAPI*,wmfDrawArc_t*); static void wmf_plot_draw_chord (wmfAPI*,wmfDrawArc_t*); static void wmf_plot_draw_arc (wmfAPI*,wmfDrawArc_t*); static void wmf_plot_draw_ellipse (wmfAPI*,wmfDrawArc_t*); static void wmf_plot_draw_line (wmfAPI*,wmfDrawLine_t*); static void wmf_plot_poly_line (wmfAPI*,wmfPolyLine_t*); static void wmf_plot_draw_polygon (wmfAPI*,wmfPolyLine_t*); static void wmf_plot_draw_rectangle (wmfAPI*,wmfDrawRectangle_t*); static void wmf_plot_rop_draw (wmfAPI*,wmfROP_Draw_t*); static void wmf_plot_bmp_draw (wmfAPI*,wmfBMP_Draw_t*); static void wmf_plot_bmp_read (wmfAPI*,wmfBMP_Read_t*); static void wmf_plot_bmp_free (wmfAPI*,wmfBMP*); static void wmf_plot_draw_text (wmfAPI*,wmfDrawText_t*); static void wmf_plot_udata_init (wmfAPI*,wmfUserData_t*); static void wmf_plot_udata_copy (wmfAPI*,wmfUserData_t*); static void wmf_plot_udata_set (wmfAPI*,wmfUserData_t*); static void wmf_plot_udata_free (wmfAPI*,wmfUserData_t*); static void wmf_plot_region_frame (wmfAPI*,wmfPolyRectangle_t*); static void wmf_plot_region_paint (wmfAPI*,wmfPolyRectangle_t*); static void wmf_plot_region_clip (wmfAPI*,wmfPolyRectangle_t*); #include "ipa/plot.h" #include "ipa/plot/bmp.h" #include "ipa/plot/device.h" #include "ipa/plot/draw.h" #include "ipa/plot/region.h" #endif /* HAVE_LIBPLOT */ void wmf_plot_function (wmfAPI* API) { #ifdef HAVE_LIBPLOT wmf_plot_t* ddata = 0; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; plot_t* plot = 0; if ((API->flags & API_STANDARD_INTERFACE) == 0) { WMF_ERROR (API,"Can't use this device layer with 'lite' interface!"); API->err = wmf_E_DeviceError; return; } /* IPA function reference links */ FR->device_open = wmf_plot_device_open; FR->device_close = wmf_plot_device_close; FR->device_begin = wmf_plot_device_begin; FR->device_end = wmf_plot_device_end; FR->flood_interior = wmf_plot_flood_interior; FR->flood_exterior = wmf_plot_flood_exterior; FR->draw_pixel = wmf_plot_draw_pixel; FR->draw_pie = wmf_plot_draw_pie; FR->draw_chord = wmf_plot_draw_chord; FR->draw_arc = wmf_plot_draw_arc; FR->draw_ellipse = wmf_plot_draw_ellipse; FR->draw_line = wmf_plot_draw_line; FR->poly_line = wmf_plot_poly_line; FR->draw_polygon = wmf_plot_draw_polygon; FR->draw_rectangle = wmf_plot_draw_rectangle; FR->rop_draw = wmf_plot_rop_draw; FR->bmp_draw = wmf_plot_bmp_draw; FR->bmp_read = wmf_plot_bmp_read; FR->bmp_free = wmf_plot_bmp_free; FR->draw_text = wmf_plot_draw_text; FR->udata_init = wmf_plot_udata_init; FR->udata_copy = wmf_plot_udata_copy; FR->udata_set = wmf_plot_udata_set; FR->udata_free = wmf_plot_udata_free; FR->region_frame = wmf_plot_region_frame; FR->region_paint = wmf_plot_region_paint; FR->region_clip = wmf_plot_region_clip; /* Allocate device data structure */ ddata = (wmf_plot_t*) wmf_malloc (API,sizeof (wmf_plot_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; /* Device data defaults */ ddata->type = wmf_plot_generic; ddata->plot_data = (plot_t*) wmf_malloc (API,sizeof (plot_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } plot = (plot_t*) ddata->plot_data; plot->plotter = 0; plot->params = pl_newplparams (); if (plot->params == 0) { API->err = wmf_E_DeviceError; return; } ddata->file = 0; ddata->width = 0; ddata->height = 0; ddata->bbox.TL.x = 0; ddata->bbox.TL.y = 0; ddata->bbox.BR.x = 0; ddata->bbox.BR.y = 0; ddata->flags = 0; #else /* HAVE_LIBPLOT */ API->device_data = 0; API->err = wmf_E_DeviceError; #endif /* HAVE_LIBPLOT */ } #ifdef HAVE_LIBPLOT static void wmf_plot_draw_text (wmfAPI* API,wmfDrawText_t* draw_text) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]draw_text"); } static void wmf_plot_udata_init (wmfAPI* API,wmfUserData_t* userdata) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]udata_init"); } static void wmf_plot_udata_copy (wmfAPI* API,wmfUserData_t* userdata) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]udata_copy"); } static void wmf_plot_udata_set (wmfAPI* API,wmfUserData_t* userdata) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]udata_set"); } static void wmf_plot_udata_free (wmfAPI* API,wmfUserData_t* userdata) { wmf_plot_t* ddata = WMF_PLOT_GetData (API); plot_t* plot = (plot_t*) ddata->plot_data; WMF_DEBUG (API,"wmf_[plot_]udata_free"); } #endif /* HAVE_LIBPLOT */ libwmf-0.2.8.4/src/ipa/foreign.c0000644000077100007710000001224107365750157015657 0ustar fjffjf00000000000000/* libwmf (ipa/foreign.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ #include "wmfdefs.h" #ifndef WITHOUT_LAYERS #ifdef HAVE_GD #include #endif /* HAVE_GD */ #include "libwmf/foreign.h" #else /* ! WITHOUT_LAYERS */ #ifdef HAVE_GD #undef HAVE_GD #endif #endif /* ! WITHOUT_LAYERS */ void wmf_foreign_function (wmfAPI* API) { #ifndef WITHOUT_LAYERS wmf_foreign_t* ddata = 0; API->function_reference = 0; /* Allocate device data structure */ ddata = (wmf_foreign_t*) wmf_malloc (API,sizeof (wmf_foreign_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; ddata->flags = 0; #ifdef HAVE_LIBPNG ddata->flags |= WMF_FOREIGN_SUPPORTS_PNG; #endif #ifdef HAVE_LIBJPEG ddata->flags |= WMF_FOREIGN_SUPPORTS_JPEG; #endif #else /* ! WITHOUT_LAYERS */ API->device_data = 0; API->err = wmf_E_DeviceError; #endif /* ! WITHOUT_LAYERS */ } int wmf_image_load_png (wmfAPI* API,FILE* png_in,wmfImage* image) { /* wmf_foreign_t* ddata = WMF_FOREIGN_GetData (API); */ #ifdef HAVE_GD gdImage* gd_image = 0; #ifndef HAVE_LIBPNG return (-1); #endif gd_image = gdImageCreateFromPng (png_in); if (gd_image == 0) return (-1); image->type = wmf_I_gd; image->width = (U16) gdImageSX (gd_image); image->height = (U16) gdImageSY (gd_image); image->data = (void*) gd_image; return (0); #else /* HAVE_GD */ return (-1); #endif /* HAVE_GD */ } int wmf_image_load_jpg (wmfAPI* API,FILE* jpg_in,wmfImage* image) { /* wmf_foreign_t* ddata = WMF_FOREIGN_GetData (API); */ #ifdef HAVE_GD gdImage* gd_image = 0; #ifndef HAVE_LIBJPEG return (-1); #endif gd_image = gdImageCreateFromJpeg (jpg_in); if (gd_image == 0) return (-1); image->type = wmf_I_gd; image->width = (U16) gdImageSX (gd_image); image->height = (U16) gdImageSY (gd_image); image->data = (void*) gd_image; return (0); #else /* HAVE_GD */ return (-1); #endif /* HAVE_GD */ } int wmf_image_save_eps (wmfAPI* API,FILE* file,wmfImage* image) { /* wmf_foreign_t* ddata = WMF_FOREIGN_GetData(API); */ #ifdef HAVE_GD wmfRGB rgb; gdImage* gd_image = 0; int c; int i; int j; int k; int width; int height; static char hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; char buffer[80]; gd_image = (gdImage*) image->data; if ((gd_image == 0) || (file == 0)) return (-1); if (image->type != wmf_I_gd) { WMF_ERROR (API,"image type not supported!"); API->err = wmf_E_DeviceError; return (-1); } width = gdImageSX (gd_image); height = gdImageSY (gd_image); /* */ fputs ("%!PS-Adobe-2.0 EPSF-2.0\n",file); fputs ("%%BoundingBox: ",file); fprintf (file," 0 0 %d %d\n",width,height); fprintf (file," 0 %d translate\n",1); fprintf (file," %d %d scale\n",width,height); /* I'm going to assume it's a color image - TODO: monochrome */ fprintf (file," /picstr %d 3 mul string def\n",width); fprintf (file," %d %d 8\n",width,height); fprintf (file," [ %d 0 0 %d 0 0 ]\n",width,height); fputs (" { currentfile picstr readhexstring pop } false 3\n",file); fputs (" colorimage\n",file); for (j = 0; j < height; j++) { k = 0; for (i = 0; i < width; i++) { if (k == 78) { buffer[k++] = '\n'; buffer[k] = 0; fputs (buffer,file); k = 0; } c = gdImageGetPixel (gd_image,i,j); if (gd_image->trueColor) { rgb.r = gdTrueColorGetRed (c); rgb.g = gdTrueColorGetGreen (c); rgb.b = gdTrueColorGetBlue (c); } else { rgb.r = gd_image->red[c]; rgb.g = gd_image->green[c]; rgb.b = gd_image->blue[c]; } buffer[k++] = hex[(rgb.r & 0xf0) >> 4]; buffer[k++] = hex[ rgb.r & 0x0f ]; buffer[k++] = hex[(rgb.g & 0xf0) >> 4]; buffer[k++] = hex[ rgb.g & 0x0f ]; buffer[k++] = hex[(rgb.b & 0xf0) >> 4]; buffer[k++] = hex[ rgb.b & 0x0f ]; } if (k > 0) { buffer[k++] = '\n'; buffer[k] = 0; fputs (buffer,file); } } fputs ("showpage\n",file); return (0); #else /* HAVE_GD */ return (-1); #endif /* HAVE_GD */ } void wmf_image_free (wmfAPI* API,wmfImage* image) { /* wmf_foreign_t* ddata = WMF_FOREIGN_GetData (API); */ #ifdef HAVE_GD gdImage* gd_image = (gdImage*) image->data; if (image->type != wmf_I_gd) { WMF_ERROR (API,"image type not supported!"); API->err = wmf_E_DeviceError; return; } if (gd_image) { gdImageDestroy (gd_image); } image->data = 0; #endif /* HAVE_GD */ } libwmf-0.2.8.4/src/ipa/template.c0000644000077100007710000002207407365251534016041 0ustar fjffjf00000000000000/* libwmf (ipa/template.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif /* HAVE_CONFIG_H */ /* If compiling as module, rename global functions to a standard */ #ifdef WMF_IPA_MODULE #define wmf_template_device_open wmf_device_open #define wmf_template_device_close wmf_device_close #define wmf_template_device_begin wmf_device_begin #define wmf_template_device_end wmf_device_end #define wmf_template_flood_interior wmf_flood_interior #define wmf_template_flood_exterior wmf_flood_exterior #define wmf_template_draw_pixel wmf_draw_pixel #define wmf_template_draw_pie wmf_draw_pie #define wmf_template_draw_chord wmf_draw_chord #define wmf_template_draw_arc wmf_draw_arc #define wmf_template_draw_ellipse wmf_draw_ellipse #define wmf_template_draw_line wmf_draw_line #define wmf_template_poly_line wmf_poly_line #define wmf_template_draw_polygon wmf_draw_polygon #define wmf_template_draw_rectangle wmf_draw_rectangle #define wmf_template_rop_draw wmf_rop_draw #define wmf_template_bmp_draw wmf_bmp_draw #define wmf_template_bmp_read wmf_bmp_read #define wmf_template_bmp_free wmf_bmp_free #define wmf_template_draw_text wmf_draw_text #define wmf_template_udata_init wmf_udata_init #define wmf_template_udata_copy wmf_udata_copy #define wmf_template_udata_set wmf_udata_set #define wmf_template_udata_free wmf_udata_free #define wmf_template_region_frame wmf_region_frame #define wmf_template_region_paint wmf_region_paint #define wmf_template_region_clip wmf_region_clip #endif /* WMF_IPA_MODULE */ #include "wmfdefs.h" #include "libwmf/template.h" #include "ipa/template.h" void wmf_template_function (wmfAPI* API) { wmf_template_t* ddata = 0; wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference; /* IPA function reference links */ FR->device_open = wmf_template_device_open; FR->device_close = wmf_template_device_close; FR->device_begin = wmf_template_device_begin; FR->device_end = wmf_template_device_end; FR->flood_interior = wmf_template_flood_interior; FR->flood_exterior = wmf_template_flood_exterior; FR->draw_pixel = wmf_template_draw_pixel; FR->draw_pie = wmf_template_draw_pie; FR->draw_chord = wmf_template_draw_chord; FR->draw_arc = wmf_template_draw_arc; FR->draw_ellipse = wmf_template_draw_ellipse; FR->draw_line = wmf_template_draw_line; FR->poly_line = wmf_template_poly_line; FR->draw_polygon = wmf_template_draw_polygon; FR->draw_rectangle = wmf_template_draw_rectangle; FR->rop_draw = wmf_template_rop_draw; FR->bmp_draw = wmf_template_bmp_draw; FR->bmp_read = wmf_template_bmp_read; FR->bmp_free = wmf_template_bmp_free; FR->draw_text = wmf_template_draw_text; FR->udata_init = wmf_template_udata_init; FR->udata_copy = wmf_template_udata_copy; FR->udata_set = wmf_template_udata_set; FR->udata_free = wmf_template_udata_free; FR->region_frame = wmf_template_region_frame; FR->region_paint = wmf_template_region_paint; FR->region_clip = wmf_template_region_clip; /* Allocate device data structure */ ddata = (wmf_template_t*) wmf_malloc (API,sizeof (wmf_template_t)); if (ERR (API)) { WMF_DEBUG (API,"bailing..."); return; } API->device_data = (void*) ddata; /* Device data defaults */ ddata->bbox.TL.x = 0; ddata->bbox.TL.y = 0; ddata->bbox.BR.x = 0; ddata->bbox.BR.y = 0; ddata->flags = 0; } /* This is called by wmf_play() the *first* time the meta file is played */ void wmf_template_device_open (wmfAPI* API) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]device_open"); } /* This is called by wmf_api_destroy() */ void wmf_template_device_close (wmfAPI* API) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]device_close"); } /* This is called from the beginning of each play for initial page setup */ void wmf_template_device_begin (wmfAPI* API) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]device_begin"); } /* This is called from the end of each play for page termination */ void wmf_template_device_end (wmfAPI* API) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]device_end"); } void wmf_template_flood_interior (wmfAPI* API,wmfFlood_t* flood) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]flood_interior"); } void wmf_template_flood_exterior (wmfAPI* API,wmfFlood_t* flood) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]flood_exterior"); } void wmf_template_draw_pixel (wmfAPI* API,wmfDrawPixel_t* drawpixel) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_pixel"); } void wmf_template_draw_pie (wmfAPI* API,wmfDrawArc_t* drawarc) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_pie"); } void wmf_template_draw_chord (wmfAPI* API,wmfDrawArc_t* drawarc) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_chord"); } void wmf_template_draw_arc (wmfAPI* API,wmfDrawArc_t* drawarc) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_arc"); } void wmf_template_draw_ellipse (wmfAPI* API,wmfDrawArc_t* drawarc) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_ellipse"); } void wmf_template_draw_line (wmfAPI* API,wmfDrawLine_t* drawline) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_line"); } void wmf_template_poly_line (wmfAPI* API,wmfPolyLine_t* polyline) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]poly_line"); } void wmf_template_draw_polygon (wmfAPI* API,wmfPolyLine_t* polyline) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_polygon"); } void wmf_template_draw_rectangle (wmfAPI* API,wmfDrawRectangle_t* drawrectangle) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_rectangle"); } void wmf_template_rop_draw (wmfAPI* API,wmfROP_Draw_t* ropdraw) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]rop_draw"); } void wmf_template_bmp_draw (wmfAPI* API,wmfBMP_Draw_t* bmpdraw) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]bmp_draw"); } void wmf_template_bmp_read (wmfAPI* API,wmfBMP_Read_t* bmpread) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]bmp_read"); } void wmf_template_bmp_free (wmfAPI* API,wmfBMP* bmp) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]bmp_free"); } void wmf_template_draw_text (wmfAPI* API,wmfDrawText_t* drawtext) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]draw_text"); } void wmf_template_udata_init (wmfAPI* API,wmfUserData_t* userdata) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]udata_init"); } void wmf_template_udata_copy (wmfAPI* API,wmfUserData_t* userdata) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]udata_copy"); } void wmf_template_udata_set (wmfAPI* API,wmfUserData_t* userdata) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]udata_set"); } void wmf_template_udata_free (wmfAPI* API,wmfUserData_t* userdata) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]udata_free"); } void wmf_template_region_frame (wmfAPI* API,wmfPolyRectangle_t* polyrectangle) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]region_frame"); } void wmf_template_region_paint (wmfAPI* API,wmfPolyRectangle_t* polyrectangle) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]region_paint"); } void wmf_template_region_clip (wmfAPI* API,wmfPolyRectangle_t* polyrectangle) { wmf_template_t* ddata = WMF_TEMPLATE_GetData (API); WMF_DEBUG (API,"wmf_[template_]region_clip"); } libwmf-0.2.8.4/src/ipa/template.h0000644000077100007710000000174507260330343016036 0ustar fjffjf00000000000000/* libwmf ("ipa/template.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_TEMPLATE_H #define WMFIPA_TEMPLATE_H #endif /* ! WMFIPA_TEMPLATE_H */ libwmf-0.2.8.4/src/ipa/ipa.h0000644000077100007710000000670207367010430014772 0ustar fjffjf00000000000000/* libwmf ("ipa/ipa.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_IPA_H #define WMFIPA_IPA_H /* bmp.h */ typedef struct _ipa_b64_t ipa_b64_t; typedef struct _BMPSource BMPSource; typedef struct _BMPData BMPData; typedef struct _PointInfo PointInfo; typedef struct _BMPInfo BMPInfo; #ifdef HAVE_GD #include /* Use GD for BMP -> PNG conversion */ static int ipa_b64_sink (void*,const char*,int); static void ipa_b64_flush (void*); static gdImage* ipa_bmp_gd (wmfAPI*,wmfBMP_Draw_t*); #else /* HAVE_GD */ #ifdef HAVE_LIBPNG #include #endif /* HAVE_LIBPNG */ static void ldr_bmp_png (wmfAPI* API,wmfBMP_Draw_t* bmp_draw,FILE* out); #endif /* HAVE_GD */ static size_t ReadBlob (BMPSource*,size_t,unsigned char*); static int ReadBlobByte (BMPSource*); static unsigned short ReadBlobLSBShort (BMPSource*); static unsigned long ReadBlobLSBLong (BMPSource*); static long TellBlob (BMPSource*); static void DecodeImage (wmfAPI*,wmfBMP*,BMPSource*,unsigned int,unsigned char*); static void ReadBMPImage (wmfAPI*,wmfBMP*,BMPSource*); static int ExtractColor (wmfAPI*,wmfBMP*,wmfRGB*,unsigned int,unsigned int); static void SetColor (wmfAPI*,wmfBMP*,wmfRGB*,unsigned char,unsigned int,unsigned int); #define IPA_B64_BUFLEN 57 /* must be multiple of three... */ #define IPA_B64_LEQUIV 78 /* (IPA_B64_BUFLEN * 4) / 3 + 2 */ struct _ipa_b64_t { wmfAPI* API; wmfStream* out; char buffer[IPA_B64_BUFLEN]; int length; }; struct _BMPSource { unsigned char* begin; unsigned char* end; unsigned char* ptr; }; struct _BMPData { unsigned int NColors; wmfRGB* rgb; unsigned char* image; unsigned short bits_per_pixel; unsigned int bytes_per_line; unsigned short masked; unsigned short flipped; }; struct _PointInfo { double x; double y; double z; }; struct _BMPInfo { unsigned long file_size; unsigned long ba_offset; unsigned long offset_bits; unsigned long size; long width; long height; unsigned short planes; unsigned short bits_per_pixel; unsigned long compression; unsigned long image_size; unsigned long x_pixels; unsigned long y_pixels; unsigned long number_colors; unsigned long colors_important; unsigned short red_mask; unsigned short green_mask; unsigned short blue_mask; unsigned short alpha_mask; long colorspace; PointInfo red_primary; PointInfo green_primary; PointInfo blue_primary; PointInfo gamma_scale; }; /* ipa.c */ typedef struct _ipa_page_info ipa_page_info; struct _ipa_page_info { wmf_page_t type; char* format; unsigned int width; unsigned int height; }; #endif /* ! WMFIPA_IPA_H */ libwmf-0.2.8.4/src/ipa/eps.h0000644000077100007710000000251707260330343015010 0ustar fjffjf00000000000000/* libwmf ("ipa/eps.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_EPS_H #define WMFIPA_EPS_H typedef enum { eps_arc_ellipse = 0, eps_arc_open, eps_arc_pie, eps_arc_chord } eps_arc_t; static void eps_draw_arc (wmfAPI*,wmfDrawArc_t*,eps_arc_t); static void eps_path_fill (wmfAPI*,wmfDC*,wmfD_Rect*); static void eps_path_stroke (wmfAPI*,wmfDC*,float); static char* WMF_PS_DEFS = ""; static char* WMF_PS_HEAD = "\ save\n\ "; static char* WMF_PS_TAIL = "\ restore\n\ "; #endif /* ! WMFIPA_EPS_H */ libwmf-0.2.8.4/src/ipa/fig.h0000644000077100007710000000743407336160373015001 0ustar fjffjf00000000000000/* libwmf ("ipa/fig.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_FIG_H #define WMFIPA_FIG_H /* * FIG : Facility for Interactive Generation of figures * Copyright (c) 1985-1988 by Supoj Sutanthavibul * Parts Copyright (c) 1989-1998 by Brian V. Smith * Parts Copyright (c) 1991 by Paul King * * Any party obtaining a copy of these files is granted, free of charge, a * full and unrestricted irrevocable, world-wide, paid up, royalty-free, * nonexclusive right and license to deal in this software and * documentation files (the "Software"), including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons who receive * copies from any such party to do so, with the only requirement being * that this copyright notice remain intact. */ /* FIG format object codes */ #define O_COLOR_DEF 0 #define O_ELLIPSE 1 #define O_POLYLINE 2 #define O_SPLINE 3 #define O_TEXT 4 #define O_ARC 5 #define O_COMPOUND 6 #define O_END_COMPOUND -O_COMPOUND #define O_ALL_OBJECT 99 /* Subtypes for O_POLYLINE */ #define T_POLYLINE 1 #define T_BOX 2 #define T_POLYGON 3 #define T_ARC_BOX 4 #define T_PICTURE 5 /* line types */ #define SOLID_LINE 0 #define DASH_LINE 1 #define DOTTED_LINE 2 #define DASH_DOT_LINE 3 #define DASH_2_DOTS_LINE 4 #define DASH_3_DOTS_LINE 5 /* Join styles */ #define JOIN_MITER 0 #define JOIN_ROUND 1 #define JOIN_BEVEL 2 /* cap styles */ #define CAP_BUTT 0 #define CAP_ROUND 1 #define CAP_PROJECT 2 /* number of patterns */ #define NUMPATTERNS 22 /* FIG license applies above */ typedef struct _fig_t fig_t; typedef struct _figPoint figPoint; typedef struct _figDC figDC; struct _fig_t { void* equiv[NUMPATTERNS]; }; struct _figPoint { int x; int y; }; struct _figDC { int pen_style; int thickness; int area_fill; int line_style; int join_style; int cap_style; int radius; int forward_arrow; int backward_arrow; int pen_color; int fill_color; float style_val; }; /* fig/bmp.h */ static void fig_bmp_add (wmfAPI*,void*); static int fig_bmp_pattern (wmfAPI*,void*); static void fig_bmp_remove (wmfAPI*,void*); /* fig/color.h */ typedef struct _fig_color_t fig_color_t; struct _fig_color_t { float r; float g; float b; }; static void fig_std_colors (wmfAPI*); static void fig_color_to_file (wmfAPI*,wmfStream*); /* fig/device.h */ static figPoint fig_translate (wmfAPI*,wmfD_Coord); static int fig_width (wmfAPI*,float); static int fig_height (wmfAPI*,float); /* fig/draw.h */ static void fig_draw_arc (wmfAPI*,wmfDrawArc_t*,int); /* fig/font.h */ typedef struct _PS_to_FIG PS_to_FIG; struct _PS_to_FIG { char* PS_FontName; int FIG_FontNumber; }; /* fig.c */ static int fig_brushstyle (wmfAPI*,wmfDC*); static int fig_linestyle (wmfAPI*,wmfDC*); static int fig_joinstyle (wmfAPI*,wmfDC*); static int fig_capstyle (wmfAPI*,wmfDC*); static void fig_set_style (wmfAPI*,wmfDC*,figDC*); #endif /* ! WMFIPA_FIG_H */ libwmf-0.2.8.4/src/ipa/svg.h0000644000077100007710000001704207320664027015025 0ustar fjffjf00000000000000/* libwmf ("ipa/svg.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_SVG_H #define WMFIPA_SVG_H typedef enum { svg_arc_open, svg_arc_pie, svg_arc_chord } svg_arc_t; static void svg_draw_arc (wmfAPI*,wmfDrawArc_t*,svg_arc_t); typedef struct _svgPoint svgPoint; struct _svgPoint { float x; float y; }; static svgPoint svg_translate (wmfAPI*,wmfD_Coord); static float svg_width (wmfAPI*,float); static float svg_height (wmfAPI*,float); static void svg_style_stroke (wmfAPI*,wmfDC*); static void svg_style_fill (wmfAPI*,wmfDC*); typedef struct _svgFont svgFont; struct _svgFont { char* ps_name; char* family; char* style; char* weight; }; static svgFont svg_font (char*); static svgFont svg_known_fonts[] = { { "Courier", "Courier", "normal", "normal" }, { "Courier-Oblique", "Courier", "oblique", "normal" }, { "Courier-Bold", "Courier", "normal", "bold" }, { "Courier-BoldOblique", "Courier", "oblique", "bold" }, { "Helvetica", "Helvetica", "normal", "normal" }, { "Helvetica-Oblique", "Helvetica", "oblique", "normal" }, { "Helvetica-Bold", "Helvetica", "normal", "bold" }, { "Helvetica-BoldOblique","Helvetica", "oblique", "bold" }, { "Times-Roman", "Times", "normal", "normal" }, { "Times-Italic", "Times", "italic", "normal" }, { "Times-Bold", "Times", "normal", "bold" }, { "Times-BoldItalic", "Times", "italic", "bold" }, { "Symbol", "Symbol", "normal", "normal" }, { 0, "Times", "normal", "normal" } /* default */ }; typedef struct _svgColor svgColor; struct _svgColor { char* name; unsigned char r; unsigned char g; unsigned char b; }; static char* svg_color_closest (wmfRGB*); /* These are the colors defined in the SVG standard */ static svgColor svg_named_color[147] = { { "aliceblue", 240, 248, 255 }, { "antiquewhite", 250, 235, 215 }, { "aqua", 0, 255, 255 }, { "aquamarine", 127, 255, 212 }, { "azure", 240, 255, 255 }, { "beige", 245, 245, 220 }, { "bisque", 255, 228, 196 }, { "black", 0, 0, 0 }, { "blanchedalmond", 255, 235, 205 }, { "blue", 0, 0, 255 }, { "blueviolet", 138, 43, 226 }, { "brown", 165, 42, 42 }, { "burlywood", 222, 184, 135 }, { "cadetblue", 95, 158, 160 }, { "chartreuse", 127, 255, 0 }, { "chocolate", 210, 105, 30 }, { "coral", 255, 127, 80 }, { "cornflowerblue", 100, 149, 237 }, { "cornsilk", 255, 248, 220 }, { "crimson", 220, 20, 60 }, { "cyan", 0, 255, 255 }, { "darkblue", 0, 0, 139 }, { "darkcyan", 0, 139, 139 }, { "darkgoldenrod", 184, 134, 11 }, { "darkgray", 169, 169, 169 }, { "darkgreen", 0, 100, 0 }, { "darkgrey", 169, 169, 169 }, { "darkkhaki", 189, 183, 107 }, { "darkmagenta", 139, 0, 139 }, { "darkolivegreen", 85, 107, 47 }, { "darkorange", 255, 140, 0 }, { "darkorchid", 153, 50, 204 }, { "darkred", 139, 0, 0 }, { "darksalmon", 233, 150, 122 }, { "darkseagreen", 143, 188, 143 }, { "darkslateblue", 72, 61, 139 }, { "darkslategray", 47, 79, 79 }, { "darkslategrey", 47, 79, 79 }, { "darkturquoise", 0, 206, 209 }, { "darkviolet", 148, 0, 211 }, { "deeppink", 255, 20, 147 }, { "deepskyblue", 0, 191, 255 }, { "dimgray", 105, 105, 105 }, { "dimgrey", 105, 105, 105 }, { "dodgerblue", 30, 144, 255 }, { "firebrick", 178, 34, 34 }, { "floralwhite", 255, 250, 240 }, { "forestgreen", 34, 139, 34 }, { "fuchsia", 255, 0, 255 }, { "gainsboro", 220, 220, 220 }, { "ghostwhite", 248, 248, 255 }, { "gold", 255, 215, 0 }, { "goldenrod", 218, 165, 32 }, { "gray", 128, 128, 128 }, { "grey", 128, 128, 128 }, { "green", 0, 128, 0 }, { "greenyellow", 173, 255, 47 }, { "honeydew", 240, 255, 240 }, { "hotpink", 255, 105, 180 }, { "indianred", 205, 92, 92 }, { "indigo", 75, 0, 130 }, { "ivory", 255, 255, 240 }, { "khaki", 240, 230, 140 }, { "lavender", 230, 230, 250 }, { "lavenderblush", 255, 240, 245 }, { "lawngreen", 124, 252, 0 }, { "lemonchiffon", 255, 250, 205 }, { "lightblue", 173, 216, 230 }, { "lightcoral", 240, 128, 128 }, { "lightcyan", 224, 255, 255 }, { "lightgoldenrodyellow", 250, 250, 210 }, { "lightgray", 211, 211, 211 }, { "lightgreen", 144, 238, 144 }, { "lightgrey", 211, 211, 211 }, { "lightpink", 255, 182, 193 }, { "lightsalmon", 255, 160, 122 }, { "lightseagreen", 32, 178, 170 }, { "lightskyblue", 135, 206, 250 }, { "lightslategray", 119, 136, 153 }, { "lightslategrey", 119, 136, 153 }, { "lightsteelblue", 176, 196, 222 }, { "lightyellow", 255, 255, 224 }, { "lime", 0, 255, 0 }, { "limegreen", 50, 205, 50 }, { "linen", 250, 240, 230 }, { "magenta", 255, 0, 255 }, { "maroon", 128, 0, 0 }, { "mediumaquamarine", 102, 205, 170 }, { "mediumblue", 0, 0, 205 }, { "mediumorchid", 186, 85, 211 }, { "mediumpurple", 147, 112, 219 }, { "mediumseagreen", 60, 179, 113 }, { "mediumslateblue", 123, 104, 238 }, { "mediumspringgreen", 0, 250, 154 }, { "mediumturquoise", 72, 209, 204 }, { "mediumvioletred", 199, 21, 133 }, { "midnightblue", 25, 25, 112 }, { "mintcream", 245, 255, 250 }, { "mistyrose", 255, 228, 225 }, { "moccasin", 255, 228, 181 }, { "navajowhite", 255, 222, 173 }, { "navy", 0, 0, 128 }, { "oldlace", 253, 245, 230 }, { "olive", 128, 128, 0 }, { "olivedrab", 107, 142, 35 }, { "orange", 255, 165, 0 }, { "orangered", 255, 69, 0 }, { "orchid", 218, 112, 214 }, { "palegoldenrod", 238, 232, 170 }, { "palegreen", 152, 251, 152 }, { "paleturquoise", 175, 238, 238 }, { "palevioletred", 219, 112, 147 }, { "papayawhip", 255, 239, 213 }, { "peachpuff", 255, 218, 185 }, { "peru", 205, 133, 63 }, { "pink", 255, 192, 203 }, { "plum", 221, 160, 221 }, { "powderblue", 176, 224, 230 }, { "purple", 128, 0, 128 }, { "red", 255, 0, 0 }, { "rosybrown", 188, 143, 143 }, { "royalblue", 65, 105, 225 }, { "saddlebrown", 139, 69, 19 }, { "salmon", 250, 128, 114 }, { "sandybrown", 244, 164, 96 }, { "seagreen", 46, 139, 87 }, { "seashell", 255, 245, 238 }, { "sienna", 160, 82, 45 }, { "silver", 192, 192, 192 }, { "skyblue", 135, 206, 235 }, { "slateblue", 106, 90, 205 }, { "slategray", 112, 128, 144 }, { "slategrey", 112, 128, 144 }, { "snow", 255, 250, 250 }, { "springgreen", 0, 255, 127 }, { "steelblue", 70, 130, 180 }, { "tan", 210, 180, 140 }, { "teal", 0, 128, 128 }, { "thistle", 216, 191, 216 }, { "tomato", 255, 99, 71 }, { "turquoise", 64, 224, 208 }, { "violet", 238, 130, 238 }, { "wheat", 245, 222, 179 }, { "white", 255, 255, 255 }, { "whitesmoke", 245, 245, 245 }, { "yellow", 255, 255, 0 }, { "yellowgreen", 154, 205, 50 }}; #endif /* ! WMFIPA_SVG_H */ libwmf-0.2.8.4/src/ipa/xgd.h0000644000077100007710000000546307355336371015022 0ustar fjffjf00000000000000/* libwmf ("ipa/gd.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_GD_H #define WMFIPA_GD_H /* I suppose I shouldn't call this file gd.h, but as long is included * before any other "gd*.h" there's no problem... */ #include extern int gdImageBoundsSafe (gdImage*,int,int); extern void gdClipSetFree (gdImage*); extern void gdClipSetReset (gdImage*); extern void gdClipSetAdd (gdImage*,gdClipRectangle*); typedef enum { gd_arc_ellipse = 0, gd_arc_open, gd_arc_pie, gd_arc_chord } gd_arc_t; typedef struct _gd_t gd_t; /* extern char* gdft_draw_bitmap (gdImagePtr,int,FT_Bitmap,int,int); */ static void gd_draw_arc (wmfAPI*,wmfDrawArc_t*,gd_arc_t); static int gd_sink (void*,const char*,int); static gdPoint gd_translate (wmfAPI*,wmfD_Coord); static gdPoint gd_translate_ft64 (wmfAPI*,wmfD_Coord,FT_Vector*); static float gd_width (wmfAPI*,float); static float gd_height (wmfAPI*,float); static int setbrushstyle (wmfAPI*,wmfDC*); static int setlinestyle (wmfAPI*,wmfDC*); struct _gd_t { gdImagePtr image; int white; /* Pen data */ struct { gdImagePtr image; int width; int height; } pen; struct { gdImagePtr hatch; /* 8x8 only */ gdImagePtr image; int width; int height; } brush; /* Sink data */ long max_length; long length; char* buffer; char* ptr; }; static unsigned char HS_BDIAGONAL_bits[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; static unsigned char HS_CROSS_bits[] = { 0x08, 0x08, 0x08, 0xff, 0x08, 0x08, 0x08, 0x08}; static unsigned char HS_DIAGCROSS_bits[] = { 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81}; static unsigned char HS_FDIAGONAL_bits[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; static unsigned char HS_HORIZONTAL_bits[] = { 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00}; static unsigned char HS_VERTICAL_bits[] = { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08}; /* font.h */ static void gd_draw_ftbitmap (wmfAPI*,FT_Bitmap*,gdPoint,wmfRGB*,wmfRGB*); #endif /* ! WMFIPA_GD_H */ libwmf-0.2.8.4/src/ipa/x.h0000644000077100007710000000627607355336371014512 0ustar fjffjf00000000000000/* libwmf ("ipa/x.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_X_H #define WMFIPA_X_H /* ROP code to GC function conversion */ static int Our_XROPfunction[16] = { GXclear, /* R2_BLACK */ GXnor, /* R2_NOTMERGEPEN */ GXandInverted, /* R2_MASKNOTPEN */ GXcopyInverted, /* R2_NOTCOPYPEN */ GXandReverse, /* R2_MASKPENNOT */ GXinvert, /* R2_NOT */ GXxor, /* R2_XORPEN */ GXnand, /* R2_NOTMASKPEN */ GXand, /* R2_MASKPEN */ GXequiv, /* R2_NOTXORPEN */ GXnoop, /* R2_NOP */ GXorInverted, /* R2_MERGENOTPEN */ GXcopy, /* R2_COPYPEN */ GXorReverse, /* R2_MERGEPENNOT */ GXor, /* R2_MERGEPEN */ GXset /* R2_WHITE */ }; #define NB_HATCH_STYLES 6 static unsigned char HatchBrushes[NB_HATCH_STYLES + 1][8] = { { 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00 }, /* HS_HORIZONTAL */ { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* HS_VERTICAL */ { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }, /* HS_FDIAGONAL */ { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }, /* HS_BDIAGONAL */ { 0x08, 0x08, 0x08, 0xff, 0x08, 0x08, 0x08, 0x08 }, /* HS_CROSS */ { 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81 }, /* HS_DIAGCROSS */ { 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb } /* Hack for DKGRAY */ }; static char PEN_dash[] = { 5,3 }; /* ----- ----- ----- */ static char PEN_dot[] = { 2,2 }; /* -- -- -- -- -- -- */ static char PEN_dashdot[] = { 4,3,2,3 }; /* ---- -- ---- -- */ static char PEN_dashdotdot[] = { 4,2,2,2,2,2 }; /* ---- -- -- ---- -- */ static char PEN_alternate[] = { 1,1 }; /* FIXME */ static void setbrushstyle (wmfAPI*,wmfDC*); static void setlinestyle (wmfAPI*,wmfDC*); static void setdefaultstyle (wmfAPI*); /* device.h */ static XPoint x_translate (wmfAPI*,wmfD_Coord); static XPoint x_translate_ft64 (wmfAPI*,wmfD_Coord,FT_Vector*); static float x_width (wmfAPI*,float); static float x_height (wmfAPI*,float); /* color.h */ static void setup_color (wmfAPI*); static unsigned long get_color (wmfAPI*,wmfRGB*); /* draw.h */ typedef enum { x_arc_ellipse = 0, x_arc_open, x_arc_pie, x_arc_chord } x_arc_t; static void x_draw_arc (wmfAPI*,wmfDrawArc_t*,x_arc_t); /* font.h */ static void x_draw_ftbitmap (wmfAPI*,FT_Bitmap*,XPoint,wmfRGB*,wmfRGB*); #endif /* ! WMFIPA_X_H */ libwmf-0.2.8.4/src/ipa/plot.h0000644000077100007710000000244507264374010015202 0ustar fjffjf00000000000000/* libwmf ("ipa/plot.h"): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WMFIPA_PLOT_H #define WMFIPA_PLOT_H #include typedef struct _plotPoint plotPoint; typedef struct _plot_t plot_t; static plotPoint plot_translate (wmfAPI*,wmfD_Coord); static float plot_width (wmfAPI*,float); static float plot_height (wmfAPI*,float); struct _plotPoint { int x; int y; }; struct _plot_t { plPlotter* plotter; plPlotterParams* params; }; #endif /* ! WMFIPA_PLOT_H */ libwmf-0.2.8.4/src/convert/0000755000077100007710000000000010272000331014736 5ustar fjffjf00000000000000libwmf-0.2.8.4/src/convert/Makefile.am0000644000077100007710000000151307470662126017020 0ustar fjffjf00000000000000CFLAGS = @CFLAGS@ @WMF_CFLAGS@ LDFLAGS = -L$(top_builddir)/src/.libs @WMF_LIBFLAGS@ @LDFLAGS@ DEFS = @DEFS@ @WMF_DEFS@ \ -DPACKAGE=\"@PACKAGE@\" \ -DVERSION=\"@VERSION@\" INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_builddir) if LIBWMF_OPT_LAYERS WMF2LAYERS = wmf2eps wmf2fig wmf2svg else WMF2LAYERS = endif if LIBWMF_OPT_GD WMF2GD = wmf2gd else WMF2GD = endif if LIBWMF_OPT_X WMF2X = wmf2x else WMF2X = endif if LIBWMF_OPT_PLOT WMF2PLOT = wmf2plot else WMF2PLOT = endif bin_PROGRAMS = $(WMF2LAYERS) $(WMF2GD) $(WMF2X) $(WMF2PLOT) wmf2eps_LDADD = ../libwmf.la ../libwmflite.la wmf2fig_LDADD = ../libwmf.la ../libwmflite.la wmf2svg_LDADD = ../libwmf.la ../libwmflite.la wmf2gd_LDADD = ../libwmf.la ../libwmflite.la wmf2x_LDADD = ../libwmf.la ../libwmflite.la wmf2plot_LDADD = ../libwmf.la ../libwmflite.la libwmf-0.2.8.4/src/convert/Makefile.in0000664000077100007710000004453210272000331017015 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ SOURCES = wmf2eps.c wmf2fig.c wmf2gd.c wmf2plot.c wmf2svg.c wmf2x.c srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ $(am__EXEEXT_4) subdir = src/convert DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = @LIBWMF_OPT_LAYERS_TRUE@am__EXEEXT_1 = wmf2eps$(EXEEXT) \ @LIBWMF_OPT_LAYERS_TRUE@ wmf2fig$(EXEEXT) wmf2svg$(EXEEXT) @LIBWMF_OPT_GD_TRUE@am__EXEEXT_2 = wmf2gd$(EXEEXT) @LIBWMF_OPT_X_TRUE@am__EXEEXT_3 = wmf2x$(EXEEXT) @LIBWMF_OPT_PLOT_TRUE@am__EXEEXT_4 = wmf2plot$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) wmf2eps_SOURCES = wmf2eps.c wmf2eps_OBJECTS = wmf2eps.$(OBJEXT) wmf2eps_DEPENDENCIES = ../libwmf.la ../libwmflite.la wmf2fig_SOURCES = wmf2fig.c wmf2fig_OBJECTS = wmf2fig.$(OBJEXT) wmf2fig_DEPENDENCIES = ../libwmf.la ../libwmflite.la wmf2gd_SOURCES = wmf2gd.c wmf2gd_OBJECTS = wmf2gd.$(OBJEXT) wmf2gd_DEPENDENCIES = ../libwmf.la ../libwmflite.la wmf2plot_SOURCES = wmf2plot.c wmf2plot_OBJECTS = wmf2plot.$(OBJEXT) wmf2plot_DEPENDENCIES = ../libwmf.la ../libwmflite.la wmf2svg_SOURCES = wmf2svg.c wmf2svg_OBJECTS = wmf2svg.$(OBJEXT) wmf2svg_DEPENDENCIES = ../libwmf.la ../libwmflite.la wmf2x_SOURCES = wmf2x.c wmf2x_OBJECTS = wmf2x.$(OBJEXT) wmf2x_DEPENDENCIES = ../libwmf.la ../libwmflite.la DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = wmf2eps.c wmf2fig.c wmf2gd.c wmf2plot.c wmf2svg.c wmf2x.c DIST_SOURCES = wmf2eps.c wmf2fig.c wmf2gd.c wmf2plot.c wmf2svg.c \ wmf2x.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @WMF_CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ @WMF_DEFS@ \ -DPACKAGE=\"@PACKAGE@\" \ -DVERSION=\"@VERSION@\" DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = -L$(top_builddir)/src/.libs @WMF_LIBFLAGS@ @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_builddir) @LIBWMF_OPT_LAYERS_FALSE@WMF2LAYERS = @LIBWMF_OPT_LAYERS_TRUE@WMF2LAYERS = wmf2eps wmf2fig wmf2svg @LIBWMF_OPT_GD_FALSE@WMF2GD = @LIBWMF_OPT_GD_TRUE@WMF2GD = wmf2gd @LIBWMF_OPT_X_FALSE@WMF2X = @LIBWMF_OPT_X_TRUE@WMF2X = wmf2x @LIBWMF_OPT_PLOT_FALSE@WMF2PLOT = @LIBWMF_OPT_PLOT_TRUE@WMF2PLOT = wmf2plot wmf2eps_LDADD = ../libwmf.la ../libwmflite.la wmf2fig_LDADD = ../libwmf.la ../libwmflite.la wmf2svg_LDADD = ../libwmf.la ../libwmflite.la wmf2gd_LDADD = ../libwmf.la ../libwmflite.la wmf2x_LDADD = ../libwmf.la ../libwmflite.la wmf2plot_LDADD = ../libwmf.la ../libwmflite.la all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/convert/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/convert/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done wmf2eps$(EXEEXT): $(wmf2eps_OBJECTS) $(wmf2eps_DEPENDENCIES) @rm -f wmf2eps$(EXEEXT) $(LINK) $(wmf2eps_LDFLAGS) $(wmf2eps_OBJECTS) $(wmf2eps_LDADD) $(LIBS) wmf2fig$(EXEEXT): $(wmf2fig_OBJECTS) $(wmf2fig_DEPENDENCIES) @rm -f wmf2fig$(EXEEXT) $(LINK) $(wmf2fig_LDFLAGS) $(wmf2fig_OBJECTS) $(wmf2fig_LDADD) $(LIBS) wmf2gd$(EXEEXT): $(wmf2gd_OBJECTS) $(wmf2gd_DEPENDENCIES) @rm -f wmf2gd$(EXEEXT) $(LINK) $(wmf2gd_LDFLAGS) $(wmf2gd_OBJECTS) $(wmf2gd_LDADD) $(LIBS) wmf2plot$(EXEEXT): $(wmf2plot_OBJECTS) $(wmf2plot_DEPENDENCIES) @rm -f wmf2plot$(EXEEXT) $(LINK) $(wmf2plot_LDFLAGS) $(wmf2plot_OBJECTS) $(wmf2plot_LDADD) $(LIBS) wmf2svg$(EXEEXT): $(wmf2svg_OBJECTS) $(wmf2svg_DEPENDENCIES) @rm -f wmf2svg$(EXEEXT) $(LINK) $(wmf2svg_LDFLAGS) $(wmf2svg_OBJECTS) $(wmf2svg_LDADD) $(LIBS) wmf2x$(EXEEXT): $(wmf2x_OBJECTS) $(wmf2x_DEPENDENCIES) @rm -f wmf2x$(EXEEXT) $(LINK) $(wmf2x_LDFLAGS) $(wmf2x_OBJECTS) $(wmf2x_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmf2eps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmf2fig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmf2gd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmf2plot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmf2svg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmf2x.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-exec-am: install-binPROGRAMS install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/src/convert/wmf2eps.c0000644000077100007710000003503107365251534016515 0ustar fjffjf00000000000000/* libwmf (convert/wmf2eps.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include #include #include "wmfdefs.h" #include "libwmf/eps.h" #define A4_Width 596 #define A4_Height 842 #define Default_Margin 60 typedef struct { int argc; char** argv; char** auto_files; char* wmf_filename; char* eps_filename; FILE* out; wmf_eps_t options; int centre; int maxpect; } PlotData; int wmf2eps_draw (PlotData*); void wmf2eps_init (PlotData*,int,char**); void wmf2eps_help (PlotData*); int wmf2eps_args (PlotData*); int wmf2eps_auto (PlotData*); int wmf2eps_file (PlotData*); int bbox_translate (PlotData*,char*); int explicit_wmf_error (char*,wmf_error_t); int wmf2eps_draw (PlotData* pdata) { int status = 0; unsigned int wmf_width; unsigned int wmf_height; unsigned int page_width; unsigned int page_height; unsigned long flags; int page_margin; float def_width = 0; float def_height = 0; float ratio_wmf; float ratio_page; static char* Default_Creator = "wmf2eps"; wmf_error_t err; wmf_eps_t* ddata = 0; wmfAPI* API = 0; wmfAPI_Options api_options; flags = 0; flags |= WMF_OPT_FUNCTION; api_options.function = wmf_eps_function; flags |= WMF_OPT_ARGS; api_options.argc = pdata->argc; api_options.argv = pdata->argv; #ifndef DEBUG flags |= WMF_OPT_IGNORE_NONFATAL; #endif err = wmf_api_create (&API,flags,&api_options); status = explicit_wmf_error ("wmf_api_create",err); if (status) { if (API) wmf_api_destroy (API); return (status); } err = wmf_file_open (API,pdata->wmf_filename); status = explicit_wmf_error ("wmf_file_open",err); if (status) { wmf_api_destroy (API); return (status); } err = wmf_scan (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_scan",err); if (status) { wmf_api_destroy (API); return (status); } /* Okay, got this far, everything seems cool. */ ddata = WMF_EPS_GetData (API); ddata->out = wmf_stream_create (API,pdata->out); if (pdata->options.Title) ddata->Title = pdata->options.Title; else ddata->Title = pdata->wmf_filename; if (pdata->options.Creator) ddata->Creator = pdata->options.Creator; else ddata->Creator = Default_Creator; if (pdata->options.Date) ddata->Date = pdata->options.Date; if (pdata->options.For) ddata->For = pdata->options.For; ddata->bbox = pdata->options.bbox; ddata->eps_x = pdata->options.eps_x; /* eps_x, eps_y, eps_width */ ddata->eps_y = pdata->options.eps_y; /* & eps_height may be */ ddata->eps_width = pdata->options.eps_width; /* changed if --centre or */ ddata->eps_height = pdata->options.eps_height; /* --maxpect are set. */ ddata->page_width = pdata->options.page_width; ddata->page_height = pdata->options.page_height; ddata->flags = pdata->options.flags; if (ddata->flags & WMF_EPS_STYLE_PS) { if (ddata->flags & WMF_EPS_LANDSCAPE) { page_width = ddata->page_height; page_height = ddata->page_width; } else { page_width = ddata->page_width; page_height = ddata->page_height; } page_margin = Default_Margin; if ((page_width < 2 * page_margin) || (page_height < 2 * page_margin)) { page_margin = 0; fputs ("wmf2eps: warning: small page: no margins.\n",stderr); } page_width -= 2 * page_margin; page_height -= 2 * page_margin; wmf_size (API,&def_width,&def_height); wmf_width = (unsigned int) ceil (def_width ); wmf_height = (unsigned int) ceil (def_height); if ((wmf_width == 0) || (wmf_height == 0)) { fprintf (stderr,"image `%s' has no size!\n",pdata->wmf_filename); wmf_api_destroy (API); return (1); } /* adjust figure placement as necessary here */ if (pdata->maxpect) { ratio_wmf = (float) wmf_width / (float) wmf_height; ratio_page = (float) page_width / (float) page_height; if (ratio_wmf > ratio_page) { ddata->eps_width = page_width; ddata->eps_height = (unsigned int) ((float) page_width / (float) ratio_wmf); } else { ddata->eps_height = page_height; ddata->eps_width = (unsigned int) ((float) page_height * (float) ratio_wmf); } pdata->centre = 1; } if (pdata->centre) { ddata->eps_x = page_margin + (page_width - ddata->eps_width ) / 2; ddata->eps_y = page_margin + (page_height - ddata->eps_height) / 2; if ((ddata->eps_x < 0) || (ddata->eps_y < 0)) { fputs ("wmf2eps: warning: figure exceeds page.\n",stderr); } } } if (status == 0) { err = wmf_play (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_play",err); } wmf_api_destroy (API); return (status); } void wmf2eps_init (PlotData* pdata,int argc,char** argv) { pdata->argc = argc; pdata->argv = argv; pdata->auto_files = 0; pdata->wmf_filename = 0; pdata->eps_filename = 0; pdata->out = 0; pdata->options.Title = 0; pdata->options.Creator = 0; pdata->options.Date = 0; pdata->options.For = 0; pdata->options.eps_x = Default_Margin; pdata->options.eps_y = Default_Margin; pdata->options.eps_width = 0; pdata->options.eps_height = 0; pdata->options.page_width = A4_Width; pdata->options.page_height = A4_Height; pdata->options.flags = 0; pdata->centre = 0; pdata->maxpect = 0; } void wmf2eps_help (PlotData* pdata) { fputs ("\ Usage: wmf2eps [OPTION]... [-o ] \n\ or: wmf2eps [OPTION]... --auto [ ...]\n\ Convert metafile image to postscript.\n\ \n\ --eps output as eps (default).\n\ --ps output as ps.\n\ --page= where is one of A4 (default). [ps-mode only]\n\ --landscape switch to landscape view. [ps-mode only]\n\ --portrait switch to portrait view (default). [ps-mode only]\n\ --bbox= geometry setting: --bbox=WxH+X+Y [ps-mode only]\n\ --centre centre image in page. [ps-mode only]\n\ --maxpect scale image to maximum size keeping aspect. [ps-mode only]\n\ --title= postscript %%Title\n\ --creator= postscript %%Creator\n\ --date= postscript %%Date\n\ --for= postscript %%For\n\ --version display version info and exit.\n\ --help display this help and exit.\n\ --wmf-help display wmf-related help and exit.\n\ \n\ Report bugs to .\n",stdout); } int wmf2eps_args (PlotData* pdata) { int status = 0; int arg = 0; int argc = pdata->argc; char** argv = pdata->argv; char* page = 0; while ((++arg) < argc) { if (strcmp (argv[arg],"--help") == 0) { wmf2eps_help (pdata); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--wmf-help") == 0) { fputs (wmf_help (),stdout); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--version") == 0) { fprintf (stdout,"%s: version %s\n",PACKAGE,VERSION); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--eps") == 0) { pdata->options.flags &= ~WMF_EPS_STYLE_PS; continue; } if (strcmp (argv[arg],"--ps") == 0) { pdata->options.flags |= WMF_EPS_STYLE_PS; continue; } if (strncmp (argv[arg],"--page=",7) == 0) { page = argv[arg] + 7; if (strcmp (page,"A4") == 0) { pdata->options.page_width = A4_Width; pdata->options.page_height = A4_Height; } else { fprintf (stderr,"wmf2eps: page `%s' not recognized.\n",page); status = arg; break; } continue; } if (strcmp (argv[arg],"--landscape") == 0) { pdata->options.flags |= WMF_EPS_LANDSCAPE; continue; } if (strcmp (argv[arg],"--portrait") == 0) { pdata->options.flags &= ~WMF_EPS_LANDSCAPE; continue; } if (strncmp (argv[arg],"--bbox=",7) == 0) { if (bbox_translate (pdata,argv[arg] + 7)) { status = arg; break; } continue; } if ((strcmp (argv[arg],"--centre") == 0) || (strcmp (argv[arg],"--center") == 0)) { pdata->centre = 1; continue; } if (strcmp (argv[arg],"--maxpect") == 0) { pdata->maxpect = 1; continue; } if (strncmp (argv[arg],"--title=",8) == 0) { pdata->options.Title = argv[arg] + 8; continue; } if (strncmp (argv[arg],"--creator=",10) == 0) { pdata->options.Creator = argv[arg] + 10; continue; } if (strncmp (argv[arg],"--date=",7) == 0) { pdata->options.Date = argv[arg] + 7; continue; } if (strncmp (argv[arg],"--for=",6) == 0) { pdata->options.For = argv[arg] + 6; continue; } if (strcmp (argv[arg],"--auto") == 0) { pdata->auto_files = argv + arg + 1; break; } if (strcmp (argv[arg],"-o") == 0) { if ((++arg) < argc) { pdata->eps_filename = argv[arg]; continue; } fprintf (stderr,"usage: `wmf2eps -o '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strncmp (argv[arg],"--wmf-",6) == 0) { continue; } if (argv[arg][0] != '-') { pdata->wmf_filename = argv[arg]; continue; } fprintf (stderr,"option `%s' not recognized.\n",argv[arg]); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (status == 0) { if ((pdata->auto_files == 0) && (pdata->wmf_filename == 0)) { fprintf (stderr,"No input file specified!\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = argc; } } return (status); } int wmf2eps_auto (PlotData* pdata) { int status = 0; while (1) { pdata->wmf_filename = (*(pdata->auto_files)); if (pdata->wmf_filename == 0) break; if (strcmp (pdata->wmf_filename+strlen(pdata->wmf_filename)-4,".wmf")) { fprintf (stderr,"%s: expected suffix `.wmf'. ",pdata->wmf_filename); fprintf (stderr,"skipping...\n"); status++; } else if ((pdata->eps_filename = malloc (strlen(pdata->wmf_filename)+1)) == 0) { fprintf (stderr,"mem_alloc_err: skipping %s...\n",pdata->wmf_filename); status++; } else { strcpy (pdata->eps_filename,pdata->wmf_filename); strcpy (pdata->eps_filename+strlen(pdata->eps_filename)-3,"eps"); if (wmf2eps_file (pdata)) status++; free (pdata->eps_filename); } pdata->auto_files++; } return (status); } int wmf2eps_file (PlotData* pdata) { int status = 0; pdata->out = stdout; if (pdata->eps_filename) { if ((pdata->out = fopen (pdata->eps_filename,"w")) == 0) { fprintf (stderr,"unable to write to `%s'. ",pdata->eps_filename); fprintf (stderr,"skipping...\n"); status = 1; return (status); } } status = wmf2eps_draw (pdata); if (pdata->out != stdout) fclose (pdata->out); return (status); } int main (int argc,char** argv) { int status = 0; PlotData PData; wmf2eps_init (&PData,argc,argv); status = wmf2eps_args (&PData); if (status) return (status); if (PData.auto_files) status = wmf2eps_auto (&PData); else status = wmf2eps_file (&PData); return (status); } int bbox_translate (PlotData* pdata,char* bbox) { int status = 0; int sign_x = 1; int sign_y = 1; int tmp; char* geom = 0; char* geom_x = 0; char* geom_y = 0; char* geom_width = 0; char* geom_height = 0; char* ptr; geom = (char*) malloc (strlen (bbox) + 1); if (geom == 0) { fputs ("wmf2eps: erk! insufficient memory!\n",stderr); return (1); } strcpy (geom,bbox); ptr = geom; geom_width = ptr; while ((*ptr) && (status == 0)) { if (!isdigit ((int)(*ptr))) { if ((*ptr) == 'x') { if (geom_height) status = 2; else geom_height = ptr + 1; (*ptr) = 0; } else if (((*ptr) == '+') || ((*ptr) == '-')) { if (geom_height == 0) status = 2; else if (geom_x && geom_y) status = 2; else if (geom_x == 0) { geom_x = ptr + 1; if ((*ptr) == '-') sign_x = -1; (*ptr) = 0; } else { geom_y = ptr + 1; if ((*ptr) == '-') sign_y = -1; (*ptr) = 0; } } else status = 2; } ptr++; } if (status || (geom_height == 0) || (geom_x && (geom_y == 0))) { fputs ("usage: wmf2eps --bbox=WxH+X+Y\n",stderr); return (2); } pdata->options.eps_x = 0; pdata->options.eps_y = 0; pdata->options.eps_width = 0; pdata->options.eps_height = 0; if (sscanf (geom_width,"%d",&tmp) != 1) status++; else pdata->options.eps_width = tmp; if (sscanf (geom_height,"%d",&tmp) != 1) status++; else pdata->options.eps_height = tmp; if (geom_x && geom_y) { if (sscanf (geom_x,"%d",&tmp) != 1) status++; else pdata->options.eps_x = tmp * sign_x; if (sscanf (geom_y,"%d",&tmp) != 1) status++; else pdata->options.eps_y = tmp * sign_y; } if (status) { fputs ("usage: wmf2eps --bbox=WxH+X+Y\n",stderr); return (2 + status); } free (geom); return (status); } int explicit_wmf_error (char* str,wmf_error_t err) { int status = 0; switch (err) { case wmf_E_None: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_None.\n",str); #endif status = 0; break; case wmf_E_InsMem: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_InsMem.\n",str); #endif status = 1; break; case wmf_E_BadFile: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFile.\n",str); #endif status = 1; break; case wmf_E_BadFormat: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFormat.\n",str); #endif status = 1; break; case wmf_E_EOF: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_EOF.\n",str); #endif status = 1; break; case wmf_E_DeviceError: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_DeviceError.\n",str); #endif status = 1; break; case wmf_E_Glitch: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Glitch.\n",str); #endif status = 1; break; case wmf_E_Assert: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Assert.\n",str); #endif status = 1; break; default: #ifdef DEBUG fprintf (stderr,"%s returned unexpected value.\n",str); #endif status = 1; break; } return (status); } libwmf-0.2.8.4/src/convert/wmf2fig.c0000644000077100007710000003324310271767771016503 0ustar fjffjf00000000000000/* libwmf (convert/wmf2fig.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include #include #include "wmfdefs.h" #include "libwmf/fig.h" #define A4_Width 596 #define A4_Height 842 #define Default_Margin 60 typedef struct { int argc; char** argv; char** auto_files; char* wmf_filename; char* fig_filename; FILE* out; wmf_fig_t options; unsigned long image_format; } PlotData; typedef struct _ImageContext ImageContext; struct _ImageContext { int number; char* prefix; char* suffix; }; char* image_name (void*); int wmf2fig_draw (PlotData*); void wmf2fig_init (PlotData*,int,char**); void wmf2fig_help (PlotData*); int wmf2fig_args (PlotData*); int wmf2fig_auto (PlotData*); int wmf2fig_file (PlotData*); int explicit_wmf_error (char*,wmf_error_t); int wmf2fig_draw (PlotData* pdata) { int status = 0; #if 0 unsigned int wmf_width; unsigned int wmf_height; unsigned int page_width; unsigned int page_height; #endif unsigned long flags; #if 0 int page_margin; float def_width; float def_height; float ratio_wmf; float ratio_page; #endif static char* Default_Creator = "wmf2fig"; ImageContext IC; wmf_error_t err; wmf_fig_t* ddata = 0; wmfAPI* API = 0; wmfAPI_Options api_options; flags = 0; flags |= WMF_OPT_FUNCTION; api_options.function = wmf_fig_function; flags |= WMF_OPT_ARGS; api_options.argc = pdata->argc; api_options.argv = pdata->argv; #ifndef DEBUG flags |= WMF_OPT_IGNORE_NONFATAL; #endif err = wmf_api_create (&API,flags,&api_options); status = explicit_wmf_error ("wmf_api_create",err); if (status) { if (API) wmf_api_destroy (API); return (status); } err = wmf_file_open (API,pdata->wmf_filename); status = explicit_wmf_error ("wmf_file_open",err); if (status) { wmf_api_destroy (API); return (status); } err = wmf_scan (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_scan",err); if (status) { wmf_api_destroy (API); return (status); } /* Okay, got this far, everything seems cool. */ ddata = WMF_FIG_GetData (API); if (((ddata->flags & WMF_FIG_SUPPORTS_PNG) == 0) && (pdata->image_format == WMF_FIG_IMAGE_PNG)) { fprintf (stderr,"Sorry! PNG image format is not supported!\n"); wmf_api_destroy (API); status = 1; return (status); } if (((ddata->flags & WMF_FIG_SUPPORTS_JPEG) == 0) && (pdata->image_format == WMF_FIG_IMAGE_JPEG)) { fprintf (stderr,"Sorry! JPEG image format is not supported!\n"); wmf_api_destroy (API); status = 1; return (status); } ddata->flags |= pdata->image_format; ddata->out = wmf_stream_create (API,pdata->out); if (pdata->options.Title) ddata->Title = pdata->options.Title; else ddata->Title = pdata->wmf_filename; if (pdata->options.Creator) ddata->Creator = pdata->options.Creator; else ddata->Creator = Default_Creator; if (pdata->options.Date) ddata->Date = pdata->options.Date; if (pdata->options.For) ddata->For = pdata->options.For; ddata->dpi = pdata->options.dpi; ddata->format = pdata->options.format; ddata->ddec = pdata->options.ddec; ddata->bbox = pdata->options.bbox; ddata->fig_width = pdata->options.fig_width; ddata->fig_height = pdata->options.fig_height; ddata->flags |= pdata->options.flags; IC.number = 0; IC.prefix = (char*) malloc (strlen (pdata->wmf_filename) + 1); if (IC.prefix) { strcpy (IC.prefix,pdata->wmf_filename); if (wmf_strstr (pdata->wmf_filename,".wmf")) IC.prefix[strlen (pdata->wmf_filename)-4] = 0; ddata->image.context = (void*) (&IC); ddata->image.name = image_name; } if (pdata->image_format == WMF_FIG_IMAGE_PNG) { IC.suffix = "png"; } else if (pdata->image_format == WMF_FIG_IMAGE_JPEG) { IC.suffix = "jpg"; } else { IC.suffix = "eps"; } if (status == 0) { err = wmf_play (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_play",err); } wmf_api_destroy (API); return (status); } void wmf2fig_init (PlotData* pdata,int argc,char** argv) { pdata->argc = argc; pdata->argv = argv; pdata->auto_files = 0; pdata->wmf_filename = 0; pdata->fig_filename = 0; pdata->out = 0; pdata->options.Title = 0; pdata->options.Creator = 0; pdata->options.Date = 0; pdata->options.For = 0; pdata->options.fig_x = 0; pdata->options.fig_y = 0; pdata->options.fig_width = 0; pdata->options.fig_height = 0; pdata->options.format = wmf_P_A4; pdata->options.dpi = 1200; pdata->options.flags = 0; pdata->options.ddec = 1; pdata->image_format = 0; } void wmf2fig_help (PlotData* pdata) { fputs ("\ Usage: wmf2fig [OPTION]... [-o ] \n\ or: wmf2fig [OPTION]... --auto [ ...]\n\ Convert metafile image to XFig format.\n\ \n\ --figunit= the FIG unit as fraction of inch, default: 1200\n\ --page= where is one of (default A4):\n\ A[01234] B5 Letter Legal Ledger Tabloid.\n\ --landscape switch to landscape view.\n\ --portrait switch to portrait view (default).\n\ --maxpect scale image: fit to page (1 inch margins)\n\ --no-margins ignore margins when scaling\n\ --flat render at one depth value\n\ --image= where is one of eps,png,jpg (default eps):\n\ --title= comment # Title\n\ --creator= comment # Creator\n\ --date= comment # Date\n\ --for= comment # For\n\ --version display version info and exit.\n\ --help display this help and exit.\n\ --wmf-help display wmf-related help and exit.\n\ \n\ Report bugs to wvware-devel@lists.sourceforge.net.\n",stdout); } int wmf2fig_args (PlotData* pdata) { int status = 0; int arg = 0; int argc = pdata->argc; char** argv = pdata->argv; char* page = 0; char* ifmt = 0; while ((++arg) < argc) { if (strcmp (argv[arg],"--help") == 0) { wmf2fig_help (pdata); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--wmf-help") == 0) { fputs (wmf_help (),stdout); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--version") == 0) { fprintf (stdout,"%s: version %s\n",PACKAGE,VERSION); status = argc; /* i.e., not an error but don't continue */ break; } if (strncmp (argv[arg],"--figunit=",10) == 0) { if (sscanf (argv[arg] + 10,"%u",&(pdata->options.dpi)) != 1) { fprintf (stderr,"can't interpret figunit `%s'...\n",argv[arg] + 10); status = arg; break; } else if (pdata->options.dpi == 0) { fprintf (stderr,"figunit (dpi) cannot be 0!\n"); status = arg; break; } continue; } if (strncmp (argv[arg],"--page=",7) == 0) { page = argv[arg] + 7; if (strcmp (page,"A4") == 0) pdata->options.format = wmf_P_A4; else if (strcmp (page,"A3") == 0) pdata->options.format = wmf_P_A3; else if (strcmp (page,"A2") == 0) pdata->options.format = wmf_P_A2; else if (strcmp (page,"A1") == 0) pdata->options.format = wmf_P_A1; else if (strcmp (page,"A0") == 0) pdata->options.format = wmf_P_A0; else if (strcmp (page,"B5") == 0) pdata->options.format = wmf_P_B5; else if (strcmp (page,"Letter") == 0) pdata->options.format = wmf_P_Letter; else if (strcmp (page,"Legal") == 0) pdata->options.format = wmf_P_Legal; else if (strcmp (page,"Ledger") == 0) pdata->options.format = wmf_P_Ledger; else if (strcmp (page,"Tabloid") == 0) pdata->options.format = wmf_P_Tabloid; else { fprintf (stderr,"wmf2fig: page `%s' not recognized.\n",page); status = arg; break; } continue; } if (strcmp (argv[arg],"--landscape") == 0) { pdata->options.flags |= WMF_FIG_LANDSCAPE; continue; } if (strcmp (argv[arg],"--portrait") == 0) { pdata->options.flags &= ~WMF_FIG_LANDSCAPE; continue; } if (strcmp (argv[arg],"--maxpect") == 0) { pdata->options.flags |= WMF_FIG_MAXPECT; continue; } if (strcmp (argv[arg],"--no-margins") == 0) { pdata->options.flags |= WMF_FIG_NO_MARGINS; continue; } if (strcmp (argv[arg],"--flat") == 0) { pdata->options.ddec = 0; continue; } if (strcmp (argv[arg],"--image=eps") == 0) { pdata->image_format = 0; continue; } if (strcmp (argv[arg],"--image=png") == 0) { pdata->image_format = WMF_FIG_IMAGE_PNG; continue; } if ((strcmp (argv[arg],"--image=jpg" ) == 0) || (strcmp (argv[arg],"--image=jpeg") == 0)) { pdata->image_format = WMF_FIG_IMAGE_JPEG; continue; } if (strncmp (argv[arg],"--image=",8) == 0) { ifmt = argv[arg] + 8; fprintf (stderr,"wmf2fig: image format `%s' not recognized.\n",ifmt); status = arg; break; } if (strncmp (argv[arg],"--title=",8) == 0) { pdata->options.Title = argv[arg] + 8; continue; } if (strncmp (argv[arg],"--creator=",10) == 0) { pdata->options.Creator = argv[arg] + 10; continue; } if (strncmp (argv[arg],"--date=",7) == 0) { pdata->options.Date = argv[arg] + 7; continue; } if (strncmp (argv[arg],"--for=",6) == 0) { pdata->options.For = argv[arg] + 6; continue; } if (strcmp (argv[arg],"--auto") == 0) { pdata->auto_files = argv + arg + 1; break; } if (strcmp (argv[arg],"-o") == 0) { if ((++arg) < argc) { pdata->fig_filename = argv[arg]; continue; } fprintf (stderr,"usage: `wmf2fig -o '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strncmp (argv[arg],"--wmf-",6) == 0) { continue; } if (argv[arg][0] != '-') { pdata->wmf_filename = argv[arg]; continue; } fprintf (stderr,"option `%s' not recognized.\n",argv[arg]); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (status == 0) { if ((pdata->auto_files == 0) && (pdata->wmf_filename == 0)) { fprintf (stderr,"No input file specified!\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = argc; } } return (status); } int wmf2fig_auto (PlotData* pdata) { int status = 0; while (1) { pdata->wmf_filename = (*(pdata->auto_files)); if (pdata->wmf_filename == 0) break; if (strcmp (pdata->wmf_filename+strlen(pdata->wmf_filename)-4,".wmf")) { fprintf (stderr,"%s: expected suffix `.wmf'. ",pdata->wmf_filename); fprintf (stderr,"skipping...\n"); status++; } else if ((pdata->fig_filename = malloc (strlen(pdata->wmf_filename)+1)) == 0) { fprintf (stderr,"mem_alloc_err: skipping %s...\n",pdata->wmf_filename); status++; } else { strcpy (pdata->fig_filename,pdata->wmf_filename); strcpy (pdata->fig_filename+strlen(pdata->fig_filename)-3,"fig"); if (wmf2fig_file (pdata)) status++; free (pdata->fig_filename); } pdata->auto_files++; } return (status); } int wmf2fig_file (PlotData* pdata) { int status = 0; pdata->out = stdout; if (pdata->fig_filename) { if ((pdata->out = fopen (pdata->fig_filename,"w")) == 0) { fprintf (stderr,"unable to write to `%s'. ",pdata->fig_filename); fprintf (stderr,"skipping...\n"); status = 1; return (status); } } status = wmf2fig_draw (pdata); if (pdata->out != stdout) fclose (pdata->out); return (status); } int main (int argc,char** argv) { int status = 0; PlotData PData; wmf2fig_init (&PData,argc,argv); status = wmf2fig_args (&PData); if (status) return (status); if (PData.auto_files) status = wmf2fig_auto (&PData); else status = wmf2fig_file (&PData); return (status); } int explicit_wmf_error (char* str,wmf_error_t err) { int status = 0; switch (err) { case wmf_E_None: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_None.\n",str); #endif status = 0; break; case wmf_E_InsMem: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_InsMem.\n",str); #endif status = 1; break; case wmf_E_BadFile: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFile.\n",str); #endif status = 1; break; case wmf_E_BadFormat: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFormat.\n",str); #endif status = 1; break; case wmf_E_EOF: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_EOF.\n",str); #endif status = 1; break; case wmf_E_DeviceError: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_DeviceError.\n",str); #endif status = 1; break; case wmf_E_Glitch: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Glitch.\n",str); #endif status = 1; break; case wmf_E_Assert: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Assert.\n",str); #endif status = 1; break; default: #ifdef DEBUG fprintf (stderr,"%s returned unexpected value.\n",str); #endif status = 1; break; } return (status); } char* image_name (void* context) { ImageContext* IC = (ImageContext*) context; int length; char* name = 0; length = strlen (IC->prefix) + 16; name = malloc (length); if (name == 0) return (0); IC->number++; sprintf (name,"%s-%d.%s",IC->prefix,IC->number,IC->suffix); return (name); } libwmf-0.2.8.4/src/convert/wmf2gd.c0000644000077100007710000002734207575442643016334 0ustar fjffjf00000000000000/* libwmf (convert/wmf2gd.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include #include #include "wmfdefs.h" #include "libwmf/gd.h" typedef struct { int argc; char** argv; char** auto_files; char* wmf_filename; char* gd_filename; wmf_gd_t options; unsigned int max_width; unsigned int max_height; unsigned long max_flags; } PlotData; #define WMF2GD_MAXPECT (1 << 0) #define WMF2GD_MAXSIZE (1 << 1) int wmf2gd_draw (PlotData*); void wmf2gd_init (PlotData*,int,char**); void wmf2gd_help (PlotData*); int wmf2gd_args (PlotData*); int wmf2gd_auto (PlotData*); int wmf2gd_file (PlotData*); int wmf2gd_status (void*,float); int explicit_wmf_error (char*,wmf_error_t); int wmf2gd_draw (PlotData* pdata) { int status = 0; float wmf_width; float wmf_height; float ratio_wmf; float ratio_bounds; unsigned int disp_width = 0; unsigned int disp_height = 0; unsigned long flags; unsigned long max_flags; wmf_error_t err; wmf_gd_t* ddata = 0; wmfAPI* API = 0; wmfAPI_Options api_options; flags = 0; flags |= WMF_OPT_FUNCTION; api_options.function = wmf_gd_function; flags |= WMF_OPT_ARGS; api_options.argc = pdata->argc; api_options.argv = pdata->argv; #ifndef DEBUG flags |= WMF_OPT_IGNORE_NONFATAL; #endif err = wmf_api_create (&API,flags,&api_options); status = explicit_wmf_error ("wmf_api_create",err); if (status) { if (API) wmf_api_destroy (API); return (status); } ddata = WMF_GD_GetData (API); if ((pdata->options.type == wmf_gd_png) && ((ddata->flags & WMF_GD_SUPPORTS_PNG) == 0)) { fprintf (stderr,"wmf2gd: libwmf does not support PNG conversion!\n"); status = 1; wmf_api_destroy (API); return (status); } if ((pdata->options.type == wmf_gd_jpeg) && ((ddata->flags & WMF_GD_SUPPORTS_JPEG) == 0)) { fprintf (stderr,"wmf2gd: libwmf does not support JPEG conversion!\n"); status = 1; wmf_api_destroy (API); return (status); } err = wmf_file_open (API,pdata->wmf_filename); status = explicit_wmf_error ("wmf_file_open",err); if (status) { wmf_api_destroy (API); return (status); } wmf_status_function (API,0,wmf2gd_status); err = wmf_scan (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_scan",err); if (status) { wmf_api_destroy (API); return (status); } /* Okay, got this far, everything seems cool. */ ddata->type = pdata->options.type; ddata->flags |= WMF_GD_OUTPUT_FILE; ddata->file = pdata->options.file; ddata->bbox = pdata->options.bbox; wmf_display_size (API,&disp_width,&disp_height,72,72); wmf_width = (float) disp_width; wmf_height = (float) disp_height; if ((wmf_width <= 0) || (wmf_height <= 0)) { fputs ("Bad image size - but this error shouldn't occur...\n",stderr); status = 1; wmf_api_destroy (API); return (status); } max_flags = pdata->max_flags; if ((wmf_width > (float) pdata->max_width ) || (wmf_height > (float) pdata->max_height)) { if (max_flags == 0) max_flags = WMF2GD_MAXPECT; } if (max_flags == WMF2GD_MAXPECT) /* scale the image */ { ratio_wmf = wmf_height / wmf_width; ratio_bounds = (float) pdata->max_height / (float) pdata->max_width; if (ratio_wmf > ratio_bounds) { ddata->height = pdata->max_height; ddata->width = (unsigned int) ((float) ddata->height / ratio_wmf); } else { ddata->width = pdata->max_width; ddata->height = (unsigned int) ((float) ddata->width * ratio_wmf); } } else if (max_flags == WMF2GD_MAXSIZE) /* bizarre option, really */ { ddata->width = pdata->max_width; ddata->height = pdata->max_height; } else { ddata->width = (unsigned int) ceil ((double) wmf_width ); ddata->height = (unsigned int) ceil ((double) wmf_height); } if (status == 0) { err = wmf_play (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_play",err); } wmf_api_destroy (API); return (status); } void wmf2gd_init (PlotData* pdata,int argc,char** argv) { pdata->argc = argc; pdata->argv = argv; pdata->auto_files = 0; pdata->wmf_filename = 0; pdata->gd_filename = 0; pdata->options.type = wmf_gd_png; pdata->options.file = 0; pdata->options.width = 0; pdata->options.height = 0; pdata->options.flags = 0; pdata->max_width = 768; pdata->max_height = 512; pdata->max_flags = 0; } void wmf2gd_help (PlotData* pdata) { fputs ("\ Usage: wmf2gd [OPTION]... [-o ] \n\ or: wmf2gd [OPTION]... [-t jpeg] [-o ] \n\ or: wmf2gd [OPTION]... --auto [ ...]\n\ Convert metafile image to one of: png,jpg.\n\ \n\ -t where is one of: png,jpeg.\n\ --maxwidth= where is maximum width image may have.\n\ --maxheight= where is maximum height image may have.\n\ --maxpect scale image to maximum size keeping aspect.\n\ --maxsize scale image to maximum size.\n\ --version display version info and exit.\n\ --help display this help and exit.\n\ --wmf-help display wmf-related help and exit.\n\ \n\ Report bugs to .\n",stdout); } int wmf2gd_args (PlotData* pdata) { int status = 0; int arg = 0; int argc = pdata->argc; char** argv = pdata->argv; while ((++arg) < argc) { if (strcmp (argv[arg],"--help") == 0) { wmf2gd_help (pdata); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--wmf-help") == 0) { fputs (wmf_help (),stdout); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--version") == 0) { fprintf (stdout,"%s: version %s\n",PACKAGE,VERSION); status = argc; /* i.e., not an error but don't continue */ break; } if (strncmp (argv[arg],"--maxwidth=",11) == 0) { if (sscanf (argv[arg]+11,"%u",&(pdata->max_width)) != 1) { fputs ("usage: --maxwidth=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strncmp (argv[arg],"--maxheight=",12) == 0) { if (sscanf (argv[arg]+12,"%u",&(pdata->max_height)) != 1) { fputs ("usage: --maxheight=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strcmp (argv[arg],"-t") == 0) { if ((++arg) < argc) { #ifdef HAVE_LIBPNG if (strcmp (argv[arg],"png") == 0) { pdata->options.type = wmf_gd_png; continue; } #endif #ifdef HAVE_LIBJPEG if (strcmp (argv[arg],"jpeg") == 0) { pdata->options.type = wmf_gd_jpeg; continue; } #endif fprintf (stderr,"wmf2gd: Sorry! type `%s' not supported!\n",argv[arg]); status = arg; break; } fprintf (stderr,"usage: `wmf2gd -t '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strcmp (argv[arg],"--maxpect") == 0) { pdata->max_flags = WMF2GD_MAXPECT; continue; } if (strcmp (argv[arg],"--maxsize") == 0) { pdata->max_flags = WMF2GD_MAXSIZE; continue; } if (strcmp (argv[arg],"--auto") == 0) { pdata->auto_files = argv + arg + 1; break; } if (strcmp (argv[arg],"-o") == 0) { if ((++arg) < argc) { pdata->gd_filename = argv[arg]; continue; } fprintf (stderr,"usage: `wmf2gd -o '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strncmp (argv[arg],"--wmf-",6) == 0) { continue; } if (argv[arg][0] != '-') { pdata->wmf_filename = argv[arg]; continue; } fprintf (stderr,"option `%s' not recognized.\n",argv[arg]); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (status == 0) { if ((pdata->auto_files == 0) && (pdata->wmf_filename == 0)) { fprintf (stderr,"No input file specified!\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = argc; } } return (status); } int wmf2gd_auto (PlotData* pdata) { int status = 0; while (1) { pdata->wmf_filename = (*(pdata->auto_files)); if (pdata->wmf_filename == 0) break; if (strcmp (pdata->wmf_filename+strlen(pdata->wmf_filename)-4,".wmf")) { fprintf (stderr,"%s: expected suffix `.wmf'. ",pdata->wmf_filename); fprintf (stderr,"skipping...\n"); status++; } else { pdata->gd_filename = malloc (strlen(pdata->wmf_filename)+1); if (pdata->gd_filename == 0) { fprintf (stderr,"mem_alloc_err: skipping %s...\n",pdata->wmf_filename); status++; continue; } strcpy (pdata->gd_filename,pdata->wmf_filename); if (pdata->options.type == wmf_gd_png) { strcpy (pdata->gd_filename+strlen(pdata->gd_filename)-3,"png"); } else if (pdata->options.type == wmf_gd_jpeg) { strcpy (pdata->gd_filename+strlen(pdata->gd_filename)-3,"jpg"); } if (wmf2gd_file (pdata)) status++; free (pdata->gd_filename); } pdata->auto_files++; } return (status); } int wmf2gd_file (PlotData* pdata) { int status = 0; pdata->options.file = stdout; if (pdata->gd_filename) { if ((pdata->options.file = fopen (pdata->gd_filename,"w")) == 0) { fprintf (stderr,"unable to write to `%s'. ",pdata->gd_filename); fprintf (stderr,"skipping...\n"); status = 1; return (status); } } status = wmf2gd_draw (pdata); if (pdata->options.file != stdout) fclose (pdata->options.file); return (status); } int main (int argc,char** argv) { int status = 0; PlotData PData; wmf2gd_init (&PData,argc,argv); status = wmf2gd_args (&PData); if (status) return (status); if (PData.auto_files) status = wmf2gd_auto (&PData); else status = wmf2gd_file (&PData); return (status); } int explicit_wmf_error (char* str,wmf_error_t err) { int status = 0; switch (err) { case wmf_E_None: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_None.\n",str); #endif status = 0; break; case wmf_E_InsMem: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_InsMem.\n",str); #endif status = 1; break; case wmf_E_BadFile: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFile.\n",str); #endif status = 1; break; case wmf_E_BadFormat: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFormat.\n",str); #endif status = 1; break; case wmf_E_EOF: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_EOF.\n",str); #endif status = 1; break; case wmf_E_DeviceError: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_DeviceError.\n",str); #endif status = 1; break; case wmf_E_Glitch: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Glitch.\n",str); #endif status = 1; break; case wmf_E_Assert: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Assert.\n",str); #endif status = 1; break; default: #ifdef DEBUG fprintf (stderr,"%s returned unexpected value.\n",str); #endif status = 1; break; } return (status); } int wmf2gd_status (void* context,float p) { int percent; percent = (int) (p * 100); if (percent < 0) percent = 0; if (percent > 99) percent = 99; fprintf (stderr,"%2d%%\b\b\b",percent); return (0); } libwmf-0.2.8.4/src/convert/wmf2plot.c0000644000077100007710000003440107365251534016704 0ustar fjffjf00000000000000/* wmf2plot (convert/wmf2plot.c): utility for wmf conversion Copyright (C) 2001 The Free Software Foundation wmf2plot is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. wmf2plot is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the libwmf Library; see the file COPYING.GPL. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include #include #include "wmfdefs.h" #ifndef HAVE_LIBPLOT int main (int argc,char** argv) { fprintf (stderr,"%s: no support for GNU plotutils, sorry.\n",argv[0]); return (1); } #else /* ! HAVE_LIBPLOT */ #include "libwmf/plot.h" typedef struct { int argc; char** argv; char** auto_files; char* wmf_filename; char* plot_filename; wmf_plot_t options; unsigned int max_width; unsigned int max_height; unsigned long max_flags; } PlotData; #define WMF2PLOT_MAXPECT (1 << 0) #define WMF2PLOT_MAXSIZE (1 << 1) int wmf2plot_draw (PlotData*); void wmf2plot_init (PlotData*,int,char**); void wmf2plot_help (PlotData*); int wmf2plot_args (PlotData*); int wmf2plot_auto (PlotData*); int wmf2plot_file (PlotData*); int explicit_wmf_error (char*,wmf_error_t); int wmf2plot_draw (PlotData* pdata) { int status = 0; float wmf_width; float wmf_height; float ratio_wmf; float ratio_bounds; unsigned long flags; unsigned long max_flags; wmf_error_t err; wmf_plot_t* ddata = 0; wmfAPI* API = 0; wmfAPI_Options api_options; flags = 0; flags |= WMF_OPT_FUNCTION; api_options.function = wmf_plot_function; flags |= WMF_OPT_ARGS; api_options.argc = pdata->argc; api_options.argv = pdata->argv; #ifndef DEBUG flags |= WMF_OPT_IGNORE_NONFATAL; #endif err = wmf_api_create (&API,flags,&api_options); status = explicit_wmf_error ("wmf_api_create",err); if (status) { if (API) wmf_api_destroy (API); return (status); } ddata = WMF_PLOT_GetData (API); err = wmf_file_open (API,pdata->wmf_filename); status = explicit_wmf_error ("wmf_file_open",err); if (status) { wmf_api_destroy (API); return (status); } err = wmf_scan (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_scan",err); if (status) { wmf_api_destroy (API); return (status); } /* Okay, got this far, everything seems cool. */ ddata->type = pdata->options.type; ddata->file = pdata->options.file; ddata->bbox = pdata->options.bbox; wmf_size (API,&wmf_width,&wmf_height); if ((wmf_width <= 0) || (wmf_height <= 0)) { fputs ("Bad image size - but this error shouldn't occur...\n",stderr); status = 1; wmf_api_destroy (API); return (status); } max_flags = pdata->max_flags; if ((wmf_width > (float) pdata->max_width ) || (wmf_height > (float) pdata->max_height)) { if (max_flags == 0) max_flags = WMF2PLOT_MAXPECT; } if (max_flags == WMF2PLOT_MAXPECT) /* scale the image */ { ratio_wmf = wmf_height / wmf_width; ratio_bounds = (float) pdata->max_height / (float) pdata->max_width; if (ratio_wmf > ratio_bounds) { ddata->height = pdata->max_height; ddata->width = (unsigned int) ((float) ddata->height / ratio_wmf); } else { ddata->width = pdata->max_width; ddata->height = (unsigned int) ((float) ddata->width * ratio_wmf); } } else if (max_flags == WMF2PLOT_MAXSIZE) /* bizarre option, really */ { ddata->width = pdata->max_width; ddata->height = pdata->max_height; } else { ddata->width = (unsigned int) ceil ((double) wmf_width ); ddata->height = (unsigned int) ceil ((double) wmf_height); } if (status == 0) { err = wmf_play (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_play",err); } wmf_api_destroy (API); return (status); } void wmf2plot_init (PlotData* pdata,int argc,char** argv) { pdata->argc = argc; pdata->argv = argv; pdata->auto_files = 0; pdata->wmf_filename = 0; pdata->plot_filename = 0; pdata->options.type = wmf_plot_svg; /* */ pdata->options.width = 0; pdata->options.height = 0; pdata->options.flags = 0; pdata->max_width = 768; pdata->max_height = 512; pdata->max_flags = 0; } void wmf2plot_help (PlotData* pdata) { fputs ("\ Usage: wmf2plot [OPTION]... [-o ] \n\ or: wmf2plot [OPTION]... [-t jpeg] [-o ] \n\ or: wmf2plot [OPTION]... --auto [ ...]\n\ Convert metafile image to one of: png,jpg.\n\ \n\ -t where is one of: generic,bitmap,meta,tek,\n\ regis,hpgl,pcl,fig,cgm,ps,ai,svg,gif,pnm,png,X.\n\ --maxwidth= where is maximum width image may have.\n\ --maxheight= where is maximum height image may have.\n\ --maxpect scale image to maximum size keeping aspect.\n\ --maxsize scale image to maximum size.\n\ --version display version info and exit.\n\ --help display this help and exit.\n\ --wmf-help display wmf-related help and exit.\n\ \n\ Report bugs to .\n",stdout); } int wmf2plot_args (PlotData* pdata) { int status = 0; int arg = 0; int argc = pdata->argc; char** argv = pdata->argv; char* page = 0; while ((++arg) < argc) { if (strcmp (argv[arg],"--help") == 0) { wmf2plot_help (pdata); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--wmf-help") == 0) { fputs (wmf_help (),stdout); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--version") == 0) { fprintf (stdout,"%s: version %s\n",PACKAGE,VERSION); status = argc; /* i.e., not an error but don't continue */ break; } if (strncmp (argv[arg],"--maxwidth=",11) == 0) { if (sscanf (argv[arg]+11,"%u",&(pdata->max_width)) != 1) { fputs ("usage: --maxwidth=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strncmp (argv[arg],"--maxheight=",12) == 0) { if (sscanf (argv[arg]+12,"%u",&(pdata->max_height)) != 1) { fputs ("usage: --maxheight=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strcmp (argv[arg],"-t") == 0) { if ((++arg) < argc) { if (strcmp (argv[arg],"generic") == 0) { pdata->options.type = wmf_plot_generic; continue; } if (strcmp (argv[arg],"bitmap") == 0) { pdata->options.type = wmf_plot_bitmap; continue; } if (strcmp (argv[arg],"meta") == 0) { pdata->options.type = wmf_plot_meta; continue; } if (strcmp (argv[arg],"tek") == 0) { pdata->options.type = wmf_plot_tek; continue; } if (strcmp (argv[arg],"regis") == 0) { pdata->options.type = wmf_plot_regis; continue; } if (strcmp (argv[arg],"hpgl") == 0) { pdata->options.type = wmf_plot_hpgl; continue; } if (strcmp (argv[arg],"pcl") == 0) { pdata->options.type = wmf_plot_pcl; continue; } if (strcmp (argv[arg],"fig") == 0) { pdata->options.type = wmf_plot_fig; continue; } if (strcmp (argv[arg],"cgm") == 0) { pdata->options.type = wmf_plot_cgm; continue; } if (strcmp (argv[arg],"ps") == 0) { pdata->options.type = wmf_plot_ps; continue; } if (strcmp (argv[arg],"ai") == 0) { pdata->options.type = wmf_plot_ai; continue; } if (strcmp (argv[arg],"svg") == 0) { pdata->options.type = wmf_plot_svg; continue; } if (strcmp (argv[arg],"gif") == 0) { pdata->options.type = wmf_plot_gif; continue; } if (strcmp (argv[arg],"pnm") == 0) { pdata->options.type = wmf_plot_pnm; continue; } if (strcmp (argv[arg],"png") == 0) { pdata->options.type = wmf_plot_png; continue; } if (strcmp (argv[arg],"X") == 0) { pdata->options.type = wmf_plot_X; continue; } fprintf (stderr,"wmf2plot: Sorry! type `%s' not supported!\n",argv[arg]); status = arg; break; } fprintf (stderr,"usage: `wmf2plot -t '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strcmp (argv[arg],"--maxpect") == 0) { pdata->max_flags = WMF2PLOT_MAXPECT; continue; } if (strcmp (argv[arg],"--maxsize") == 0) { pdata->max_flags = WMF2PLOT_MAXSIZE; continue; } if (strcmp (argv[arg],"--auto") == 0) { pdata->auto_files = argv + arg + 1; break; } if (strcmp (argv[arg],"-o") == 0) { if ((++arg) < argc) { pdata->plot_filename = argv[arg]; continue; } fprintf (stderr,"usage: `wmf2plot -o '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strncmp (argv[arg],"--wmf-",6) == 0) { continue; } if (argv[arg][0] != '-') { pdata->wmf_filename = argv[arg]; continue; } fprintf (stderr,"option `%s' not recognized.\n",argv[arg]); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (status == 0) { if ((pdata->auto_files == 0) && (pdata->wmf_filename == 0)) { fprintf (stderr,"No input file specified!\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = argc; } } return (status); } int wmf2plot_auto (PlotData* pdata) { int status = 0; while (1) { pdata->wmf_filename = (*(pdata->auto_files)); if (pdata->wmf_filename == 0) break; if (strcmp (pdata->wmf_filename+strlen(pdata->wmf_filename)-4,".wmf")) { fprintf (stderr,"%s: expected suffix `.wmf'. ",pdata->wmf_filename); fprintf (stderr,"skipping...\n"); status++; } else { pdata->plot_filename = malloc (strlen(pdata->wmf_filename)+5); if (pdata->plot_filename == 0) { fprintf (stderr,"mem_alloc_err: skipping %s...\n",pdata->wmf_filename); status++; continue; } strcpy (pdata->plot_filename,pdata->wmf_filename); switch (pdata->options.type) { case wmf_plot_generic: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"generic"); break; case wmf_plot_bitmap: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"bitmap"); break; case wmf_plot_meta: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"meta"); break; case wmf_plot_tek: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"tek"); break; case wmf_plot_regis: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"regis"); break; case wmf_plot_hpgl: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"hpgl"); break; case wmf_plot_pcl: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"pcl"); break; case wmf_plot_fig: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"fig"); break; case wmf_plot_cgm: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"cgm"); break; case wmf_plot_ps: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"ps"); break; case wmf_plot_ai: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"ai"); break; case wmf_plot_svg: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"svg"); break; case wmf_plot_gif: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"gif"); break; case wmf_plot_pnm: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"pnm"); break; case wmf_plot_png: strcpy (pdata->plot_filename+strlen(pdata->plot_filename)-3,"png"); break; case wmf_plot_X: fprintf (stderr,"X with auto? skipping %s...\n",pdata->wmf_filename); free (pdata->plot_filename); pdata->plot_filename = 0; break; default: fprintf (stderr,"glitch: bad type: skipping %s...\n",pdata->wmf_filename); free (pdata->plot_filename); pdata->plot_filename = 0; break; } if (pdata->plot_filename) { if (wmf2plot_file (pdata)) status++; free (pdata->plot_filename); } } pdata->auto_files++; } return (status); } int wmf2plot_file (PlotData* pdata) { int status = 0; pdata->options.file = stdout; if (pdata->plot_filename && (pdata->options.type != wmf_plot_X)) { if ((pdata->options.file = fopen (pdata->plot_filename,"w")) == 0) { fprintf (stderr,"unable to write to `%s'. ",pdata->plot_filename); fprintf (stderr,"skipping...\n"); status = 1; return (status); } } status = wmf2plot_draw (pdata); if (pdata->options.file != stdout) fclose (pdata->options.file); return (status); } int main (int argc,char** argv) { int status = 0; PlotData PData; wmf2plot_init (&PData,argc,argv); status = wmf2plot_args (&PData); if (status) return (status); if (PData.auto_files) status = wmf2plot_auto (&PData); else status = wmf2plot_file (&PData); return (status); } int explicit_wmf_error (char* str,wmf_error_t err) { int status = 0; switch (err) { case wmf_E_None: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_None.\n",str); #endif status = 0; break; case wmf_E_InsMem: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_InsMem.\n",str); #endif status = 1; break; case wmf_E_BadFile: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFile.\n",str); #endif status = 1; break; case wmf_E_BadFormat: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFormat.\n",str); #endif status = 1; break; case wmf_E_EOF: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_EOF.\n",str); #endif status = 1; break; case wmf_E_DeviceError: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_DeviceError.\n",str); #endif status = 1; break; case wmf_E_Glitch: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Glitch.\n",str); #endif status = 1; break; case wmf_E_Assert: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Assert.\n",str); #endif status = 1; break; default: #ifdef DEBUG fprintf (stderr,"%s returned unexpected value.\n",str); #endif status = 1; break; } return (status); } #endif /* ! HAVE_LIBPLOT */ libwmf-0.2.8.4/src/convert/wmf2svg.c0000644000077100007710000003016507365251534016530 0ustar fjffjf00000000000000/* libwmf (convert/wmf2svg.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include #include #include "wmfdefs.h" #include "libwmf/svg.h" typedef struct { int argc; char** argv; char** auto_files; char* wmf_filename; char* svg_filename; FILE* out; gzFile outz; unsigned int svgz; unsigned int inline_images; wmf_svg_t options; unsigned int max_width; unsigned int max_height; unsigned long max_flags; } PlotData; typedef struct _ImageContext ImageContext; struct _ImageContext { int number; char* prefix; }; char* image_name (void*); #define WMF2SVG_MAXPECT (1 << 0) #define WMF2SVG_MAXSIZE (1 << 1) int wmf2svg_draw (PlotData*); void wmf2svg_init (PlotData*,int,char**); void wmf2svg_help (PlotData*); int wmf2svg_args (PlotData*); int wmf2svg_auto (PlotData*); int wmf2svg_file (PlotData*); int explicit_wmf_error (char*,wmf_error_t); int wmf2svg_draw (PlotData* pdata) { int status = 0; float wmf_width; float wmf_height; float ratio_wmf; float ratio_bounds; unsigned long flags; unsigned long max_flags; static char* Default_Description = "wmf2svg"; ImageContext IC; wmf_error_t err; wmf_svg_t* ddata = 0; wmfAPI* API = 0; wmfAPI_Options api_options; flags = 0; flags |= WMF_OPT_FUNCTION; api_options.function = wmf_svg_function; flags |= WMF_OPT_ARGS; api_options.argc = pdata->argc; api_options.argv = pdata->argv; #ifndef DEBUG flags |= WMF_OPT_IGNORE_NONFATAL; #endif err = wmf_api_create (&API,flags,&api_options); status = explicit_wmf_error ("wmf_api_create",err); if (status) { if (API) wmf_api_destroy (API); return (status); } err = wmf_file_open (API,pdata->wmf_filename); status = explicit_wmf_error ("wmf_file_open",err); if (status) { wmf_api_destroy (API); return (status); } err = wmf_scan (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_scan",err); if (status) { wmf_api_destroy (API); return (status); } /* Okay, got this far, everything seems cool. */ ddata = WMF_SVG_GetData (API); if (pdata->out) { ddata->out = wmf_stream_create (API,pdata->out); } else { ddata->out = wmf_ztream_create (API,pdata->outz); } if (pdata->options.Description) ddata->Description = pdata->options.Description; else ddata->Description = Default_Description; ddata->bbox = pdata->options.bbox; wmf_size (API,&wmf_width,&wmf_height); if ((wmf_width <= 0) || (wmf_height <= 0)) { fputs ("Bad image size - but this error shouldn't occur...\n",stderr); status = 1; wmf_api_destroy (API); return (status); } max_flags = pdata->max_flags; if ((wmf_width > (float) pdata->max_width ) || (wmf_height > (float) pdata->max_height)) { if (max_flags == 0) max_flags = WMF2SVG_MAXPECT; } if (max_flags == WMF2SVG_MAXPECT) /* scale the image */ { ratio_wmf = wmf_height / wmf_width; ratio_bounds = (float) pdata->max_height / (float) pdata->max_width; if (ratio_wmf > ratio_bounds) { ddata->height = pdata->max_height; ddata->width = (unsigned int) ((float) ddata->height / ratio_wmf); } else { ddata->width = pdata->max_width; ddata->height = (unsigned int) ((float) ddata->width * ratio_wmf); } } else if (max_flags == WMF2SVG_MAXSIZE) /* bizarre option, really */ { ddata->width = pdata->max_width; ddata->height = pdata->max_height; } else { ddata->width = (unsigned int) ceil ((double) wmf_width ); ddata->height = (unsigned int) ceil ((double) wmf_height); } if (pdata->inline_images) { ddata->flags |= WMF_SVG_INLINE_IMAGES; } else { IC.number = 0; IC.prefix = (char*) malloc (strlen (pdata->wmf_filename) + 1); if (IC.prefix) { strcpy (IC.prefix,pdata->wmf_filename); if (wmf_strstr (pdata->wmf_filename,".wmf")) { IC.prefix[strlen (pdata->wmf_filename)-4] = 0; } ddata->image.context = (void*) (&IC); ddata->image.name = image_name; } } if (status == 0) { err = wmf_play (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_play",err); } wmf_api_destroy (API); return (status); } void wmf2svg_init (PlotData* pdata,int argc,char** argv) { pdata->argc = argc; pdata->argv = argv; pdata->auto_files = 0; pdata->wmf_filename = 0; pdata->svg_filename = 0; pdata->out = 0; pdata->outz = 0; pdata->svgz = 0; pdata->inline_images = 0; pdata->options.Description = 0; pdata->options.width = 0; pdata->options.height = 0; pdata->options.flags = 0; pdata->max_width = 768; pdata->max_height = 512; pdata->max_flags = 0; } void wmf2svg_help (PlotData* pdata) { fputs ("\ Usage: wmf2svg [OPTION]... [-o ] \n\ or: wmf2svg [OPTION]... --auto [ ...]\n\ Convert metafile image to W3C's scaleable vector graphic (SVG) format.\n\ \n\ -z compressed output (.svgz)\n\ --inline include images in the svg code\n\ --desc= description tag\n\ --maxwidth= where is maximum width image may have.\n\ --maxheight= where is maximum height image may have.\n\ --maxpect scale image to maximum size keeping aspect.\n\ --maxsize scale image to maximum size.\n\ --version display version info and exit.\n\ --help display this help and exit.\n\ --wmf-help display wmf-related help and exit.\n\ \n\ Report bugs to .\n",stdout); } int wmf2svg_args (PlotData* pdata) { int status = 0; int arg = 0; int argc = pdata->argc; char** argv = pdata->argv; while ((++arg) < argc) { if (strcmp (argv[arg],"--help") == 0) { wmf2svg_help (pdata); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--wmf-help") == 0) { fputs (wmf_help (),stdout); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--version") == 0) { fprintf (stdout,"%s: version %s\n",PACKAGE,VERSION); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"-z") == 0) { pdata->svgz = 1; continue; } if (strcmp (argv[arg],"--inline") == 0) { pdata->inline_images = 1; continue; } if (strncmp (argv[arg],"--desc=",7) == 0) { pdata->options.Description = argv[arg] + 7; continue; } if (strncmp (argv[arg],"--maxwidth=",11) == 0) { if (sscanf (argv[arg]+11,"%u",&(pdata->max_width)) != 1) { fputs ("usage: --maxwidth=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strncmp (argv[arg],"--maxheight=",12) == 0) { if (sscanf (argv[arg]+12,"%u",&(pdata->max_height)) != 1) { fputs ("usage: --maxheight=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strcmp (argv[arg],"--maxpect") == 0) { pdata->max_flags = WMF2SVG_MAXPECT; continue; } if (strcmp (argv[arg],"--maxsize") == 0) { pdata->max_flags = WMF2SVG_MAXSIZE; continue; } if (strcmp (argv[arg],"--auto") == 0) { pdata->auto_files = argv + arg + 1; break; } if (strcmp (argv[arg],"-o") == 0) { if ((++arg) < argc) { pdata->svg_filename = argv[arg]; continue; } fprintf (stderr,"usage: `wmf2svg -o '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strncmp (argv[arg],"--wmf-",6) == 0) { continue; } if (argv[arg][0] != '-') { pdata->wmf_filename = argv[arg]; continue; } fprintf (stderr,"option `%s' not recognized.\n",argv[arg]); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (status == 0) { if ((pdata->auto_files == 0) && (pdata->wmf_filename == 0)) { fprintf (stderr,"No input file specified!\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = argc; } } return (status); } int wmf2svg_auto (PlotData* pdata) { int status = 0; while (1) { pdata->wmf_filename = (*(pdata->auto_files)); if (pdata->wmf_filename == 0) break; if (strcmp (pdata->wmf_filename+strlen(pdata->wmf_filename)-4,".wmf")) { fprintf (stderr,"%s: expected suffix `.wmf'. ",pdata->wmf_filename); fprintf (stderr,"skipping...\n"); status++; } else if ((pdata->svg_filename = malloc (strlen(pdata->wmf_filename)+2)) == 0) { fprintf (stderr,"mem_alloc_err: skipping %s...\n",pdata->wmf_filename); status++; } else { strcpy (pdata->svg_filename,pdata->wmf_filename); if (pdata->svgz) { strcpy (pdata->svg_filename+strlen(pdata->svg_filename)-3,"svgz"); } else { strcpy (pdata->svg_filename+strlen(pdata->svg_filename)-3,"svg"); } if (wmf2svg_file (pdata)) status++; free (pdata->svg_filename); } pdata->auto_files++; } return (status); } int wmf2svg_file (PlotData* pdata) { int status = 0; if (pdata->svgz) { if (pdata->svg_filename == 0) { fprintf (stderr,"unable to write compressed to stdout.\n"); status = 1; return (status); } if ((pdata->outz = gzopen (pdata->svg_filename,"wb9")) == 0) { fprintf (stderr,"unable to write to `%s'. ",pdata->svg_filename); fprintf (stderr,"skipping...\n"); status = 1; return (status); } status = wmf2svg_draw (pdata); gzclose (pdata->outz); return (status); } pdata->out = stdout; if (pdata->svg_filename) { if ((pdata->out = fopen (pdata->svg_filename,"w")) == 0) { fprintf (stderr,"unable to write to `%s'. ",pdata->svg_filename); fprintf (stderr,"skipping...\n"); status = 1; return (status); } } status = wmf2svg_draw (pdata); if (pdata->out != stdout) fclose (pdata->out); return (status); } int main (int argc,char** argv) { int status = 0; PlotData PData; wmf2svg_init (&PData,argc,argv); status = wmf2svg_args (&PData); if (status) return (status); if (PData.auto_files) status = wmf2svg_auto (&PData); else status = wmf2svg_file (&PData); return (status); } int explicit_wmf_error (char* str,wmf_error_t err) { int status = 0; switch (err) { case wmf_E_None: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_None.\n",str); #endif status = 0; break; case wmf_E_InsMem: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_InsMem.\n",str); #endif status = 1; break; case wmf_E_BadFile: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFile.\n",str); #endif status = 1; break; case wmf_E_BadFormat: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFormat.\n",str); #endif status = 1; break; case wmf_E_EOF: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_EOF.\n",str); #endif status = 1; break; case wmf_E_DeviceError: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_DeviceError.\n",str); #endif status = 1; break; case wmf_E_Glitch: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Glitch.\n",str); #endif status = 1; break; case wmf_E_Assert: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Assert.\n",str); #endif status = 1; break; default: #ifdef DEBUG fprintf (stderr,"%s returned unexpected value.\n",str); #endif status = 1; break; } return (status); } char* image_name (void* context) { ImageContext* IC = (ImageContext*) context; int length; char* name = 0; length = strlen (IC->prefix) + 16; name = malloc (length); if (name == 0) return (0); IC->number++; sprintf (name,"%s-%d.png",IC->prefix,IC->number); return (name); } libwmf-0.2.8.4/src/convert/wmf2x.c0000644000077100007710000002444207575442643016207 0ustar fjffjf00000000000000/* libwmf (convert/wmf2gd.c): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include "wmfconfig.h" #endif #include #include #include #include #include #include "wmfdefs.h" #ifdef X_DISPLAY_MISSING int main (int argc,char** argv) { fprintf (stderr,"%s: no support for X, sorry.\n",argv[0]); return (1); } #else /* X_DISPLAY_MISSING */ /* i.e., not */ #include "libwmf/x.h" #include #include typedef struct { int argc; char** argv; char* wmf_filename; wmf_x_t options; } PlotData; int wmf2x_draw (PlotData*); void wmf2x_init (PlotData*,int,char**); void wmf2x_help (PlotData*); int wmf2x_args (PlotData*); int explicit_wmf_error (char*,wmf_error_t); int wmf2x_draw (PlotData* pdata) { int status = 0; int redraw; int setmask; int length; float wmf_width = 0; float wmf_height = 0; float ratio_wmf; float ratio_bounds; char key; unsigned int root_width = 800; /* Unfortunately, need these before we open the display... */ unsigned int root_height = 600; unsigned int disp_width = 0; unsigned int disp_height = 0; unsigned long flags; wmf_error_t err; wmf_x_t* ddata = 0; wmfAPI* API = 0; wmfAPI_Options api_options; XEvent event; XWindowAttributes attributes; KeySym keysym; static char* icon_name = "wmf2x"; flags = 0; flags |= WMF_OPT_FUNCTION; api_options.function = wmf_x_function; flags |= WMF_OPT_ARGS; api_options.argc = pdata->argc; api_options.argv = pdata->argv; #ifndef DEBUG flags |= WMF_OPT_IGNORE_NONFATAL; #endif err = wmf_api_create (&API,flags,&api_options); status = explicit_wmf_error ("wmf_api_create",err); if (status) { if (API) wmf_api_destroy (API); return (status); } ddata = WMF_X_GetData (API); ddata->flags |= WMF_X_DISPLAY_OPEN; ddata->display_name = pdata->options.display_name; ddata->window_name = pdata->wmf_filename; ddata->icon_name = icon_name; length = strlen (pdata->wmf_filename); #if defined (HAVE_EXPAT) || defined (HAVE_LIBXML2) if (length > 4) { if ((strcmp (pdata->wmf_filename + length - 4, ".xml") == 0) || (strcmp (pdata->wmf_filename + length - 4, ".XML") == 0)) { err = wmf_wmfxml_import (API,pdata->wmf_filename); } else err = wmf_file_open (API,pdata->wmf_filename); } else err = wmf_file_open (API,pdata->wmf_filename); #else err = wmf_file_open (API,pdata->wmf_filename); #endif status = explicit_wmf_error ("wmf_file_open",err); if (status) { wmf_api_destroy (API); return (status); } err = wmf_scan (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_scan",err); if (status) { wmf_api_destroy (API); return (status); } /* Okay, got this far, everything seems cool. */ ddata->bbox = pdata->options.bbox; wmf_display_size (API,&disp_width,&disp_height,72,72); wmf_width = (float) disp_width; wmf_height = (float) disp_height; if (pdata->options.x_width > 0) { wmf_width = pdata->options.x_width; } if (pdata->options.x_height > 0) { wmf_height = pdata->options.x_height; } if ((wmf_width <= 0) || (wmf_height <= 0)) { fputs ("Bad image size - but this error shouldn't occur...\n",stderr); status = 1; wmf_api_destroy (API); return (status); } if ((wmf_width > (float) root_width ) || (wmf_height > (float) root_height)) { ratio_wmf = wmf_height / wmf_width; ratio_bounds = (float) root_height / (float) root_width; if (ratio_wmf > ratio_bounds) { ddata->x_height = root_height; ddata->x_width = (unsigned int) ((float) ddata->x_height / ratio_wmf); } else { ddata->x_width = root_width; ddata->x_height = (unsigned int) ((float) ddata->x_width * ratio_wmf); } } else { ddata->x_width = (unsigned int) ceil ((double) wmf_width ); ddata->x_height = (unsigned int) ceil ((double) wmf_height); } redraw = 1; setmask = 1; while (status == 0) { if (redraw) { err = wmf_play (API,0,&(pdata->options.bbox)); status = explicit_wmf_error ("wmf_play",err); if (status) break; } redraw = 0; if (setmask) { XSelectInput (ddata->display,ddata->window,KeyPressMask|StructureNotifyMask); setmask = 0; } XNextEvent (ddata->display,&event); switch (event.type) { case KeyPress: XLookupString (&(event.xkey),&key,1,&keysym,0); switch (key) { case 'q': case 'Q': status = -1; break; case 'r': case 'R': redraw = 1; break; default: break; } break; case ConfigureNotify: /* This is all a bit clumsy, because I'm being lazy and letting * * the library ipa do most of the work that ought to be done here! */ XGetWindowAttributes (ddata->display,ddata->window,&attributes); if ((ddata->x_width != attributes.width) || (ddata->x_height != attributes.height)) { ddata->x_width = attributes.width; ddata->x_height = attributes.height; XFreePixmap (ddata->display,ddata->pixmap); ddata->flags &= ~WMF_X_PIXMAP_CLOSE; ddata->pixmap = XCreatePixmap (ddata->display,ddata->root, ddata->x_width,ddata->x_height,ddata->depth); if (ddata->pixmap == None) { WMF_ERROR (API,"unable to create pixmap!"); status = 1; break; } ddata->flags |= WMF_X_PIXMAP_CLOSE; XSetWindowBackgroundPixmap (ddata->display,ddata->window,ddata->pixmap); redraw = 1; } break; default: break; } if (status == (-1)) { status = 0; break; } } wmf_api_destroy (API); return (status); } void wmf2x_init (PlotData* pdata,int argc,char** argv) { pdata->argc = argc; pdata->argv = argv; pdata->wmf_filename = 0; pdata->options.display_name = 0; pdata->options.x_width = 0; pdata->options.x_height = 0; pdata->options.flags = 0; } void wmf2x_help (PlotData* pdata) { fputs ("\ Usage: wmf2x [OPTION]... \n\ Display metafile image.\n\ \n\ -display where is the display name.\n\ --width= where is the width of the image.\n\ --height= where is the height of the image.\n\ --version display version info and exit.\n\ --help display this help and exit.\n\ --wmf-help display wmf-related help and exit.\n\ \n\ Report bugs to .\n",stdout); } int wmf2x_args (PlotData* pdata) { int status = 0; int arg = 0; int argc = pdata->argc; char** argv = pdata->argv; while ((++arg) < argc) { if (strcmp (argv[arg],"--help") == 0) { wmf2x_help (pdata); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--wmf-help") == 0) { fputs (wmf_help (),stdout); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"--version") == 0) { fprintf (stdout,"%s: version %s\n",PACKAGE,VERSION); status = argc; /* i.e., not an error but don't continue */ break; } if (strcmp (argv[arg],"-display") == 0) { if ((++arg) < argc) { pdata->options.display_name = argv[arg]; continue; } fprintf (stderr,"usage: `wmf2x -display '.\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (strncmp (argv[arg],"--width=",8) == 0) { if (sscanf (argv[arg]+8,"%u",&(pdata->options.x_width)) != 1) { fputs ("usage: --width=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strncmp (argv[arg],"--height=",9) == 0) { if (sscanf (argv[arg]+9,"%u",&(pdata->options.x_height)) != 1) { fputs ("usage: --height=, where is +ve integer.\n",stderr); status = arg; break; } continue; } if (strncmp (argv[arg],"--wmf-",6) == 0) { continue; } if (argv[arg][0] != '-') { pdata->wmf_filename = argv[arg]; continue; } fprintf (stderr,"option `%s' not recognized.\n",argv[arg]); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = arg; break; } if (status == 0) { if (pdata->wmf_filename == 0) { fprintf (stderr,"No input file specified!\n"); fprintf (stderr,"Try `%s --help' for more information.\n",argv[0]); status = argc; } } return (status); } int main (int argc,char** argv) { int status = 0; PlotData PData; wmf2x_init (&PData,argc,argv); status = wmf2x_args (&PData); if (status) return (status); status = wmf2x_draw (&PData); return (status); } int explicit_wmf_error (char* str,wmf_error_t err) { int status = 0; switch (err) { case wmf_E_None: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_None.\n",str); #endif status = 0; break; case wmf_E_InsMem: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_InsMem.\n",str); #endif status = 1; break; case wmf_E_BadFile: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFile.\n",str); #endif status = 1; break; case wmf_E_BadFormat: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_BadFormat.\n",str); #endif status = 1; break; case wmf_E_EOF: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_EOF.\n",str); #endif status = 1; break; case wmf_E_DeviceError: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_DeviceError.\n",str); #endif status = 1; break; case wmf_E_Glitch: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Glitch.\n",str); #endif status = 1; break; case wmf_E_Assert: #ifdef DEBUG fprintf (stderr,"%s returned with wmf_E_Assert.\n",str); #endif status = 1; break; default: #ifdef DEBUG fprintf (stderr,"%s returned unexpected value.\n",str); #endif status = 1; break; } return (status); } #endif /* X_DISPLAY_MISSING */ libwmf-0.2.8.4/include/0000755000077100007710000000000010272000330014111 5ustar fjffjf00000000000000libwmf-0.2.8.4/include/Makefile.am0000644000077100007710000000002107260330345016155 0ustar fjffjf00000000000000SUBDIRS = libwmf libwmf-0.2.8.4/include/Makefile.in0000664000077100007710000003653710272000330016176 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = include DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = libwmf all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-libtool \ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/include/libwmf/0000755000077100007710000000000010272000330015371 5ustar fjffjf00000000000000libwmf-0.2.8.4/include/libwmf/api.h0000644000077100007710000002567507575173053016363 0ustar fjffjf00000000000000/* libwmf (): library for wmf conversion Copyright (C) 2000 - various; see CREDITS, ChangeLog, and sources The libwmf Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The libwmf Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the libwmf Library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef LIBWMF_API_H #define LIBWMF_API_H #include #include #ifdef __cplusplus extern "C" { #endif /** * Initializes library */ extern wmf_error_t wmf_api_create (wmfAPI**,unsigned long,wmfAPI_Options*); /** * Possibly completes output, and otherwise frees all allocated memory */ extern wmf_error_t wmf_api_destroy (wmfAPI*); /** * Initializes library - 'lite' interface only */ extern wmf_error_t wmf_lite_create (wmfAPI**,unsigned long,wmfAPI_Options*); /** * Possibly completes output, and otherwise frees all allocated memory - 'lite' interface only */ extern wmf_error_t wmf_lite_destroy (wmfAPI*); /** * Reads the header of the current metafile */ extern wmf_error_t wmf_header_read (wmfAPI*); /** * Scans the current metafile to determine bounding box and resources */ extern wmf_error_t wmf_scan (wmfAPI*,unsigned long,wmfD_Rect*); /** * Plays the current metafile, calling exporter graphics procedures */ extern wmf_error_t wmf_play (wmfAPI*,unsigned long,wmfD_Rect*); /** * Supplies a width and height for the current metafile */ extern wmf_error_t wmf_size (wmfAPI*,float*,float*); /** * Supplies a display (integer-) width and height for the current metafile */ extern wmf_error_t wmf_display_size (wmfAPI*,unsigned int*,unsigned int*,double,double); /** * Sets user defines input stream functions for reading a metafile */ extern wmf_error_t wmf_bbuf_input (wmfAPI*,wmfRead,wmfSeek,wmfTell,void*); /** * Opens a file as the current metafile */ extern wmf_error_t wmf_file_open (wmfAPI*,const char*); /** * Closes the file corresponding to the current metafile */ extern wmf_error_t wmf_file_close (wmfAPI*); /** * Specifies an array of unsigned char as the current metafile */ extern wmf_error_t wmf_mem_open (wmfAPI*,unsigned char*,long); /** * Disassociates array corresponding to the current metafile */ extern wmf_error_t wmf_mem_close (wmfAPI*); /* wmf_stream_create: set FILE stream to 0 to write to memory; * wmf_stream_destroy: returns pointer to memory, if not a FILE stream */ /** * Creates compressed character output file stream */ extern wmfStream* wmf_ztream_create (wmfAPI*,gzFile); /** * Creates uncompressed character output file or memory stream */ extern wmfStream* wmf_stream_create (wmfAPI*,FILE*); /** * Finalizes compressed character output file stream */ extern void wmf_ztream_destroy (wmfAPI*,wmfStream*,char**,unsigned long*); /** * Finalizes uncompressed character output file stream */ extern void wmf_stream_destroy (wmfAPI*,wmfStream*,char**,unsigned long*); /** * Formatted print to character output file stream */ extern int wmf_stream_printf (wmfAPI*,wmfStream*,char*,...); /** * malloc() & attach to library's memory manager */ extern void* wmf_malloc (wmfAPI*,size_t); /** * calloc() & attach to library's memory manager */ extern void* wmf_calloc (wmfAPI*,size_t,size_t); /** * realloc() memory attached to library's memory manager */ extern void* wmf_realloc (wmfAPI*,void*,size_t); /** * free() memory attached to library's memory manager */ extern void wmf_free (wmfAPI*,void*); /** * Detach memory from library's memory manager */ extern void wmf_detach (wmfAPI*,void*); /** * strdup() & attach to library's memory manager */ extern char* wmf_strdup (wmfAPI*,const char*); /** * create concatenation of two strings and attach to library's memory manager */ extern char* wmf_str_append (wmfAPI*,char*,char*); /** * strstr() */ extern char* wmf_strstr (const char*,const char*); /** * Increases size of API's string buffer; returns new size or 0 on error */ extern unsigned long wmf_strbuf_grow (wmfAPI*); /** * Initializes the metafile player (called by wmf_api_create()) */ extern wmf_error_t wmf_player_init (wmfAPI*); /** * Returns the Aldus Checksum of the metafile's header */ extern U16 wmf_aldus_checksum (wmfAPI*); /** * Reads a two-byte sequence from the current metafile, returns U16 */ extern U16 wmf_read_16 (wmfAPI*); /** * Reads a four-byte sequence from the current metafile, returns U32 */ extern U32 wmf_read_32 (wmfAPI*,U16*,U16*); /** * file input (wmf_file_open): fgetc() */ extern int wmf_file_read (void*); /** * file input (wmf_file_open): fseek() */ extern int wmf_file_seek (void*,long); /** * file input (wmf_file_open): ftell() */ extern long wmf_file_tell (void*); /** * memory input (wmf_mem_open): fgetc() equiv. */ extern int wmf_mem_read (void*); /** * memory input (wmf_mem_open): fseek() equiv. */ extern int wmf_mem_seek (void*,long); /** * memory input (wmf_mem_open): ftell() equiv. */ extern long wmf_mem_tell (void*); /* default ztream functions; NOT to be used directly! */ /** * compressed char output (wmf_ztream_create): fputs() */ extern int wmf_stream_zputs (char*,void*); /** * compressed char output (wmf_ztream_create): rewind() */ extern int wmf_stream_rezet (void*); /** * uncompressed char output (wmf_stream_create): fputs() */ extern int wmf_stream_sputs (char*,void*); /* default stream functions; NOT to be used directly! */ /** * uncompressed char output (wmf_stream_create): rewind() */ extern int wmf_stream_reset (void*); /** * Writes message to error stream (use WMF_ERROR macro) */ extern void wmf_error (wmfAPI*,char*,int,char*); /** * Writes message to debug stream (use WMF_DEBUG macro) */ extern void wmf_debug (wmfAPI*,char*,int,char*); /** * Formatted print to debug stream */ extern void wmf_printf (wmfAPI*,char*,...); /** * Asserts on zero expression (use WMF_ASSERT macro) */ extern void wmf_assert (wmfAPI*,char*,int); /** * Outputs library-specific command-line options */ extern char* wmf_help (void); /** * Sets drawing origin in device coordinates */ extern void wmf_set_viewport_origin (wmfAPI*,wmfD_Coord); /** * Sets call-back function, called after every metafile record */ extern void wmf_status_function (wmfAPI*,void*,wmfStatus); /** * Writes to --wmf-write file (which may be WMF or home-made wmfxml) */ extern void wmf_write (wmfAPI*,unsigned long,unsigned int,const char*, char**,const unsigned char*,unsigned long); /** * Open --wmf-write file (which may be WMF or home-made wmfxml) */ extern void wmf_write_begin (wmfAPI*,const char*); /** * Close --wmf-write file (which may be WMF or home-made wmfxml) */ extern void wmf_write_end (wmfAPI*); /** * Initialize a wmfAttributes structure */ extern void wmf_attr_new (wmfAPI*,wmfAttributes*); /** * Clear/Empty a wmfAttributes structure */ extern void wmf_attr_clear (wmfAPI*,wmfAttributes*); /** * Free memory associated with a wmfAttributes structure */ extern void wmf_attr_free (wmfAPI*,wmfAttributes*); /** * Add an name&value to a wmfAttributes structure; returns ptr to value-in-list */ extern const char * wmf_attr_add (wmfAPI*,wmfAttributes*,const char*,const char*); /** * Return value of name in a wmfAttributes structure; returns 0 if name not found */ extern const char * wmf_attr_query (wmfAPI*,wmfAttributes*,const char*); /** * Load wmfxml file and wmf_mem_open() it */ extern wmf_error_t wmf_wmfxml_import (wmfAPI*,const char*); #ifdef __cplusplus } #endif /* Useful defs & macros */ /** * @param Z the API handle * @param M string to send to the error stream via wmf_error() */ #define WMF_ERROR(Z,M) wmf_error (Z,__FILE__,__LINE__,M) #ifdef DEBUG #define WMF_DEBUG(Z,M) wmf_debug (Z,__FILE__,__LINE__,M) #define WMF_ASSERT(Z,M) if (!(M)) wmf_assert (Z,__FILE__,__LINE__) #else /** * @param Z the API handle * @param M string to send to the debug stream via wmf_debug() * * (debug build only) */ #define WMF_DEBUG(Z,M) /** * @param Z the API handle * @param M an , if zero then call wmf_assert() * * (debug build only) */ #define WMF_ASSERT(Z,M) #endif /* Flags to be passed in wmf_api_create: flags to lie in range (1<<0) to (1<<19) */ /** * Option to wmf_api_create() * * use provided [*]alloc/free functions */ #define WMF_OPT_ALLOC (1<<0) /** * Option to wmf_api_create() * * check provided command line for --wmf-

This is gd 2.0.1 BETA.

If you have problems, report them in detail, and consider using gd 1.8.4 until gd 2.0 final is out.

The gd 2.0 documentation update is not complete, but most new features are documented to some degree and the what's new section is reasonably complete. Enjoy!

gd 2.0.1

A graphics library for fast image creation

Follow this link to the latest version of this document.

HEY! READ THIS! gd 2.0.1 creates PNG, JPEG and WBMP images, not GIF images. This is a good thing. PNG is a more compact format, and full compression is available. JPEG works well with photographic images, and is still more compatible with the major Web browsers than even PNG is. WBMP is intended for wireless devices (not regular web browsers). Existing code will need modification to call gdImagePng or gdImageJpeg instead of gdImageGif. Please do not ask us to send you the old GIF version of GD. Unisys holds a patent on the LZW compression algorithm, which is used in fully compressed GIF images. The best solution is to move to legally unencumbered, well-compressed, modern image formats such as PNG and JPEG as soon as possible.

gd 2.0.1 requires that the following libraries also be installed:

libpng (see the libpng home page)

zlib (see the info-zip home page) zlib

jpeg-6b or later, if desired (see the Independent JPEG Group home page)

If you want to use the TrueType font support, you must also install the FreeType 2.x library, including the header files. See the Freetype Home Page, or SourceForge. No, I cannot explain why that site is down on a particular day, and no, I can't send you a copy.

If you want to use the Xpm color bitmap loading support, you must also have the X Window System and the Xpm library installed (Xpm is often included in modern X distributions).

Please read the documentation and install the required libraries. Do not send email asking why png.h is not found. Do not send email asking why libgd.so is not found, either. See the requirements section for more information. Thank you!

Table of Contents

Up to the Boutell.Com, Inc. Home Page

Credits and license terms

In order to resolve any possible confusion regarding the authorship of gd, the following copyright statement covers all of the authors who have required such a statement. If you are aware of any oversights in this copyright notice, please contact Thomas Boutell who will be pleased to correct them.

COPYRIGHT STATEMENT FOLLOWS THIS LINE
Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 by Cold Spring Harbor Laboratory. Funded under Grant P41-RR02188 by the National Institutes of Health.

Portions copyright 1996, 1997, 1998, 1999, 2000, 2001 by Boutell.Com, Inc.

Portions relating to GD2 format copyright 1999, 2000 Philip Warner.

Portions relating to PNG copyright 1999, 2000 Greg Roelofs.

Portions relating to libttf copyright 1999, 2000 John Ellson (ellson@lucent.com).

Portions relating to JPEG and to color quantization copyright 2000, Doug Becker and copyright (C) 1994-1998, Thomas G. Lane. This software is based in part on the work of the Independent JPEG Group. See the file README-JPEG.TXT for more information.

Portions relating to WBMP copyright 2000 Maurice Szmurlo and Johan Van den Brande.

Permission has been granted to copy, distribute and modify gd in any context without fee, including a commercial application, provided that this notice is present in user-accessible supporting documentation.

This does not affect your ownership of the derived work itself, and the intent is to assure proper credit for the authors of gd, not to interfere with your productive use of gd. If you have questions, ask. "Derived works" includes all programs that utilize the library. Credit must be given in user-accessible documentation.

This software is provided "AS IS." The copyright holders disclaim all warranties, either express or implied, including but not limited to implied warranties of merchantability and fitness for a particular purpose, with respect to this code and accompanying documentation.

Although their code does not appear in gd 2.0.1, the authors wish to thank David Koblas, David Rowley, and Hutchison Avenue Software Corporation for their prior contributions.

END OF COPYRIGHT STATEMENT

What is gd?

gd is a graphics library. It allows your code to quickly draw images complete with lines, arcs, text, multiple colors, cut and paste from other images, and flood fills, and write out the result as a PNG or JPEG file. This is particularly useful in World Wide Web applications, where PNG and JPEG are two of the formats accepted for inline images by most browsers.

gd is not a paint program. If you are looking for a paint program, you are looking in the wrong place. If you are not a programmer, you are looking in the wrong place, unless you are installing a required library in order to run an application.

gd does not provide for every possible desirable graphics operation. It is not necessary or desirable for gd to become a kitchen-sink graphics package, but version 2.0 does include most frequently requested features, including both truecolor and palette images, resampling (smooth resizing of truecolor images) and so forth.

What if I want to use another programming language?

Not all of these tools are necessarily up to date and fully compatible with 2.0.1.

Perl

gd can also be used from Perl, courtesy of Lincoln Stein's GD.pm library, which uses gd as the basis for a set of Perl 5.x classes. Highly recommended.

Tcl

gd can be used from Tcl with John Ellson's Gdtclft dynamically loaded extension package. (Gdtclft2.0 or later is needed for gd-1.6 and up with PNG output.)

Pascal

Pascal enthusiasts should look into Michael Bradbury's gdfp package.

Haskell

A new gd interface is now available for Haskell programmers.

REXX

A gd interface for the REXX language is available.

Any Language

There are, at the moment, at least three simple interpreters that perform gd operations. You can output the desired commands to a simple text file from whatever scripting language you prefer to use, then invoke the interpreter.

  • tgd, by Bradley K. Sherman
  • fly, by Martin Gleeson

What's new in version 2.0.1?

  • Workaround for a bug in gcc, apparently found in gcc 2.7.2 and up. I reproduced and fixed it while using gcc 2.9.5.2. The bug occurred only when the -g option was in use. This problem caused gcc to spew internal error messages unrelated to the correctness of the code in gd_gd2.c. Howard Jones was first to report it.
  • gdImageFilledEllipse documented and altered; no longer requires a superfluous style argument. Thanks to Francis James Franklin.
  • The Makefile now offers the correct syntax for optionally creating a static library. Thanks to Jean-Lous Regez, among others.
  • A nested comment, an attempt to return the value of a void function, and a potentially significant error in gdImageCopyResampled were fixed thanks to Joseph Shirley.
  • A bug preventing proper truecolor text rendering was fixed, thanks to Jason Gallagher.
  • gdImageStringFT (FreeType) should now work better against a transparent or semitransparent background, and should act in a manner consistent with the most recent gdImageAlphaBlending setting. Antialiasing is now done via the alpha channel mechanism if the image is a truecolor image.
  • Bugs in the output of gdImageArc and gdImageFilledArc were reported by Bruce Verderaime. A simple and correct but inefficient implementation has been substituted until fixes are contributed for the faster code, which is in gd_arc_f_buggy.c along with the test program that reproduces the bug(s).
  • gdImageFilledArc now offers additional style options, which can be combined to produce various effects.
  • Masahito Yamaga (ma@yama-ga.com) sent a patch to improve support for Japanese output via gdImageStringFT. He also added a new readme.jpn file.
  • Zillions of documentation fixes.

What's new in version 2.0?

  • Support for truecolor images! Version 2.0 can load truecolor PNGs with no loss of color information, and almost no loss of alpha channel information. Version 2.0 can also load truecolor JPEGs with as little loss as possible; however, bear in mind that JPEG is a lossy format, so repeated load/save cycles always reduce image quality. This is not a bug. To create a truecolor image from scratch, call the new gdImageCreateTrueColor function. The gdImageCreate function is still available to create palette images, and may also be referred to as gdImageCreatePalette.
  • Support for alpha channels! In addition to 24 bits of color information for each pixel (eight bits of red, green, and blue respectively), version 2.0 supports 7 bits of "alpha channel" information. This is used to determine exactly how transparent the pixel should be. There is also support for a full 7 bits of transparency for each individual palette index in a palette-based image. Please note that, as of this writing, only Macintosh Internet Explorer 5.x and Mozilla/Netscape 6.x display partial transparency properly.
  • The new gdImageAlphaBlending function allows for two different modes of drawing. In blending mode, the alpha channel component of the color supplied to all drawing functions, such as gdImageSetPixel, determines how much of the underlying color should be allowed to shine through. The resulting image is not transparent. In non-blending mode, drawing color is copied literally with the alpha channel information, resulting in a transparent image. Blending mode is not available when drawing on palette images.
  • The gdImageCopyResampled function provides "smooth" copying from a large image to a smaller one, using a weighted average of the pixels of the source area rather than selecting one representative pixel. This function is identical to gdImageCopyResized when the destination image is a palette image.
  • The gdImageTrueColorToPalette function converts a truecolor image to a palette image. The code for this function was originally drawn from the Independent JPEG Group library code, which is excellent. The code has been modified to preserve as much alpha channel information as possible in the resulting palette, in addition to preserving colors as well as possible. This does not work as well as might be hoped. It is usually best to simply produce a truecolor output image instead, which guarantees the highest output quality.
  • A very high degree of backwards compatibility with existing gd 1.x code has been maintained, at both the source code and binary level. Code which directly accesses the pixels array will fail only if it encounters an existing truecolor image, which may happen if the code attempts to open and modify an existing JPEG or truecolor PNG. Such code should be modified to check the trueColor flag of the gdImage structure, and refer to the tpixels array instead when it is set.
  • gd is now compiled and installed as a shared library. However, gd still does not use autoconf, because I (TBB) have very limited patience with autoconf. These days, most Unix systems provide a fairly POSIX-standard environment, and the provided Makefile is likely to work well if users read it and follow the instructions at the top.
  • Support for line thickness was added by Michael Schwartz. My apologies to him for sitting on his patches for so long. See the new gdImageSetThickness function, which affects all standard gd functions that draw lines and curves. In addition, Michael added a convenient gdImageEllipse function.
  • The new gdImageFilledArc function provides a straightforward way to draw filled arcs. Also, gdImageFilledEllipse is a convenient way to fill an ellipse without specifying starting and ending angles. Thanks go out to F J Franklin.
  • To put an end to the confusion, TrueType 1.x support has been removed in favor of TrueType 2.x support. The old gdImageStringTTF function simply invokes gdImageStringFT.
  • The specialized .gd and .gd2 file formats have been upgraded to support truecolor. New images written by the versions of these functions found in 2.0 will be rejected, with varying degrees of grace, by older versions of gd. THIS AFFECTS THE .GD and .GD2 FORMATS ONLY. IF YOU ARE CONFUSED BY THIS PARAGRAPH, IT PROBABLY DOESN'T APPLY TO ANYTHING YOU WILL EVER ENCOUNTER. Since these file formats are absolutely, positively *not* designed for distributing images, just for preprocessing them, this should not be a big problem. gd 2.0 should read old .gd and .gd2 files correctly.

What's new in version 1.8.4?

  • Add support for FreeType2 (John Ellson ellson@lucent.com)
  • Add support for finding in fonts in a builtin DEFAULT_FONTPATH, or in a path from the GDFONTPATH environment variable.
  • remove some unused symbols to reduce compiler warnings
  • bugfix in size comparisons in gdImageCompare
  • REXX now mentioned
  • All memory allocation functions are now wrapped within the library; gdFree is exported and recommended for freeing memory returned by the gdImage(Something)Ptr family of functions.

What's new in version 1.8.3?

  • WBMP output memory leak fixed
  • #include <gd.h> corrected to #include "gd.h" in gd_wbmp.c
  • Documented the fact that the source and output images shouldn't match in the WBMP test except for black and white source images

What's new in version 1.8.2?

  • WBMP support debugged and improved by Johann Van den Brande
  • WBMP tests added to gdtest.c by Thomas Boutell
  • Use of platform-dependent 'install' command removed by Thomas Boutell
  • Comments added to Makefile warning users to juggle the order of the libraries if the linker complains; is there any portable way to do this automatically, short of using autoconf?
  • Documentation of gdImageCreateFromXpm corrected
  • Updated links to fast-moving, always dodging libpng and zlib web sites

What's new in version 1.8.1?

  • Optional components no longer built by default (following the documentation)
  • JPEG code no longer requires inappropriate header files
  • Win32 patches from Joe Gregorio
  • 16-bit font support for bdftogd, from Honza Pazdziora

What's new in version 1.8?

  • Support for JPEG output, courtesy of Doug Becker
  • A link to Michael Bradbery's Pascal wrapper
  • Support for WBMP output, courtesy of Maurice Szmurlo
  • gdImageColorClosestHWB function based on hue, whiteness, blackness, superior to the regular gdImageColorClosest function, courtesy of Philip Warner
  • License clarification: yes, you can modify gd

Additional JPEG Information

Support for reading and writing JPEG-format images is courtesy of Doug Becker and the Independent JPEG Group / Thomas G. Lane. You can get the latest version of the IJG JPEG software from ftp://ftp.uu.net/graphics/jpeg/ (e.g., the jpegsrc.v6b.tar.gz file). You must use version 6b or later of the IJG JPEG software. You might also consult the JPEG FAQ at http://www.faqs.org/faqs/jpeg-faq/.

What's new in version 1.7.3?

Another attempt at Makefile fixes to permit linking with all libraries required on platforms with order- dependent linkers. Perhaps it will work this time.

What's new in version 1.7.2?

An uninitialized-pointer bug in gdtestttf.c was corrected. This bug caused crashes at the end of each call to gdImageStringTTF on some platforms. Thanks to Wolfgang Haefelinger.

Documentation fixes. Thanks to Dohn Arms.

Makefile fixes to permit linking with all libraries required on platforms with order- dependent linkers.

What's new in version 1.7.1?

A minor buglet in the Makefile was corrected, as well as an inaccurate error message in gdtestttf.c. Thanks to Masahito Yamaga.

What's new in version 1.7?

Version 1.7 contains the following changes:
  • Japanese language support for the TrueType functions. Thanks to Masahito Yamaga.
  • autoconf and configure have been removed, in favor of a carefully designed Makefile which produces and properly installs the library and the binaries. System-dependent variables are at the top of the Makefile for easy modification. I'm sorry, folks, but autoconf generated many, many confused email messages from people who didn't have things where autoconf expected to find them. I am not an autoconf/automake wizard, and gd is a simple, very compact library which does not need to be a shared library. I did make many improvements over the old gd 1.3 Makefile, which were directly inspired by the autoconf version found in the 1.6 series (thanks to John Ellson).
  • Completely ANSI C compliant, according to the -pedantic-errors flag of gcc. Several pieces of not-quite-ANSI-C code were causing problems for those with non-gcc compilers.
  • gdttf.c patched to allow the use of Windows symbol fonts, when present (thanks to Joseph Peppin).
  • extern "C" wrappers added to gd.h and the font header files for the convenience of C++ programmers. bdftogd was also modified to automatically insert these wrappers into future font header files. Thanks to John Lindal.
  • Compiles correctly on platforms that don't define SEEK_SET. Thanks to Robert Bonomi.
  • Loads Xpm images via the gdImageCreateFromXpm function, if the Xpm library is available. Thanks to Caolan McNamara.

What's new in version 1.6.3?

Version 1.6.3 corrects a memory leak in gd_png.c. This leak caused a significant amount of memory to be allocated and not freed when writing a PNG image.

What's new in version 1.6.2?

Version 1.6.2 from John Ellson adds two new functions:
  • gdImageStringTTF - scalable, rotatable, anti-aliased, TrueType strings using the FreeType library, but only if libttf is found by configure. We do not provide TrueType fonts. Obtaining them is entirely up to you.
  • gdImageColorResolve - an efficient alternative for the common code fragment:
    
          if ((color=gdImageColorExact(im,R,G,B)) < 0)
              if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
                  color=gdImageColorClosest(im,R,G,B);
    

Also in this release the build process has been converted to GNU autoconf/automake/libtool conventions so that both (or either) static and shared libraries can be built.

What's new in version 1.6.1?

Version 1.6.1 incorporates superior PNG reading and writing code from Greg Roelofs, with minor modifications by Tom Boutell. Specifically, I altered his code to read non-palette images (converting them to palette images badly, by dithering them), and to tolerate palette images with types of transparency that gd doesn't actually support (it just ignores the advanced transparency features). Any bugs in this area are therefore my fault, not Greg's.

Unlike gd 1.6, users should have no trouble linking with gd 1.6.1 if they follow the instructions and install all of the pieces. However, If you get undefined symbol errors, be sure to check for older versions of libpng in your library directories!

What's new in version 1.6?

Version 1.6 features the following changes:

Support for 8-bit palette PNG images has been added. Support for GIF has been removed. This step was taken to completely avoid the legal controversy regarding the LZW compression algorithm used in GIF. Unisys holds a patent which is relevant to LZW compression. PNG is a superior image format in any case. Now that PNG is supported by both Microsoft Internet Explorer and Netscape (in their recent releases), we highly recommend that GD users upgrade in order to get well-compressed images in a format which is legally unemcumbered.

What's new in version 1.5?

Version 1.5 featured the following changes:
New GD2 format
An improvement over the GD format, the GD2 format uses the zlib compression library to compress the image in chunks. This results in file sizes comparable to GIFs, with the ability to access parts of large images without having to read the entire image into memory.

This format also supports version numbers and rudimentary validity checks, so it should be more 'supportable' than the previous GD format.

Re-arranged source files
gd.c has been broken into constituant parts: io, gif, gd, gd2 and graphics functions are now in separate files.

Extended I/O capabilities.
The source/sink feature has been extended to support GD2 file formats (which require seek/tell functions), and to allow more general non-file I/O.

Better support for Lincoln Stein's Perl Module
The new gdImage*Ptr function returns the chosen format stored in a block of memory. This can be directly used by the GD perl module.

Added functions
gdImageCreateFromGd2Part - allows retrieval of part of an image (good for huge images, like maps),
gdImagePaletteCopy - Copies a palette from one image to another, doing it's best to match the colors in the target image to the colors in the source palette.
gdImageGd2, gdImageCreateFromGd2 - Support for new format
gdImageCopyMerge - Merges two images (useful to highlight part of an image)
gdImageCopyMergeGray - Similar to gdImageCopyMerge, but tries to preserve source image hue.
gdImagePngPtr, gdImageJpegPtr, gdImageWBMPPtr, gdImageGdPtr, gdImageGd2Ptr - return memory blocks for each type of image.
gdImageCreateFromPngCtx, gdImageCreateFromGdCtx, gdImageCreateFromGd2Ctx, gdImageCreateFromGd2PartCtx - Support for new I/O context.
NOTE: In fairness to Thomas Boutell, any bug/problems with any of the above features should probably be reported to Philip Warner.

What's new in version 1.4?

Version 1.4 features the following changes:
Fixed polygon fill routine (again)
Thanks to Kirsten Schulz, version 1.4 is able to fill numerous types of polygons that caused problems with previous releases, including version 1.3.
Support for alternate data sources
Programmers who wish to load a GIF from something other than a stdio FILE * stream can use the new gdImageCreateFromPngSource function.
Support for alternate data destinations
Programmers who wish to write a GIF to something other than a stdio FILE * stream can use the new gdImagePngToSink function.
More tolerant when reading GIFs
Version 1.4 does not crash when reading certain animated GIFs, although it still only reads the first frame. Version 1.4 also has overflow testing code to prevent crashes when reading damaged GIFs.

What's new in version 1.3?

Version 1.3 features the following changes:
Non-LZW-based GIF compression code
Version 1.3 contained GIF compression code that uses simple Run Length Encoding instead of LZW compression, while still retaining compatibility with normal LZW-based GIF decoders (your browser will still like your GIFs). LZW compression is patented by Unisys. We are currently reevaluating the approach taken by gd 1.3. The current release of gd does not support this approach. We recommend that you use the current release, and generate PNG images. Thanks to Hutchison Avenue Software Corporation for contributing the RLE GIF code.
8-bit fonts, and 8-bit font support
This improves support for European languages. Thanks are due to Honza Pazdziora and also to Jan Pazdziora . Also see the provided bdftogd Perl script if you wish to convert fixed-width X11 fonts to gd fonts.
16-bit font support (no fonts provided)
Although no such fonts are provided in the distribution, fonts containing more than 256 characters should work if the gdImageString16 and gdImageStringUp16 routines are used.
Improvements to the "webpng" example/utility
The "webpng" utility is now a slightly more useful application. Thanks to Brian Dowling for this code.
Corrections to the color resolution field of GIF output
Thanks to Bruno Aureli.
Fixed polygon fills
A one-line patch for the infamous polygon fill bug, courtesy of Jim Mason. I believe this fix is sufficient. However, if you find a situation where polygon fills still fail to behave properly, please send code that demonstrates the problem, and a fix if you have one. Verifying the fix is important.
Row-major, not column-major
Internally, gd now represents the array of pixels as an array of rows of pixels, rather than an array of columns of pixels. This improves the performance of compression and decompression routines slightly, because horizontally adjacent pixels are now next to each other in memory. This should not affect properly written gd applications, but applications that directly manipulate the pixels array will require changes.

What else do I need to use gd?

To use gd, you will need an ANSI C compiler. All popular Windows 95 and NT C compilers are ANSI C compliant. Any full-ANSI-standard C compiler should be adequate. The cc compiler released with SunOS 4.1.3 is not an ANSI C compiler. Most Unix users who do not already have gcc should get it. gcc is free, ANSI compliant and a de facto industry standard. Ask your ISP why it is missing.

As of version 1.6, you also need the zlib compression library, and the libpng library. As of version 1.6.2, you can draw text using antialiased TrueType fonts if you also have the libttf library installed, but this is not mandatory. zlib is available for a variety of platforms from the zlib web site. libpng is available for a variety of platforms from the PNG web site.

You will also want a PNG viewer, if you do not already have one for your system, since you will need a good way to check the results of your work. Netscape 4.04 and higher, and Microsoft Internet Explorer 4.0 or higher, both support PNG. For some purposes you might be happier with a package like Lview Pro for Windows or xv for X. There are PNG viewers available for every graphics-capable modern operating system, so consult newsgroups relevant to your particular system.

How do I get gd?

By HTTP

By FTP

How do I build gd?

In order to build gd, you must first unpack the archive you have downloaded. If you are not familiar with tar and gunzip (Unix) or ZIP (Windows), please consult with an experienced user of your system. Sorry, we cannot answer questions about basic Internet skills.

Unpacking the archive will produce a directory called "gd-2.0.1".

For Unix

cd to the 2.0.1 directory. Edit the Makefile with your preferred text editor and make any necessary changes to the settings at the top, especially if you want Xpm or TrueType support. Next, type "make install". Because gd 2.0 and above installs as a shared library, it is necessary to install the library properly before running gd-based programs.

If you get errors, edit the Makefile again, paying special attention to the INCLUDEDIRS and LIBDIRS settings.

IF YOU GET LINKER ERRORS, TRY JUGGLING THE ORDER OF THE -l DIRECTIVES IN THE MAKEFILE. Some platforms may prefer that the libraries be listed in the opposite order.

For Windows, Mac, Et Cetera

Create a project using your favorite programming environment. Copy all of the gd files to the project directory. Add gd.c to your project. Add other source files as appropriate. Learning the basic skills of creating projects with your chosen C environment is up to you.

If you wish to test the library, type "make test" AFTER you have successfully executed "make install". This will build several test programs, including "gddemo". Run gddemo to see some of the capabilities of gd.

gddemo should execute without incident, creating the file demoout.png. (Note there is also a file named demoin.png, which is provided in the package as part of the demonstration.)

Display demoout.png in your PNG viewer. The image should be 128x128 pixels and should contain an image of the space shuttle with quite a lot of graphical elements drawn on top of it.

(If you are missing the demoin.png file, the other items should appear anyway.)

Look at demoin.png to see the original space shuttle image which was scaled and copied into the output image.

gd basics: using gd in your program

gd lets you create PNG or JPEG images on the fly. To use gd in your program, include the file gd.h, and link with the libgd.a library produced by "make libgd.a", under Unix. Under other operating systems you will add gd.c to your own project.

If you want to use the provided fonts, include gdfontt.h, gdfonts.h, gdfontmb.h, gdfontl.h and/or gdfontg.h. For more impressive results, install FreeType 2.x and use the new gdImageStringFT function. If you are not using the provided Makefile and/or a library-based approach, be sure to include the source modules as well in your project. (They may be too large for 16-bit memory models, that is, 16-bit DOS and Windows.)

Here is a short example program. (For a more advanced example, see gddemo.c, included in the distribution. gddemo.c is NOT the same program; it demonstrates additional features!)

/* Bring in gd library functions */
#include "gd.h"

/* Bring in standard I/O so we can output the PNG to a file */
#include <stdio.h>

int main() {
	/* Declare the image */
	gdImagePtr im;
	/* Declare output files */
	FILE *pngout, *jpegout;
	/* Declare color indexes */
	int black;
	int white;

	/* Allocate the image: 64 pixels across by 64 pixels tall */
	im = gdImageCreate(64, 64);

	/* Allocate the color black (red, green and blue all minimum).
		Since this is the first color in a new image, it will
		be the background color. */
	black = gdImageColorAllocate(im, 0, 0, 0);	

	/* Allocate the color white (red, green and blue all maximum). */
	white = gdImageColorAllocate(im, 255, 255, 255);	
	
	/* Draw a line from the upper left to the lower right,
		using white color index. */
	gdImageLine(im, 0, 0, 63, 63, white);	

	/* Open a file for writing. "wb" means "write binary", important
		under MSDOS, harmless under Unix. */
	pngout = fopen("test.png", "wb");

	/* Do the same for a JPEG-format file. */
	jpegout = fopen("test.jpg", "wb");

	/* Output the image to the disk file in PNG format. */
	gdImagePng(im, pngout);

	/* Output the same image in JPEG format, using the default
		JPEG quality setting. */
	gdImageJpeg(im, jpegout, -1);

	/* Close the files. */
	fclose(pngout);
	fclose(jpegout);

	/* Destroy the image in memory. */
	gdImageDestroy(im);
}
When executed, this program creates an image, allocates two colors (the first color allocated becomes the background color), draws a diagonal line (note that 0, 0 is the upper left corner), writes the image to PNG and JPEG files, and destroys the image.

The above example program should give you an idea of how the package works. gd provides many additional functions, which are listed in the following reference chapters, complete with code snippets demonstrating each. There is also an alphabetical index.

Webpng: a more powerful gd example

Webpng is a simple utility program to manipulate PNGs from the command line. It is written for Unix and similar command-line systems, but should be easily adapted for other environments. Webpng allows you to set transparency and interlacing and output interesting information about the PNG in question.

webpng.c is provided in the distribution. Unix users can simply type "make webpng" to compile the program. Type "webpng" with no arguments to see the available options.

Function and type reference

Types

gdImage(TYPE)
The data structure in which gd stores images. gdImageCreate, gdImageCreateTrueColor and the various image file-loading functions return a pointer to this type, and the other functions expect to receive a pointer to this type as their first argument. It is reasonably safe to examine any of the members of this structure. It is also reasonably safe to modify individual pixels within the pixels or tpixels arrays. If the trueColor flag is set, the tpixels array is valid; otherwise the pixels array is valid.

The colorsTotal, red, green, blue, alpha and open arrays manage the palette. They are valid only when the trueColor flag is not set. The transparent value contains the palette index of the first transparent color as read-only information for backwards compatibility; gd 2.0 stores this information in the alpha array so that variable transparency can be supported for each palette entry. However, for truecolor images, transparent represents a single RGB color which is always 100% transparent, and this feature is generally supported by browsers which do not support full alpha channels.

typedef struct {
	/* Palette-based image pixels */
	unsigned char ** pixels;
	int sx;
	int sy;
	/* These are valid in palette images only. See also
	/* 'alpha', which appears later in the structure to
		preserve binary backwards compatibility */
	int colorsTotal;
	int red[gdMaxColors];
	int green[gdMaxColors];
	int blue[gdMaxColors]; 
	int open[gdMaxColors];
	/* For backwards compatibility, this is set to the
		first palette entry with 100% transparency,
		and is also set and reset by the 
		gdImageColorTransparent function. Newer
		applications can allocate palette entries
		with any desired level of transparency; however,
		bear in mind that many viewers, notably
		many web browsers, fail to implement
		full alpha channel for PNG and provide
		support for full opacity or transparency only. */
	int transparent;
	int *polyInts;
	int polyAllocated;
	struct gdImageStruct *brush;
	struct gdImageStruct *tile;	
	int brushColorMap[gdMaxColors];
	int tileColorMap[gdMaxColors];
	int styleLength;
	int stylePos;
	int *style;
	int interlace;
	/* New in 2.0: alpha channel for palettes. Note that only
		Macintosh Internet Explorer and (possibly) Netscape 6
		really support multiple levels of transparency in
		palettes, to my knowledge, as of 2/15/01. Most
		common browsers will display 100% opaque and
		100% transparent correctly, and do something 
		unpredictable and/or undesirable for levels
		in between. TBB */
	int alpha[gdMaxColors]; 
	/* Truecolor flag and pixels. New 2.0 fields appear here at the
		end to minimize breakage of existing object code. */
	int trueColor;
	int ** tpixels;
	/* Should alpha channel be copied, or applied, each time a
		pixel is drawn? This applies to truecolor images only.
		No attempt is made to alpha-blend in palette images,
		even if semitransparent palette entries exist. 
		To do that, build your image as a truecolor image,
		then quantize down to 8 bits. */
	int alphaBlendingFlag;
	/* Should the alpha channel of the image be saved? This affects
		PNG at the moment; other future formats may also
		have that capability. JPEG doesn't. */
	int saveAlphaFlag;
} gdImage;

The order of the structure members may appear confusing, but was chosen deliberately to increase backwards compatibility with existing gd 1.x-based binary code that references particular structure members.

gdImagePtr (TYPE)
A pointer to an image structure. gdImageCreate returns this type, and the other functions expect it as the first argument.
gdFont (TYPE)
A font structure. Used to declare the characteristics of a font. Plese see the files gdfontl.c and gdfontl.h for an example of the proper declaration of this structure. You can provide your own font data by providing such a structure and the associated pixel array. You can determine the width and height of a single character in a font by examining the w and h members of the structure. If you will not be creating your own fonts, you will not need to concern yourself with the rest of the components of this structure.
typedef struct {
	/* # of characters in font */
	int nchars;
	/* First character is numbered... (usually 32 = space) */
	int offset;
	/* Character width and height */
	int w;
	int h;
	/* Font data; array of characters, one row after another.
		Easily included in code, also easily loaded from
		data files. */
	char *data;
} gdFont;
gdFontPtr (TYPE)
A pointer to a font structure. Text-output functions expect these as their second argument, following the gdImagePtr argument. Two such pointers are declared in the provided include files gdfonts.h and gdfontl.h.
gdPoint (TYPE)
Represents a point in the coordinate space of the image; used by gdImagePolygon and gdImageFilledPolygon.
typedef struct {
        int x, y;
} gdPoint, *gdPointPtr;
gdPointPtr (TYPE)
A pointer to a gdPoint structure; passed as an argument to gdImagePolygon and gdImageFilledPolygon.
gdSource (TYPE)
typedef struct {
        int (*source) (void *context, char *buffer, int len);
        void *context;
} gdSource, *gdSourcePtr;
Represents a source from which a PNG can be read. Programmers who do not wish to read PNGs from a file can provide their own alternate input mechanism, using the gdImageCreateFromPngSource function. See the documentation of that function for an example of the proper use of this type.
gdSink (TYPE)
typedef struct {
        int (*sink) (void *context, char *buffer, int len);
        void *context;
} gdSink, *gdSinkPtr;
Represents a "sink" (destination) to which a PNG can be written. Programmers who do not wish to write PNGs to a file can provide their own alternate output mechanism, using the gdImagePngToSink function. See the documentation of that function for an example of the proper use of this type.

Image creation, destruction, loading and saving

gdImageCreate(sx, sy) (FUNCTION)
gdImageCreate is called to create palette-based images, with no more than 256 colors. Invoke gdImageCreate with the x and y dimensions of the desired image. gdImageCreate returns a gdImagePtr to the new image, or NULL if unable to allocate the image. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
im = gdImageCreate(64, 64);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateTrueColor(sx, sy) (FUNCTION)
gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors. Invoke gdImageCreateTrueColor with the x and y dimensions of the desired image. gdImageCreateTrueColor returns a gdImagePtr to the new image, or NULL if unable to allocate the image. The image must eventually be destroyed using gdImageDestroy().

Truecolor images are always filled with black at creation time.

... inside a function ...
gdImagePtr im;
im = gdImageCreateTrueColor(64, 64);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromJpeg(FILE *in) (FUNCTION)
gdImageCreateFromJpegCtx(FILE *in) (FUNCTION)

gdImageCreateFromJpeg(FILE *in) (FUNCTION)
gdImageCreateFromJpegCtx(FILE *in) (FUNCTION)

gdImageCreateFromJpeg is called to load images from JPEG format files. Invoke gdImageCreateFromJpeg with an already opened pointer to a file containing the desired image. gdImageCreateFromJpeg returns a gdImagePtr to the new truecolor image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a JPEG image). gdImageCreateFromJpeg does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy(). The returned image is always a truecolor image.
gdImagePtr im;
... inside a function ...
FILE *in;
in = fopen("myjpeg.jpg", "rb");
im = gdImageCreateFromJpeg(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromPng(FILE *in) (FUNCTION)
gdImageCreateFromPngCtx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromPng is called to load images from PNG format files. Invoke gdImageCreateFromPng with an already opened pointer to a file containing the desired image. gdImageCreateFromPng returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a PNG image). gdImageCreateFromPng does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().

If the PNG image being loaded is a truecolor image, the resulting gdImagePtr will refer to a truecolor image. If the PNG image being loaded is a palette or grayscale image, the resulting gdImagePtr will refer to a palette image. gd retains only 8 bits of resolution for each of the red, green and blue channels, and only 7 bits of resolution for the alpha channel. The former restriction affects only a handful of very rare 48-bit color and 16-bit grayscale PNG images. The second restriction affects all semitransparent PNG images, but the difference is essentially invisible to the eye. 7 bits of alpha channel resolution is, in practice, quite a lot.

gdImagePtr im;
... inside a function ...
FILE *in;
in = fopen("mypng.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromPngSource(gdSourcePtr in) (FUNCTION)
gdImageCreateFromPngSource is called to load a PNG from a data source other than a file. Usage is very similar to the gdImageCreateFromPng function, except that the programmer provides a custom data source.

The programmer must write an input function which accepts a context pointer, a buffer, and a number of bytes to be read as arguments. This function must read the number of bytes requested, unless the end of the file has been reached, in which case the function should return zero, or an error has occurred, in which case the function should return -1. The programmer then creates a gdSource structure and sets the source pointer to the input function and the context pointer to any value which is useful to the programmer.

The example below implements gdImageCreateFromPng by creating a custom data source and invoking gdImageCreateFromPngSource.

static int freadWrapper(void *context, char *buf, int len);

gdImagePtr gdImageCreateFromPng(FILE *in)
{
        gdSource s;
        s.source = freadWrapper;
        s.context = in;
        return gdImageCreateFromPngSource(&s);
}

static int freadWrapper(void *context, char *buf, int len)
{
        int got = fread(buf, 1, len, (FILE *) context);
        return got;
}
gdImageCreateFromGd(FILE *in) (FUNCTION)
gdImageCreateFromGdCtx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromGd is called to load images from gd format files. Invoke gdImageCreateFromGd with an already opened pointer to a file containing the desired image in the gd file format, which is specific to gd and intended for very fast loading. (It is not intended for compression; for compression, use PNG or JPEG.) gdImageCreateFromGd returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image). gdImageCreateFromGd does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("mygd.gd", "rb");
im = gdImageCreateFromGd(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromGd2(FILE *in) (FUNCTION)
gdImageCreateFromGd2Ctx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromGd2 is called to load images from gd2 format files. Invoke gdImageCreateFromGd2 with an already opened pointer to a file containing the desired image in the gd2 file format, which is specific to gd2 and intended for fast loading of parts of large images. (It is a compressed format, but generally not as good as maximum compression of the entire image would be.) gdImageCreateFromGd returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image). gdImageCreateFromGd2 does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("mygd.gd2", "rb");
im = gdImageCreateFromGd2(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromGd2Part(FILE *in, int srcX, int srcY, int w, int h) (FUNCTION)
gdImageCreateFromGd2PartCtx(gdIOCtx *in) (FUNCTION)

gdImageCreateFromGd2Part is called to load parts of images from gd2 format files. Invoked in the same way as gdImageCreateFromGd2, but with extra parameters indicating the source (x, y) and width/height of the desired image. gdImageCreateFromGd2Part returns a gdImagePtr to the new image, or NULL if unable to load the image. The image must eventually be destroyed using gdImageDestroy().

gdImageCreateFromXbm(FILE *in) (FUNCTION)
gdImageCreateFromXbm is called to load images from X bitmap format files. Invoke gdImageCreateFromXbm with an already opened pointer to a file containing the desired image. gdImageCreateFromXbm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an X bitmap format image). gdImageCreateFromXbm does not close the file. You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("myxbm.xbm", "rb");
im = gdImageCreateFromXbm(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageCreateFromXpm(char *filename) (FUNCTION)
gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files. This function is available only if HAVE_XPM is selected in the Makefile and the Xpm library is linked with the application. Unlike most gd file functions, the Xpm functions require filenames, not file pointers. gdImageCreateFromXpm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an XPM bitmap format image). You can inspect the sx and sy members of the image to determine its size. The image must eventually be destroyed using gdImageDestroy().
... inside a function ...
gdImagePtr im;
FILE *in;
in = fopen("myxpm.xpm", "rb");
im = gdImageCreateFromXpm(in);
fclose(in);
/* ... Use the image ... */
gdImageDestroy(im);
gdImageDestroy(gdImagePtr im) (FUNCTION)
gdImageDestroy is used to free the memory associated with an image. It is important to invoke gdImageDestroy before exiting your program or assigning a new image to a gdImagePtr variable.
... inside a function ...
gdImagePtr im;
im = gdImageCreate(10, 10);
/* ... Use the image ... */
/* Now destroy it */
gdImageDestroy(im);
void gdImageJpeg(gdImagePtr im, FILE *out, int quality) (FUNCTION)
void gdImageJpegCtx(gdImagePtr im, gdIOCtx *out, int quality) (FUNCTION)
gdImageJpeg outputs the specified image to the specified file in JPEG format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageJpeg does not close the file; your code must do so.

If quality is negative, the default IJG JPEG quality value (which should yield a good general quality / size tradeoff for most situations) is used. Otherwise, for practical purposes, quality should be a value in the range 0-95, higher quality values usually implying both higher quality and larger image sizes.

If you have set image interlacing using gdImageInterlace, this function will interpret that to mean you wish to output a progressive JPEG. Some programs (e.g., Web browsers) can display progressive JPEGs incrementally; this can be useful when browsing over a relatively slow communications link, for example. Progressive JPEGs can also be slightly smaller than sequential (non-progressive) JPEGs.

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.jpg", "wb");
/* Write JPEG using default quality */
gdImageJpeg(im, out, -1);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageJpegPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
void gdImagePng(gdImagePtr im, FILE *out) (FUNCTION)
gdImagePng outputs the specified image to the specified file in PNG format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImagePng does not close the file; your code must do so.
... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.png", "wb");
/* Write PNG */
gdImagePng(im, out);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImagePngPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImagePng except that it returns a pointer to a memory area with the PNG data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
gdImagePngToSink(gdImagePtr im, gdSinkPtr out) (FUNCTION)
gdImagePngToSink is called to write a PNG to a data "sink" (destination) other than a file. Usage is very similar to the gdImagePng function, except that the programmer provides a custom data sink.

The programmer must write an output function which accepts a context pointer, a buffer, and a number of bytes to be written as arguments. This function must write the number of bytes requested and return that number, unless an error has occurred, in which case the function should return -1. The programmer then creates a gdSink structure and sets the sink pointer to the output function and the context pointer to any value which is useful to the programmer.

The example below implements gdImagePng by creating a custom data source and invoking gdImagePngFromSink.

static int stdioSink(void *context, char *buffer, int len)
{
	return fwrite(buffer, 1, len, (FILE *) context);
}

void gdImagePng(gdImagePtr im, FILE *out)
{
	gdSink mySink;
	mySink.context = (void *) out;
	mySink.sink = stdioSink;
	gdImagePngToSink(im, &mySink);
}
void gdImageWBMP(gdImagePtr im, int fg, FILE *out)
gdImageWBMPCtx(gdIOCtx *out) (FUNCTION)(FUNCTION)
gdImageWBMP outputs the specified image to the specified file in WBMP format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageWBMP does not close the file; your code must do so.

WBMP file support is black and white only. The color index specified by the fg argument is the "foreground," and only pixels of this color will be set in the WBMP file. All other pixels will be considered "background."

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.wbmp", "wb");
/* Write WBMP, with black as foreground */
gdImageWBMP(im, black, out);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageWBMPPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImageWBMP except that it returns a pointer to a memory area with the WBMP data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
void gdImageGd(gdImagePtr im, FILE *out) (FUNCTION)
gdImageGd outputs the specified image to the specified file in the gd image format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImagePng does not close the file; your code must do so.

The gd image format is intended for fast reads and writes of images your program will need frequently to build other images. It is not a compressed format, and is not intended for general use.

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.gd", "wb");
/* Write gd format file */
gdImageGd(im, out);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageGdPtr(gdImagePtr im, int *size) (FUNCTION)
Identical to gdImageGd except that it returns a pointer to a memory area with the GD data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.
void gdImageGd2(gdImagePtr im, FILE *out, int chunkSize, int fmt) (FUNCTION)
gdImageGd2 outputs the specified image to the specified file in the gd2 image format. The file must be open for writing. Under MSDOS and all versions of Windows, it is important to use "wb" as opposed to simply "w" as the mode when opening the file, and under Unix there is no penalty for doing so. gdImageGd2 does not close the file; your code must do so.

The gd2 image format is intended for fast reads and writes of parts of images. It is a compressed format, and well suited to retrieving smll sections of much larger images. The third and fourth parameters are the 'chunk size' and format resposectively.

The file is stored as a series of compressed subimages, and the Chunk Size determines the sub-image size - a value of zero causes the GD library to use the default.

It is also possible to store GD2 files in an uncompressed format, in which case the fourth parameter should be GD2_FMT_RAW.

... inside a function ...
gdImagePtr im;
int black, white;
FILE *out;
/* Create the image */
im = gdImageCreate(100, 100);
/* Allocate background */
white = gdImageColorAllocate(im, 255, 255, 255);
/* Allocate drawing color */
black = gdImageColorAllocate(im, 0, 0, 0);
/* Draw rectangle */
gdImageRectangle(im, 0, 0, 99, 99, black);
/* Open output file in binary mode */
out = fopen("rect.gd", "wb");
/* Write gd2 format file */
gdImageGd2(im, out, 0, GD2_FMT_COMPRESSED);
/* Close file */
fclose(out);
/* Destroy image */
gdImageDestroy(im);
void* gdImageGd2Ptr(gdImagePtr im, int chunkSize, int fmt, int *size) (FUNCTION)
Identical to gdImageGd2 except that it returns a pointer to a memory area with the GD2 data. This memory must be freed by the caller when it is no longer needed. The caller must invoke gdFree(), not free(), unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time. The 'size' parameter receives the total size of the block of memory.

Drawing Functions

void gdImageSetPixel(gdImagePtr im, int x, int y, int color) (FUNCTION)
gdImageSetPixel sets a pixel to a particular color index. Always use this function or one of the other drawing functions to access pixels; do not access the pixels of the gdImage structure directly.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Set a pixel near the center. */
gdImageSetPixel(im, 50, 50, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageLine is used to draw a line between two endpoints (x1,y1 and x2, y2). The line is drawn using the color index specified. Note that the color index can be an actual color returned by gdImageColorAllocate or one of gdStyled, gdBrushed or gdStyledBrushed.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a line from the upper left corner to the lower right corner. */
gdImageLine(im, 0, 0, 99, 99, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageDashedLine is provided solely for backwards compatibility with gd 1.0. New programs should draw dashed lines using the normal gdImageLine function and the new gdImageSetStyle function.

gdImageDashedLine is used to draw a dashed line between two endpoints (x1,y1 and x2, y2). The line is drawn using the color index specified. The portions of the line that are not drawn are left transparent so the background is visible.

... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a dashed line from the upper left corner to the lower right corner. */
gdImageDashedLine(im, 0, 0, 99, 99);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImagePolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color) (FUNCTION)
gdImagePolygon is used to draw a polygon with the verticies (at least 3) specified, using the color index specified. See also gdImageFilledPolygon.
... inside a function ...
gdImagePtr im;
int black;
int white;
/* Points of polygon */
gdPoint points[3];
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a triangle. */
points[0].x = 50;
points[0].y = 0;
points[1].x = 99;
points[1].y = 99;
points[2].x = 0;
points[2].y = 99;
gdImagePolygon(im, points, 3, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageRectangle is used to draw a rectangle with the two corners (upper left first, then lower right) specified, using the color index specified.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a rectangle occupying the central area. */
gdImageRectangle(im, 25, 25, 74, 74, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledPolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color) (FUNCTION)
gdImageFilledPolygon is used to fill a polygon with the verticies (at least 3) specified, using the color index specified. See also gdImagePolygon.
... inside a function ...
gdImagePtr im;
int black;
int white;
int red;
/* Points of polygon */
gdPoint points[3];
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Draw a triangle. */
points[0].x = 50;
points[0].y = 0;
points[1].x = 99;
points[1].y = 99;
points[2].x = 0;
points[2].y = 99;
/* Paint it in white */
gdImageFilledPolygon(im, points, 3, white);
/* Outline it in red; must be done second */
gdImagePolygon(im, points, 3, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color) (FUNCTION)
gdImageFilledRectangle is used to draw a solid rectangle with the two corners (upper left first, then lower right) specified, using the color index specified.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = int gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a filled rectangle occupying the central area. */
gdImageFilledRectangle(im, 25, 25, 74, 74, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) (FUNCTION)
gdImageArc is used to draw a partial ellipse centered at the given point, with the specified width and height in pixels. The arc begins at the position in degrees specified by s and ends at the position specified by e. The arc is drawn in the color specified by the last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Inscribe an ellipse in the image. */
gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color, int style) (FUNCTION)
gdImageFilledArc is used to draw a partial ellipse centered at the given point, with the specified width and height in pixels. The arc begins at the position in degrees specified by s and ends at the position specified by e. The arc is filled in the color specified by the second to last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360. The last argument is a bitwise OR of the following possibilities:
  • gdArc
  • gdChord
  • gdPie (synonym for gdChord)
  • gdNoFill
  • gdEdged
gdArc and gdChord are mutually exclusive; gdChord just connects the starting and ending angles with a straight line, while gdArc produces a rounded edge. gdPie is a synonym for gdArc. gdNoFill indicates that the arc or chord should be outlined, not filled. gdEdged, used together with gdNoFill, indicates that the beginning and ending angles should be connected to the center; this is a good way to outline (rather than fill) a 'pie slice'.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Inscribe a filled pie slice in the image. */
gdImageFilledArc(im, 50, 25, 98, 48, 0, 45, white, gdArc);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFilledEllipse(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color) (FUNCTION)
gdImageFilledEllipse is used to draw an ellipse centered at the given point, with the specified width and height in pixels. The ellipse is filled in the color specified by the last argument. A circle can be drawn by beginning from 0 degrees and ending at 360 degrees, with width and height being equal. e must be greater than s. Values greater than 360 are interpreted modulo 360.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Inscribe a filled ellipse in the image. */
gdImageFilledEllipse(im, 50, 25, 98, 48, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color) (FUNCTION)
gdImageFillToBorder floods a portion of the image with the specified color, beginning at the specified point and stopping at the specified border color. For a way of flooding an area defined by the color of the starting point, see gdImageFill.

The border color cannot be a special color such as gdTiled; it must be a proper solid color. The fill color can be, however.

Note that gdImageFillToBorder is recursive. It is not the most naive implementation possible, and the implementation is expected to improve, but there will always be degenerate cases in which the stack can become very deep. This can be a problem in MSDOS and MS Windows 3.1 environments. (Of course, in a Unix or Windows 95/98/NT environment with a proper stack, this is not a problem at all.)

... inside a function ...
gdImagePtr im;
int black;
int white;
int red;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Inscribe an ellipse in the image. */
gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
/* Flood-fill the ellipse. Fill color is red, border color is
	white (ellipse). */
gdImageFillToBorder(im, 50, 50, white, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageFill(gdImagePtr im, int x, int y, int color) (FUNCTION)
gdImageFill floods a portion of the image with the specified color, beginning at the specified point and flooding the surrounding region of the same color as the starting point. For a way of flooding a region defined by a specific border color rather than by its interior color, see gdImageFillToBorder.

The fill color can be gdTiled, resulting in a tile fill using another image as the tile. However, the tile image cannot be transparent. If the image you wish to fill with has a transparent color index, call gdImageTransparent on the tile image and set the transparent color index to -1 to turn off its transparency.

Note that gdImageFill is recursive. It is not the most naive implementation possible, and the implementation is expected to improve, but there will always be degenerate cases in which the stack can become very deep. This can be a problem in MSDOS and MS Windows environments. (Of course, in a Unix or Windows 95/98/NT environment with a proper stack, this is not a problem at all.)

... inside a function ...
gdImagePtr im;
int black;
int white;
int red;
im = gdImageCreate(100, 50);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Inscribe an ellipse in the image. */
gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
/* Flood-fill the ellipse. Fill color is red, and will replace the
	black interior of the ellipse. */
gdImageFill(im, 50, 50, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageSetBrush(gdImagePtr im, gdImagePtr brush) (FUNCTION)
A "brush" is an image used to draw wide, shaped strokes in another image. Just as a paintbrush is not a single point, a brush image need not be a single pixel. Any gd image can be used as a brush, and by setting the transparent color index of the brush image with gdImageColorTransparent, a brush of any shape can be created. All line-drawing functions, such as gdImageLine and gdImagePolygon, will use the current brush if the special "color" gdBrushed or gdStyledBrushed is used when calling them.

gdImageSetBrush is used to specify the brush to be used in a particular image. You can set any image to be the brush. If the brush image does not have the same color map as the first image, any colors missing from the first image will be allocated. If not enough colors can be allocated, the closest colors already available will be used. This allows arbitrary PNGs to be used as brush images. It also means, however, that you should not set a brush unless you will actually use it; if you set a rapid succession of different brush images, you can quickly fill your color map, and the results will not be optimal.

You need not take any special action when you are finished with a brush. As for any other image, if you will not be using the brush image for any further purpose, you should call gdImageDestroy. You must not use the color gdBrushed if the current brush has been destroyed; you can of course set a new brush to replace it.

... inside a function ...
gdImagePtr im, brush;
FILE *in;
int black;
im = gdImageCreate(100, 100);
/* Open the brush PNG. For best results, portions of the
	brush that should be transparent (ie, not part of the
	brush shape) should have the transparent color index. */
in = fopen("star.png", "rb");
brush = gdImageCreateFromPng(in);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
gdImageSetBrush(im, brush);
/* Draw a line from the upper left corner to the lower right corner
	using the brush. */
gdImageLine(im, 0, 0, 99, 99, gdBrushed);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
/* Destroy the brush image */
gdImageDestroy(brush);
void gdImageSetTile(gdImagePtr im, gdImagePtr tile) (FUNCTION)
A "tile" is an image used to fill an area with a repeated pattern. Any gd image can be used as a tile, and by setting the transparent color index of the tile image with gdImageColorTransparent, a tile that allows certain parts of the underlying area to shine through can be created. All region-filling functions, such as gdImageFill and gdImageFilledPolygon, will use the current tile if the special "color" gdTiled is used when calling them.

gdImageSetTile is used to specify the tile to be used in a particular image. You can set any image to be the tile. If the tile image does not have the same color map as the first image, any colors missing from the first image will be allocated. If not enough colors can be allocated, the closest colors already available will be used. This allows arbitrary PNGs to be used as tile images. It also means, however, that you should not set a tile unless you will actually use it; if you set a rapid succession of different tile images, you can quickly fill your color map, and the results will not be optimal.

You need not take any special action when you are finished with a tile. As for any other image, if you will not be using the tile image for any further purpose, you should call gdImageDestroy. You must not use the color gdTiled if the current tile has been destroyed; you can of course set a new tile to replace it.

... inside a function ...
gdImagePtr im, tile;
FILE *in;
int black;
im = gdImageCreate(100, 100);
/* Open the tile PNG. For best results, portions of the
	tile that should be transparent (ie, allowing the
	background to shine through) should have the transparent
	color index. */
in = fopen("star.png", "rb");
tile = gdImageCreateFromPng(in);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
gdImageSetTile(im, tile);
/* Fill an area using the tile. */
gdImageFilledRectangle(im, 25, 25, 75, 75, gdTiled);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
/* Destroy the tile image */
gdImageDestroy(tile);
void gdImageSetStyle(gdImagePtr im, int *style, int styleLength) (FUNCTION)
It is often desirable to draw dashed lines, dotted lines, and other variations on a broken line. gdImageSetStyle can be used to set any desired series of colors, including a special color that leaves the background intact, to be repeated during the drawing of a line.

To use gdImageSetStyle, create an array of integers and assign them the desired series of color values to be repeated. You can assign the special color value gdTransparent to indicate that the existing color should be left unchanged for that particular pixel (allowing a dashed line to be attractively drawn over an existing image).

Then, to draw a line using the style, use the normal gdImageLine function with the special color value gdStyled.

As of version 1.1.1, the style array is copied when you set the style, so you need not be concerned with keeping the array around indefinitely. This should not break existing code that assumes styles are not copied.

You can also combine styles and brushes to draw the brush image at intervals instead of in a continuous stroke. When creating a style for use with a brush, the style values are interpreted differently: zero (0) indicates pixels at which the brush should not be drawn, while one (1) indicates pixels at which the brush should be drawn. To draw a styled, brushed line, you must use the special color value gdStyledBrushed. For an example of this feature in use, see gddemo.c (provided in the distribution).

gdImagePtr im;
int styleDotted[2], styleDashed[6];
FILE *in;
int black;
int red;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Set up dotted style. Leave every other pixel alone. */
styleDotted[0] = red;
styleDotted[1] = gdTransparent;
/* Set up dashed style. Three on, three off. */
styleDashed[0] = red;
styleDashed[1] = red;
styleDashed[2] = red;
styleDashed[3] = gdTransparent;
styleDashed[4] = gdTransparent;
styleDashed[5] = gdTransparent;
/* Set dotted style. Note that we have to specify how many pixels are
	in the style! */
gdImageSetStyle(im, styleDotted, 2);
/* Draw a line from the upper left corner to the lower right corner. */
gdImageLine(im, 0, 0, 99, 99, gdStyled);
/* Now the dashed line. */
gdImageSetStyle(im, styleDashed, 6);
gdImageLine(im, 0, 99, 0, 99, gdStyled);

/* ... Do something with the image, such as saving it to a file ... */

/* Destroy it */
gdImageDestroy(im);
void gdImageAlphaBlending(gdImagePtr im, int blending) (FUNCTION)
The gdImageAlphaBlending function allows for two different modes of drawing on truecolor images. In blending mode, the alpha channel component of the color supplied to all drawing functions, such as gdImageSetPixel, determines how much of the underlying color should be allowed to shine through. As a result, gd automatically blends the existing color at that point with the drawing color, and stores the result in the image. The resulting pixel is opaque. In non-blending mode, the drawing color is copied literally with its alpha channel information, replacing the destination pixel. Blending mode is not available when drawing on palette images.
gdImagePtr im;
int red, blue;
im = gdImageCreateTrueColor(100, 100);
/* Background color */
red = gdTrueColor(255, 0, 0);	
gdImageFilledRectangle(im, 0, 0, 100, 100, red);
/* Drawing color. Full transparency would be an alpha channel value
	of 127 (gd has a 7 bit alpha chnanel). 0 is opaque,
	127 is transparent. So cut gdAlphaTransparent in half to get
	50% blending. */
blue = gdTrueColorAlpha(0, 0, 255, gdAlphaTransparent / 2);	
/* Draw with blending. Result will be 50% red, 50% blue: yellow 
	(emitted light, remember, not reflected light. What you learned 
	in Kindergarten is wrong here). */
gdImageAlphaBlending(im, 1);
gdImageFilledRectangle(im, 0, 0, 25, 25, blue);
/* Draw without blending. Result will be 50% blue, 50%
	the background color of the image viewer or web browser
	used; results in browsers that don't support
	semi-transparent pixels are unpredictable! */
gdImageAlphaBlending(im, 0);
gdImageFilledRectangle(im, 75, 75, 25, 25, blue);
/* Write the image to disk, etc. */

Query Functions

int gdImageAlpha(gdImagePtr im, int color) (MACRO)
gdImageAlpha is a macro which returns the alpha channel component of the specified color index. Alpha channel values vary between 0 (gdAlphaOpaque), which does not blend at all with the background, through 127 (gdAlphaTransparent), which allows the background to shine through 100%. Use this macro rather than accessing the structure members directly. int gdImageBlue(gdImagePtr im, int color) (MACRO)
gdImageBlue is a macro which returns the blue component of the specified color index. Use this macro rather than accessing the structure members directly.
int gdImageGetPixel(gdImagePtr im, int x, int y) (FUNCTION)
gdImageGetPixel() retrieves the color index of a particular pixel. Always use this function to query pixels; do not access the pixels of the gdImage structure directly.
... inside a function ...
FILE *in;
gdImagePtr im;
int c;
in = fopen("mypng.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
c = gdImageGetPixel(im, gdImageSX(im) / 2, gdImageSY(im) / 2);
printf("The value of the center pixel is %d; RGB values are %d,%d,%d\n",
	c, im->red[c], im->green[c], im->blue[c]);
gdImageDestroy(im);
int gdImageBoundsSafe(gdImagePtr im, int x, int y) (FUNCTION)
gdImageBoundsSafe returns true (1) if the specified point is within the bounds of the image, false (0) if not. This function is intended primarily for use by those who wish to add functions to gd. All of the gd drawing functions already clip safely to the edges of the image.
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
if (gdImageBoundsSafe(im, 50, 50)) {
	printf("50, 50 is within the image bounds\n");
} else {
	printf("50, 50 is outside the image bounds\n");
}
gdImageDestroy(im);
int gdImageGreen(gdImagePtr im, int color) (MACRO)
gdImageGreen is a macro which returns the green component of the specified color index. Use this macro rather than accessing the structure members directly.
int gdImageRed(gdImagePtr im, int color) (MACRO)
gdImageRed is a macro which returns the red component of the specified color index. Use this macro rather than accessing the structure members directly.
int gdImageSX(gdImagePtr im) (MACRO)
gdImageSX is a macro which returns the width of the image in pixels. Use this macro rather than accessing the structure members directly.
int gdImageSY(gdImagePtr im) (MACRO)
gdImageSY is a macro which returns the height of the image in pixels. Use this macro rather than accessing the structure members directly.

Fonts and text-handling functions

void gdImageChar(gdImagePtr im, gdFontPtr font, int x, int y, int c, int color) (FUNCTION)
gdImageChar is used to draw single characters on the image. (To draw multiple characters, use gdImageString or gdImageString16. See also gdImageStringFT for a high quality solution.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The character specified by the fifth argument is drawn from left to right in the specified color. (See gdImageCharUp for a way of drawing vertical text.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a character. */
gdImageChar(im, gdFontLarge, 0, 0, 'Q', white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageCharUp(gdImagePtr im, gdFontPtr font, int x, int y, int c, int color) (FUNCTION)
gdImageCharUp is used to draw single characters on the image, rotated 90 degrees. (To draw multiple characters, use gdImageStringUp or gdImageStringUp16.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The character specified by the fifth argument is drawn from bottom to top, rotated at a 90-degree angle, in the specified color. (See gdImageChar for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
... inside a function ...
gdImagePtr im;
int black;
int white;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a character upwards so it rests against the top of the image. */
gdImageCharUp(im, gdFontLarge,
	0, gdFontLarge->h, 'Q', white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageString(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) (FUNCTION)
gdImageString is used to draw multiple characters on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated C string specified by the fifth argument is drawn from left to right in the specified color. (See gdImageStringUp for a way of drawing vertical text. See also gdImageStringFT for a high quality solution.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
#include <string.h>
... inside a function ...
gdImagePtr im;
int black;
int white;
/* String to draw. */
char *s = "Hello.";
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a centered string. */
gdImageString(im, gdFontLarge,
	im->w / 2 - (strlen(s) * gdFontLarge->w / 2),
	im->h / 2 - gdFontLarge->h / 2,
	s, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageString16(gdImagePtr im, gdFontPtr font, int x, int y, unsigned short *s, int color) (FUNCTION)
gdImageString is used to draw multiple 16-bit characters on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated string of characters represented as 16-bit unsigned short integers specified by the fifth argument is drawn from left to right in the specified color. (See gdImageStringUp16 for a way of drawing vertical text.) Pixels not set by a particular character retain their previous color.

This function was added in gd1.3 to provide a means of rendering fonts with more than 256 characters for those who have them. A more frequently used routine is gdImageString.

void gdImageStringUp(gdImagePtr im, gdFontPtr font, int x, int y, unsigned char *s, int color) (FUNCTION)
gdImageStringUp is used to draw multiple characters on the image, rotated 90 degrees. (To draw single characters, use gdImageCharUp.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts.The null-terminated C string specified by the fifth argument is drawn from bottom to top (rotated 90 degrees) in the specified color. (See gdImageString for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color.
#include "gd.h"
#include "gdfontl.h"
#include <string.h>
... inside a function ...
gdImagePtr im;
int black;
int white;
/* String to draw. */
char *s = "Hello.";
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color white (red, green and blue all maximum). */
white = gdImageColorAllocate(im, 255, 255, 255);	
/* Draw a centered string going upwards. Axes are reversed,
	and Y axis is decreasing as the string is drawn. */
gdImageStringUp(im, gdFontLarge,
	im->w / 2 - gdFontLarge->h / 2,
	im->h / 2 + (strlen(s) * gdFontLarge->w / 2),
	s, white);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageStringUp16(gdImagePtr im, gdFontPtr font, int x, int y, unsigned short *s, int color) (FUNCTION)
gdImageString is used to draw multiple 16-bit characters vertically on the image. (To draw single characters, use gdImageChar.) The second argument is a pointer to a font definition structure; five fonts are provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold, gdFontLarge, and gdFontGiant. You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h" and "gdfontg.h" respectively and (if you are not using a library-based approach) link with the corresponding .c files to use the provided fonts. The null-terminated string of characters represented as 16-bit unsigned short integers specified by the fifth argument is drawn from bottom to top in the specified color. (See gdImageStringUp16 for a way of drawing horizontal text.) Pixels not set by a particular character retain their previous color.

This function was added in gd1.3 to provide a means of rendering fonts with more than 256 characters for those who have them. A more frequently used routine is gdImageStringUp.

char *gdImageStringFT(gdImagePtr im, int *brect, int fg, char *fontname, double ptsize, double angle, int x, int y, char *string) (FUNCTION)
RECOMMENDED. New in 1.8.4. gdImageStringFT draws text using the FreeType 2.x library.

gdImageStringFT draws a string of anti-aliased characters on the image using the FreeType library to render user-supplied TrueType fonts. We do not provide TrueType fonts (.ttf and .ttc files). Obtaining them is entirely up to you. The string is anti-aliased, meaning that there should be fewer "jaggies" visible. The fontname is the full pathname to a TrueType font file, or a font face name if the GDFONTPATH environment variable or FreeType's DEFAULT_FONTPATH variable have been set intelligently. The string may be arbitrarily scaled (ptsize) and rotated (angle in radians).

The user-supplied int brect[8] array is filled on return from gdImageStringFT with the 8 elements representing the 4 corner coordinates of the bounding rectangle.
0 lower left corner, X position
lower left corner, Y position
lower right corner, X position
3 lower right corner, Y position
4 upper right corner, X position
5 upper right corner, Y position
6 upper left corner, X position
7 upper left corner, Y position

The points are relative to the text regardless of the angle, so "upper left" means in the top left-hand corner seeing the text horizontally.

Use a NULL gdImagePtr to get the bounding rectangle without rendering. This is a relatively cheap operation if followed by a rendering of the same string, because of the caching of the partial rendering during bounding rectangle calculation.

The string is rendered in the color indicated by the gf color index. Use the negative of the desired color index to disable anti-aliasing.

The string may contain UTF-8 sequences like: "&#192;"

gdImageStringFT will return a null char* on success, or an error string on failure.

#include "gd.h"
#include <string.h>
... inside a function ...
gdImagePtr im;
int black;
int white;
int brect[8];
int x, y;
char *err;

char *s = "Hello."; /* String to draw. */
double sz = 40.;
char *f = "/usr/local/share/ttf/Times.ttf";  /* User supplied font */

/* obtain brect so that we can size the image */
err = gdImageStringFT(NULL,&brect[0],0,f,sz,0.,0,0,s);
if (err) {fprintf(stderr,err); return 1;}

/* create an image big enough for the string plus a little whitespace */
x = brect[2]-brect[6] + 6;
y = brect[3]-brect[7] + 6;
im = gdImageCreate(x,y);

/* Background color (first allocated) */
white = gdImageColorResolve(im, 255, 255, 255);
black = gdImageColorResolve(im, 0, 0, 0);

/* render the string, offset origin to center string*/
/* note that we use top-left coordinate for adjustment
 * since gd origin is in top-left with y increasing downwards. */
x = 3 - brect[6];
y = 3 - brect[7];
err = gdImageStringFT(im,&brect[0],black,f,sz,0.0,x,y,s);
if (err) {fprintf(stderr,err); return 1;}

/* Write img to stdout */
gdImagePng(im, stdout);

/* Destroy it */
gdImageDestroy(im);
char *gdImageStringTTF(gdImagePtr im, int *brect, int fg, char *fontname, double ptsize, double angle, int x, int y, char *string) (FUNCTION)
DEPRECATED. THis function simply invokes gdImageStringFT for backwards compatibility with old code that was written with FreeType 1.x. /DL>

Color-handling functions

int gdImageColorAllocate(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorAllocate finds the first available color index in the image specified, sets its RGB values to those requested (255 is the maximum for each), and returns the index of the new color table entry, or an RGBA value in the case of a truecolor image; in either case you can then use the returned value as a parameter to drawing functions. When creating a new palette-based image, the first time you invoke this function, you are setting the background color for that image.

In the event that all gdMaxColors colors (256) have already been allocated, gdImageColorAllocate will return -1 to indicate failure. (This is not uncommon when working with existing PNG files that already use 256 colors.) Note that gdImageColorAllocate does not check for existing colors that match your request; see gdImageColorExact, gdImageColorClosest and gdImageColorClosestHWB for ways to locate existing colors that approximate the color desired in situations where a new color is not available. Also see gdImageColorResolve, new in gd-1.6.2.

... inside a function ...
gdImagePtr im;
int black;
int red;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color red. */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* Draw a dashed line from the upper left corner to the lower right corner. */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorAllocateAlpha(gdImagePtr im, int r, int g, int b, int a) (FUNCTION)
gdImageColorAllocateAlpha finds the first available color index in the image specified, sets its RGBA values to those requested (255 is the maximum for red, green and blue, and 127 represents full transparency for alpha), and returns the index of the new color table entry, or an RGBA value in the case of a truecolor image; in either case you can then use the returned value as a parameter to drawing functions. When creating a new palette-based image, the first time you invoke this function, you are setting the background color for that image.

In the event that all gdMaxColors colors (256) have already been allocated, gdImageColorAllocate will return -1 to indicate failure. (This is not uncommon when working with existing palette-based PNG files that already use 256 colors.) Note that gdImageColorAllocateAlpha does not check for existing colors that match your request; see gdImageColorExactAlpha and gdImageColorClosestAlpha for ways to locate existing colors that approximate the color desired in situations where a new color is not available. Also see gdImageColorResolveAlpha.

... inside a function ...
gdImagePtr im;
int black;
int red;
im = gdImageCreate(100, 100);
/* Background color (first allocated) */
black = gdImageColorAllocate(im, 0, 0, 0);	
/* Allocate the color red, 50% transparent. */
red = gdImageColorAllocateAlpha(im, 255, 0, 0, 64);	
/* Draw a dashed line from the upper left corner to the lower right corner. */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorClosest(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorClosest searches the colors which have been defined thus far in the image specified and returns the index of the color with RGB values closest to those of the request. (Closeness is determined by Euclidian distance, which is used to determine the distance in three-dimensional color space between colors.)

If no colors have yet been allocated in the image, gdImageColorClosest returns -1.

When applied to a truecolor image, this function always succeeds in returning the desired color.

This function is most useful as a backup method for choosing a drawing color when an image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing PNG files that already use many colors.) See gdImageColorExact for a method of locating exact matches only.

... inside a function ...
gdImagePtr im;
FILE *in;
int red;
/* Let's suppose that photo.png is a scanned photograph with
	many colors. */
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Try to allocate red directly */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* If we fail to allocate red... */
if (red == (-1)) {
	/* Find the closest color instead. */
	red = gdImageColorClosest(im, 255, 0, 0);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorClosestAlpha(gdImagePtr im, int r, int g, int b, int a) (FUNCTION)
gdImageColorClosest searches the colors which have been defined thus far in the image specified and returns the index of the color with RGBA values closest to those of the request. (Closeness is determined by Euclidian distance, which is used to determine the distance in four-dimensional color/alpha space between colors.)

If no colors have yet been allocated in the image, gdImageColorClosestAlpha returns -1.

When applied to a truecolor image, this function always succeeds in returning the desired color.

This function is most useful as a backup method for choosing a drawing color when a palette-based image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing palette-based PNG files that already use many colors.) See gdImageColorExactAlpha for a method of locating exact matches only.

... inside a function ...
gdImagePtr im;
FILE *in;
int red;
/* Let's suppose that photo.png is a scanned photograph with
	many colors. */
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Try to allocate red, 50% transparent, directly */
red = gdImageColorAllocateAlpha(im, 255, 0, 0, 64);	
/* If we fail to allocate red... */
if (red == (-1)) {
	/* Find the closest color instead. */
	red = gdImageColorClosestAlpha(im, 255, 0, 0, 64);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorClosestHWB(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorClosestHWB searches the colors which have been defined thus far in the image specified and returns the index of the color with hue, whiteness and blackness closest to the requested color. This scheme is typically superior to the Euclidian distance scheme used by gdImageColorClosest.

If no colors have yet been allocated in the image, gdImageColorClosestHWB returns -1.

When applied to a truecolor image, this function always succeeds in returning the desired color.

This function is most useful as a backup method for choosing a drawing color when an image already contains gdMaxColors (256) colors and no more can be allocated. (This is not uncommon when working with existing PNG files that already use many colors.) See gdImageColorExact for a method of locating exact matches only.

... inside a function ...
gdImagePtr im;
FILE *in;
int red;
/* Let's suppose that photo.png is a scanned photograph with
	many colors. */
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Try to allocate red directly */
red = gdImageColorAllocate(im, 255, 0, 0);	
/* If we fail to allocate red... */
if (red == (-1)) {
	/* Find the closest color instead. */
	red = gdImageColorClosestHWB(im, 255, 0, 0);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorExact(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorExact searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGB values which exactly match those of the request. If no allocated color matches the request precisely, gdImageColorExact returns -1. See gdImageColorClosest for a way to find the color closest to the color requested.

When applied to a truecolor image, this function always succeeds in returning the desired color.

... inside a function ...
gdImagePtr im;
int red;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* The image may already contain red; if it does, we'll save a slot
	in the color table by using that color. */
/* Try to allocate red directly */
red = gdImageColorExact(im, 255, 0, 0);
/* If red isn't already present... */
if (red == (-1)) {
	/* Second best: try to allocate it directly. */
	red = gdImageColorAllocate(im, 255, 0, 0);	
	/* Out of colors, so find the closest color instead. */
	red = gdImageColorClosest(im, 255, 0, 0);
}
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorResolve(gdImagePtr im, int r, int g, int b) (FUNCTION)
gdImageColorResolve searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGB values which exactly match those of the request. If no allocated color matches the request precisely, then gdImageColorResolve tries to allocate the exact color. If there is no space left in the color table then gdImageColorResolve returns the closest color (as in gdImageColorClosest). This function always returns an index of a color.

When applied to a truecolor image, this function always succeeds in returning the desired color.

... inside a function ...
gdImagePtr im;
int red;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* The image may already contain red; if it does, we'll save a slot
	in the color table by using that color. */
/* Get index of red, or color closest to red */
red = gdImageColorResolve(im, 255, 0, 0);
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorResolveAlpha(gdImagePtr im, int r, int g, int b, int a) (FUNCTION)
gdImageColorResolveAlpha searches the colors which have been defined thus far in the image specified and returns the index of the first color with RGBA values which exactly match those of the request. If no allocated color matches the request precisely, then gdImageColorResolveAlpha tries to allocate the exact color. If there is no space left in the color table then gdImageColorResolveAlpha returns the closest color (as in gdImageColorClosestAlpha). This function always returns an index of a color.

When applied to a truecolor image, this function always succeeds in returning the desired color.

... inside a function ...
gdImagePtr im;
int red;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* The image may already contain red; if it does, we'll save a slot
	in the color table by using that color. */
/* Get index of red, 50% transparent, or the next best thing */
red = gdImageColorResolveAlpha(im, 255, 0, 0, 64);
/* Draw a dashed line from the upper left corner to the lower right corner */
gdImageDashedLine(im, 0, 0, 99, 99, red);
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
int gdImageColorsTotal(gdImagePtr im) (MACRO)
gdImageColorsTotal is a macro which returns the number of colors currently allocated in a palette image. For truecolor images, the result of this call is undefined and should not be used.
int gdImageColorRed(gdImagePtr im, int c) (MACRO)
gdImageColorRed is a macro which returns the red portion of the specified color in the image. This macro works for both palette and truecolor images.
int gdImageColorGreen(gdImagePtr im, int c) (MACRO)
gdImageColorGreen is a macro which returns the green portion of the specified color in the image. This macro works for both palette and truecolor images.
int gdImageColorBlue(gdImagePtr im, int c) (MACRO)
gdImageColorBlue is a macro which returns the green portion of the specified color in the image. This macro works for both palette and truecolor images.
int gdImageGetInterlaced(gdImagePtr im) (MACRO)
gdImageGetInterlaced is a macro which returns true (1) if the image is interlaced, false (0) if not. Use this macro to obtain this information; do not access the structure directly. See gdImageInterlace for a means of interlacing images.
int gdImageGetTransparent(gdImagePtr im) (MACRO)
gdImageGetTransparent is a macro which returns the current transparent color index in the image. If there is no transparent color, gdImageGetTransparent returns -1. Use this macro to obtain this information; do not access the structure directly.
void gdImageColorDeallocate(gdImagePtr im, int color) (FUNCTION)
gdImageColorDeallocate marks the specified color as being available for reuse. It does not attempt to determine whether the color index is still in use in the image. After a call to this function, the next call to gdImageColorAllocate for the same image will set new RGB values for that color index, changing the color of any pixels which have that index as a result. If multiple calls to gdImageColorDeallocate are made consecutively, the lowest-numbered index among them will be reused by the next gdImageColorAllocate call.
... inside a function ...
gdImagePtr im;
int red, blue;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Look for red in the color table. */
red = gdImageColorExact(im, 255, 0, 0);
/* If red is present... */
if (red != (-1)) {
	/* Deallocate it. */
	gdImageColorDeallocate(im, red);
	/* Allocate blue, reusing slot in table.
		Existing red pixels will change color. */
	blue = gdImageColorAllocate(im, 0, 0, 255);
}
/* ... Do something with the image, such as saving it to a file... */
/* Destroy it */
gdImageDestroy(im);
void gdImageColorTransparent(gdImagePtr im, int color) (FUNCTION)
gdImageColorTransparent sets the transparent color index for the specified image to the specified index. To indicate that there should be no transparent color, invoke gdImageColorTransparent with a color index of -1. Note that JPEG images do not support transparency, so this setting has no effect when writing JPEG images.

The color index used should be an index allocated by gdImageColorAllocate, whether explicitly invoked by your code or implicitly invoked by loading an image. In order to ensure that your image has a reasonable appearance when viewed by users who do not have transparent background capabilities (or when you are writing a JPEG-format file, which does not support transparency), be sure to give reasonable RGB values to the color you allocate for use as a transparent color, even though it will be transparent on systems that support PNG transparency.

... inside a function ...
gdImagePtr im;
int black;
FILE *in, *out;
in = fopen("photo.png", "rb");
im = gdImageCreateFromPng(in);
fclose(in);
/* Look for black in the color table and make it transparent. */
black = gdImageColorExact(im, 0, 0, 0);
/* If black is present... */
if (black != (-1)) {
	/* Make it transparent */
	gdImageColorTransparent(im, black);
}
/* Save the newly-transparent image back to the file */
out = fopen("photo.png", "wb");
gdImagePng(im, out);
fclose(out);
/* Destroy it */
gdImageDestroy(im);
void gdImageTrueColor(int red, int green, int blue) (MACRO)
gdImageTrueColor returns an RGBA color value for use when drawing on a truecolor image. Red, green, and blue are all in the range between 0 (off) and 255 (maximum). This macro should not be used with palette-based images. If you need to write code which is compatible with both palette-based and truecolor images, use gdImageColorResolve.
void gdImageTrueColorAlpha(int red, int green, int blue, int alpha) (MACRO)
gdImageTrueColorAlpha returns an RGBA color value for use when drawing on a truecolor image with alpha channel transparency. Red, green, and blue are all in the range between 0 (off) and 255 (maximum). Alpha is in the range between 0 (opaque) and 127 (fully transparent). This macro should not be used with palette-based images. If you need to write code which is compatible with both palette-based and truecolor images, use gdImageColorResolveAlpha.

Copying and resizing functions

void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h) (FUNCTION)
gdImageCopy is used to copy a rectangular portion of one image to another image. (For a way of stretching or shrinking the image in the process, see gdImageCopyResized.)

The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The w and h arguments specify the width and height of the region.

When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable.

Important note on copying between images: since different images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. gdImageCopy will attempt to find an identical RGB value in the destination image for each pixel in the copied portion of the source image by invoking gdImageColorExact. If such a value is not found, gdImageCopy will attempt to allocate colors as needed using gdImageColorAllocate. If both of these methods fail, gdImageCopy will invoke gdImageColorClosest to find the color in the destination image which most closely approximates the color of the pixel being copied.

... Inside a function ...
gdImagePtr im_in;
gdImagePtr im_out;
int x, y;
FILE *in;
FILE *out;
/* Load a small png to tile the larger one with */
in = fopen("small.png", "rb");
im_in = gdImageCreateFromPng(in);
fclose(in);
/* Make the output image four times as large on both axes */
im_out = gdImageCreate(im_in->sx * 4, im_in->sy * 4);
/* Now tile the larger image using the smaller one */
for (y = 0; (y < 4); y++) {
	for (x = 0; (x < 4); x++) {
		gdImageCopy(im_out, im_in,
			x * im_in->sx, y * im_in->sy,
			0, 0,
			im_in->sx, im_in->sy);
	}
}
out = fopen("tiled.png", "wb");
gdImagePng(im_out, out);
fclose(out);
gdImageDestroy(im_in);
gdImageDestroy(im_out);
void gdImageCopyResized(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH) (FUNCTION)
gdImageCopyResized is used to copy a rectangular portion of one image to another image. The X and Y dimensions of the original region and the destination region can vary, resulting in stretching or shrinking of the region as appropriate. (For a simpler version of this function which does not deal with resizing, see gdImageCopy.)

The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The dstW and dstH arguments specify the width and height of the destination region. The srcW and srcH arguments specify the width and height of the source region and can differ from the destination size, allowing a region to be scaled during the copying process.

When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable. If this presents a problem, create a scratch image in which to keep intermediate results.

Important note on copying between images: since images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. gdImageCopy will attempt to find an identical RGB value in the destination image for each pixel in the copied portion of the source image by invoking gdImageColorExact. If such a value is not found, gdImageCopy will attempt to allocate colors as needed using gdImageColorAllocate. If both of these methods fail, gdImageCopy will invoke gdImageColorClosest to find the color in the destination image which most closely approximates the color of the pixel being copied.

... Inside a function ...
gdImagePtr im_in;
gdImagePtr im_out;
int x, y;
FILE *in;
FILE *out;
/* Load a small png to expand in the larger one */
in = fopen("small.png", "rb");
im_in = gdImageCreateFromPng(in);
fclose(in);
/* Make the output image four times as large on both axes */
im_out = gdImageCreate(im_in->sx * 4, im_in->sy * 4);
/* Now copy the smaller image, but four times larger */
gdImageCopyResized(im_out, im_in, 0, 0, 0, 0,
	im_out->sx, im_out->sy,
	im_in->sx, im_in->sy);	
out = fopen("large.png", "wb");
gdImagePng(im_out, out);
fclose(out);
gdImageDestroy(im_in);
gdImageDestroy(im_out);
void gdImageCopyResampled(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH) (FUNCTION)
gdImageCopyResampled is used to copy a rectangular portion of one image to another image, smoothly interpolating pixel values so that, in particular, reducing the size of an image still retains a great deal of clarity. The X and Y dimensions of the original region and the destination region can vary, resulting in stretching or shrinking of the region as appropriate. (For a simpler version of this function which does not deal with resizing, see gdImageCopy. For a version which does not interpolate pixel values, see gdImageCopyResized.

Pixel values are only interpolated if the destination image is a truecolor image. Otherwise, gdImageCopyResized is automatically invoked.

The dst argument is the destination image to which the region will be copied. The src argument is the source image from which the region is copied. The dstX and dstY arguments specify the point in the destination image to which the region will be copied. The srcX and srcY arguments specify the upper left corner of the region in the source image. The dstW and dstH arguments specify the width and height of the destination region. The srcW and srcH arguments specify the width and height of the source region and can differ from the destination size, allowing a region to be scaled during the copying process.

When you copy a region from one location in an image to another location in the same image, gdImageCopy will perform as expected unless the regions overlap, in which case the result is unpredictable. If this presents a problem, create a scratch image in which to keep intermediate results.

Important note on copying between images: since images do not necessarily have the same color tables, pixels are not simply set to the same color index values to copy them. If the destination image is a palette image, gd will use the gdImageColorResolve function to determine the best color available.

... Inside a function ...
gdImagePtr im_in;
gdImagePtr im_out;
int x, y;
FILE *in;
FILE *out;
/* Load a large png to shrink in the smaller one */
in = fopen("large.png", "rb");
im_in = gdImageCreateFromPng(in);
fclose(in);
/* Make the output image four times as small on both axes. Use
	a true color image so that we can interpolate colors. */
im_out = gdImageCreateTrueColor(im_in->sx / 4, im_in->sy / 4);
/* Now copy the large image, but four times smaller */
gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0,
	im_out->sx, im_out->sy,
	im_in->sx, im_in->sy);	
out = fopen("large.png", "wb");
gdImagePng(im_out, out);
fclose(out);
gdImageDestroy(im_in);
gdImageDestroy(im_out);
void gdImageCopyMerge(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) (FUNCTION)
gdImageCopyMerge is almost identical to gdImageCopy, except that it 'merges' the two images by an amount specified in the last parameter. If the last parameter is 100, then it will function identically to gdImageCopy - the source image replaces the pixels in the destination.

If, however, the pct parameter is less than 100, then the two images are merged. With pct = 0, no action is taken.

This feature is most useful to 'highlight' sections of an image by merging a solid color with pct = 50:

... Inside a function ...
gdImageCopyMerge(im_out, im_in, 100, 200, 0, 0, 30, 50, 50);
void gdImageCopyMergeGray(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct) (FUNCTION)
gdImageCopyMergeGray is almost identical to gdImageCopyMerge, except that when merging images it preserves the hue of the source by converting the destination pixels to grey scale before the copy operation.
... Inside a function ...
gdImageCopyMergeGray(im_out, im_in, 100, 200, 0, 0, 30, 50, 50);
void gdImagePaletteCopy(gdImagePtr dst, gdImagePtr src) (FUNCTION)
Copies a palette from one image to another, attempting to match the colors in the target image to the colors in the source palette.

Miscellaneous Functions

int gdImageCompare(gdImagePtr im1, gdImagePtr im2) (FUNCTION)
gdImageCompare returns a bitmap indicating if the two images are different. The members of the bitmap are defined in gd.h, but the most important is GD_CMP_IMAGE, which indicated that the images will actually appear different when displayed. Other, less important, differences relate to pallette entries. Any difference in the transparent colour is assumed to make images display differently, even if the transparent colour is not used.
... Inside a function ...
cmpMask = gdImageCompare(im1, im2);
gdImageInterlace(gdImagePtr im, int interlace) (FUNCTION)
gdImageInterlace is used to determine whether an image should be stored in a linear fashion, in which lines will appear on the display from first to last, or in an interlaced fashion, in which the image will "fade in" over several passes. By default, images are not interlaced. (When writing JPEG images, interlacing implies generating progressive JPEG files, which are represented as a series of scans of increasing quality. Noninterlaced gd images result in regular [sequential] JPEG data streams.)

A nonzero value for the interlace argument turns on interlace; a zero value turns it off. Note that interlace has no effect on other functions, and has no meaning unless you save the image in PNG or JPEG format; the gd and xbm formats do not support interlace.

When a PNG is loaded with gdImageCreateFromPng or a JPEG is loaded with gdImageCreateFromJpeg, interlace will be set according to the setting in the PNG or JPEG file.

Note that many PNG and JPEG viewers and web browsers do not support interlace or the incremental display of progressive JPEGs. However, the interlaced PNG or progressive JPEG should still display; it will simply appear all at once, just as other images do.

gdImagePtr im;
FILE *out;
/* ... Create or load the image... */

/* Now turn on interlace */
gdImageInterlace(im, 1);
/* And open an output file */
out = fopen("test.png", "wb");
/* And save the image  -- could also use gdImageJpeg */
gdImagePng(im, out);
fclose(out);
gdImageDestroy(im);
gdFree(void *ptr) (FUNCTION)
gdFree provides a reliable way to free memory allocated by functions such as gdImagePngPtr which return blocks of memory. Use of this function guarantees that the version of free() that is ultimately called will be intended for use with the version of malloc() that originally allocated the block.

Constants

gdBrushed (CONSTANT)
Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdBrushed is used as the color, the brush image set with gdImageSetBrush is drawn in place of each pixel of the line (the brush is usually larger than one pixel, creating the effect of a wide paintbrush). See also gdStyledBrushed for a way to draw broken lines with a series of distinct copies of an image.
gdMaxColors(CONSTANT)
The constant 256. This is the maximum number of colors in a PNG file according to the PNG standard, and is also the maximum number of colors in a gd image.
gdStyled (CONSTANT)
Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdStyled is used as the color, the colors of the pixels are drawn successively from the style that has been set with gdImageSetStyle. If the color of a pixel is equal to gdTransparent, that pixel is not altered. (This mechanism is completely unrelated to the "transparent color" of the image itself; see gdImageColorTransparent gdImageColorTransparent for that mechanism.) See also gdStyledBrushed.
gdStyledBrushed (CONSTANT)
Used in place of a color when invoking a line-drawing function such as gdImageLine or gdImageRectangle. When gdStyledBrushed is used as the color, the brush image set with gdImageSetBrush is drawn at each pixel of the line, providing that the style set with gdImageSetStyle contains a nonzero value (OR gdTransparent, which does not equal zero but is supported for consistency) for the current pixel. (Pixels are drawn successively from the style as the line is drawn, returning to the beginning when the available pixels in the style are exhausted.) Note that this differs from the behavior of gdStyled, in which the values in the style are used as actual pixel colors, except for gdTransparent.
gdDashSize (CONSTANT)
The length of a dash in a dashed line. Defined to be 4 for backwards compatibility with programs that use gdImageDashedLine. New programs should use gdImageSetStyle and call the standard gdImageLine function with the special "color" gdStyled or gdStyledBrushed.
gdTiled (CONSTANT)
Used in place of a normal color in gdImageFilledRectangle, gdImageFilledPolygon, gdImageFill, and gdImageFillToBorder. gdTiled selects a pixel from the tile image set with gdImageSetTile in such a way as to ensure that the filled area will be tiled with copies of the tile image. See the discussions of gdImageFill and gdImageFillToBorder for special restrictions regarding those functions.
gdTransparent (CONSTANT)
Used in place of a normal color in a style to be set with gdImageSetStyle. gdTransparent is not the transparent color index of the image; for that functionality please see gdImageColorTransparent.

About the additional .gd image file format

In addition to reading and writing the PNG and JPEG formats and reading the X Bitmap format, gd has the capability to read and write its own ".gd" format. This format is not intended for general purpose use and should never be used to distribute images. It is not a compressed format. Its purpose is solely to allow very fast loading of images your program needs often in order to build other images for output. If you are experiencing performance problems when loading large, fixed PNG images your program needs to produce its output images, you may wish to examine the functions gdImageCreateFromGd and gdImageGd, which read and write .gd format images.

The program "pngtogd.c" is provided as a simple way of converting .png files to .gd format. I emphasize again that you will not need to use this format unless you have a need for high-speed loading of a few frequently-used images in your program.

About the .gd2 image file format

In addition to reading and writing the PNG format and reading the X Bitmap format, gd has the capability to read and write its own ".gd2" format. This format is not intended for general purpose use and should never be used to distribute images. It is a compressed format allowing pseudo-random access to large image files. Its purpose is solely to allow very fast loading of parts of images If you are experiencing performance problems when loading large, fixed PNG or JPEG images your program needs to produce its output images, you may wish to examine the functions gdImageCreateFromGd2, gdImageCreateFromGd2Part and gdImageGd2, which read and write .gd2 format images.

The program "pngtogd2.c" is provided as a simple way of converting .png files to .gd2 format.

About the gdIOCtx structure

Version 1.5 of GD added a new style of I/O based on an IOCtx structure (the most up-to-date version can be found in gd_io.h):
typedef struct gdIOCtx {
        int     (*getC)(struct gdIOCtx*);
        int     (*getBuf)(struct gdIOCtx*, void*, int);

        void     (*putC)(struct gdIOCtx*, int);
        int     (*putBuf)(struct gdIOCtx*, const void*, int);

        int     (*seek)(struct gdIOCtx*, const int);
        long    (*tell)(struct gdIOCtx*);

        void    (*free)(struct gdIOCtx*);

} gdIOCtx;
Most functions that accepted files in previous versions now also have a counterpart that accepts an I/O context. These functions have a 'Ctx' suffix.

The Ctx routines use the function pointers in the I/O context pointed to by gdIOCtx to perform all I/O. Examples of how to implement an I/O context can be found in io_file.c (which provides a wrapper for file routines), and io_dp.c (which implements in-memory storage).

It is not necessary to implement all functions in an I/O context if you know that it will only be used in limited cirsumstances. At the time of writing (Version 1.6.1, July 1999), the known requirements are:

All Must have 'free',
Anything that reads from the contextMust have 'getC' and 'getBuf',
Anything that writes to the contextMust have 'putC' and 'putBuf'.
If gdCreateFromGd2Part is calledMust also have 'seek' and 'tell'.
If gdImageGd2 is calledMust also have 'seek' and 'tell'.

Please tell us you're using gd!

When you contact us and let us know you are using gd, you help us justify the time spent in maintaining and improving it. So please let us know. If the results are publicly visible on the web, a URL is a wonderful thing to receive, but if it's not a publicly visible project, a simple note is just as welcome.

If you have problems

If you have any difficulties with gd, feel free to contact the author, Thomas Boutell. Problems relating to the gd2 format should be addressed to Philip Warner.

Be sure to read this manual carefully first.

Alphabetical quick index

gdBrushed | gdDashSize | gdFont | gdFontPtr | gdFree | gdImage | gdImageAlphaBlending | gdImageArc | gdImageBlue | gdImageBoundsSafe | gdImageChar | gdImageCharUp | gdImageColorAllocate | gdImageColorAllocateAlpha | gdImageColorClosest | gdImageColorClosestAlpha | gdImageColorDeallocate | gdImageColorExact | gdImageColorExactAlpha | gdImageColorResolve | gdImageColorResolveAlpha | gdImageColorTransparent | gdImageCopy | gdImageCopyMerge | gdImageMergeGray | gdImageCopyResized | gdImageCopyResampled | gdImageCreate | gdImageCreatePalette | gdImageCreateTrueColor | gdImageCreateFromGd | gdImageCreateFromGd2 | gdImageCreateFromGd2Part | gdImageCreateFromJpeg | gdImageCreateFromPng | gdImageCreateFromPngSource | gdImageCreateFromXbm | gdImageCreateFromXpm | gdImageDashedLine | gdImageDestroy | gdImageFill | gdImageFilledArc | gdImageFilledEllipse | gdImageFillToBorder | gdImageFilledRectangle | gdImageGd | gdImageGd2 | gdImageGetInterlaced | gdImageGetPixel | gdImageGetTransparent | gdImageGreen | gdImageInterlace | gdImageJpeg | gdImageLine | gdImageFilledPolygon | gdImagePaletteCopy | gdImagePng | gdImagePngToSink | gdImagePolygon | gdImagePtr | gdImageWBMP | gdImageRectangle | gdImageRed | gdImageSetBrush | gdImageSetPixel | gdImageSetStyle | gdImageSetTile | gdImageString | gdImageString16 | gdImageStringFT | gdImageStringTTF | gdImageStringUp | gdImageStringUp16 | gdImageWBMP | gdMaxColors | gdPoint | gdStyled | gdStyledBrushed | gdTiled | gdTransparent

Boutell.Com, Inc. libwmf-0.2.8.4/doc/index.html0000644000077100007710000000730207335754632015265 0ustar fjffjf00000000000000 libwmf: Index to Documentation

libwmf

Index to Documentation

Frequently Asked Questions

  1. Fonts
    1. How come there are only 13 fonts?
    2. So, how do I add more fonts?
    3. I don't understand XML. Isn't there an easy way to do this?
    4. What types of font are supported?

  1. Fonts
    1. How come there are only 13 fonts?

      Postscript has 13 standard fonts (or only four, depending on your perspective): Helvetica (optionally bold and/or italic), Times (optionally bold and/or italic), Courier (optionally bold and/or italic), and Symbol. The decision was taken to support these 13 fonts for all outputs from libwmf2, but also to provide mechanisms for adding other fonts.

    2. So, how do I add more fonts?

      RedHat Linux systems, and probably other RPM-based distributions as well, have a `fontmap' file in /usr/share/fonts which lists a large number fonts. libwmf has a mechanism for reading files that have this XML format. In fact, libwmf looks for two such files, a system fontmap and a non-system (or `xtra') fontmap, but only if asked to!

      If you use wmf2x, for example, with the command line option --wmf-sys-fonts then libwmf will search for fonts in the system fontmap file. Similarly, if you specify the command line option --wmf-xtra-fonts then libwmf will search for fonts in the non-system fontmap file. The default locations of these files is specified at compilation time, but can also be specified at run time through the use of the command line options --wmf-sys-fontmap=fontmap and --wmf-xtra-fontmap=fontmap.

      Warning:If you use non-system fonts with wmf2eps, ghostscript (or whatever postscript interpreter you use) may not be able to find all the fonts; the problem is even worse if you want other people to be able to view the image, because only the 13 standard fonts are guaranteed to be supported.

    3. I don't understand XML. Isn't there an easy way to do this?

      There is a utility called libwmf-fontmap that hunts through directories for fonts and creates a custom fontmap file. Just type:

      libwmf-fontmap --map=fontmap directory1 directory2 ...

    4. What types of font are supported?

      libwmf uses freetype (2) for loading fonts and therefore supports all fonts that freetype knows, this includes postscript fonts (font.afm & font.pfa pairs or font.afm & font.pfb pairs) and true-type fonts (font.ttf) and many others.

libwmf-0.2.8.4/doc/tutapi.html0000644000077100007710000005561707301470216015462 0ustar fjffjf00000000000000 libwmf-0.2.0 Tutorial 1: The API

libwmf-0.2.0 Tutorial 1: The API

Contents

Introduction

The figure below illustrates the tripartite division of application, interpreter, and device layer. The internal workings of each of the three is irrelevant; all that matters is the three interfaces which are separate. The core of libwmf is the interpreter, and as such only the interfaces between (a) the interpreter and the application - the API - and (b) the interpreter and the device layer - the IPA - are defined. Applications that wish to implement their own new device layer are free therefore to define whatever interface is suitable.

libwmf includes two device layers: eps for conversion to EPS (Encapsulated Postscript) or PS (Postscript); and gd for conversion to PNG or JPEG image formats. Included with libwmf are converters for these: wmf2eps and wmf2gd respectively. The source-code for these is an excellent place to see how to use the various features of the API and device-layer interfaces.

Header Files

All libwmf header files are now in a libwmf subdirectory. In general you will need to include two. Unless you are writing a new device layer, which will be discussed later, you should include only libwmf/api.h and the header for whichever device layer you are interested in, for example:

#include <libwmf/api.h>
#include <libwmf/gd.h>

The gd device layer uses the GD library, included with libwmf, to output images in PNG (or possibly in JPEG) format. Alternatively, if you wish the output to be in PS or EPS format, you would include:

#include <libwmf/api.h>
#include <libwmf/eps.h>

Creating The API

For each metafile you wish to process and convert to a given image type, you must create an instance of the API. This can be sophisticated or simple. In its simplest form, the only thing that needs to be specified is which device layer you wish to use. For example, to use GD:

	wmfAPI_Options options;
	wmfAPI* API;

	wmf_error_t error;

	unsigned long flags;

	/* */

	flags = WMF_OPT_FUNCTION;

	options.function = wmf_gd_function;

	/* Other Options */

	error = wmf_api_create (&API,flags,&options);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

	/* */

The library performs all memory allocation with respect to the API, and destroying the instance will free up all associated memory:

	error = wmf_api_destroy (API);

There are a number of different options which can be used when creating the API. The structure of wmfAPI_Options is:

typedef struct _wmfAPI_Options wmfAPI_Options;

struct _wmfAPI_Options
{	void* context;

	void* (*malloc)  (void* context,size_t size);
	void* (*realloc) (void* context,void* mem,size_t size);
	void  (*free)    (void* context,void* mem);

	int    argc;
	char** argv;

	char** fontdirs; /* NULL-terminated list of directories to search for font files */

	struct
	{	wmfFontMap* wmf; /* {0,*}-terminated list: wmf-font-name -> ps-font-name */
		wmfMapping* sub; /* {0,*}-terminated list: wmf-font-name substring equiv */
		wmfMapping* ps;  /* {0,*}-terminated list: ps-font-name -> pfb-file-name */
	} font;

	char* sys_fontmap_file;
	char* xtra_fontmap_file;

	void (*function) (wmfAPI*);

	char*  module;
	char** dirs;

	FILE* debug_out;
	FILE* error_out;
};
  • WMF_OPT_ALLOC
    If you wish to provide your own memory allocation routines for libwmf to use instead of malloc, realloc and free, these can be specified:
    	flags |= WMF_OPT_ALLOC;
    
    	options.context = my_memory_manager_data;
    	options.malloc  = my_malloc;
    	options.realloc = my_realloc;
    	options.free    = my_free;
    
  • WMF_OPT_ARGS
    libwmf can be allowed to check for certain command line arguments:
      --wmf-ignore-nonfatal     ignore any non-critical errors or unsupported features
      --wmf-error=no            suppress error reports
      --wmf-debug=no            suppress debug reports
      --wmf-diagnostics         emit diagnostic information (for analysis of metafiles)
      --wmf-fontdir=<path>      add <path> to list of directories searched for fonts
      --wmf-sys-fonts           use system fonts, if any found
      --wmf-sys-fontmap=<file>  use system xml-fontmap file <file> (implies --wmf-sys-fonts)
      --wmf-xtra-fonts          use non-system fonts, if any found
      --wmf-xtra-fontmap=<file> use non-system xml-fontmap file <file> (implies --wmf-xtra-fonts)
    
    where the command line is specified by:
    int main (int argc,char** argv)
    {	/* */
    
    	flags |= WMF_OPT_ARGS;
    
    	options.argc = argc;
    	options.argv = argv;
    
  • WMF_OPT_FONTDIRS
    A NULL-terminated list of directories to be searched for fonts can be specified by:
    	char* dirs[3] = { "/usr/share/fonts", "/usr/local/share/fonts", NULL };
    
    	/* */
    
    	flags |= WMF_OPT_FONTDIRS;
    
    	options.fontdirs = dirs;
    
  • WMF_OPT_FONTMAP [UNTESTED]
    This is a system for specifying font mappings; see section on fonts.
  • WMF_OPT_SYS_FONTS
    Use any system fonts found, not just standard 13.
  • WMF_OPT_SYS_FONTMAP [UNTESTED]
    Use specified system XML fontmap file:
    	flags |= WMF_OPT_SYS_FONTS;
    	flags |= WMF_OPT_SYS_FONTMAP;
    
    	options.sys_fontmap_file = "/usr/local/share/fonts/fontmap";
    
  • WMF_OPT_XTRA_FONTS
    Use any system fonts found, not just standard 13.
  • WMF_OPT_XTRA_FONTMAP [UNTESTED]
    Use specified non-system XML fontmap file:
    	flags |= WMF_OPT_XTRA_FONTS;
    	flags |= WMF_OPT_XTRA_FONTMAP;
    
    	options.xtra_fontmap_file = "/usr/local/share/libwmf/fonts/fontmap";
    
  • WMF_OPT_FUNCTION
    This is how to initialize a device-layer with a supplied function. (Currently this is the only way to initialize a device layer since modules are not yet implemented.) The function is device-specific. See above.
  • WMF_OPT_MODULE [UNIMPLEMENTED]
    initialize device-layer with specified module
  • WMF_OPT_MODULE_DIRS [UNIMPLEMENTED]
    check for module also in specified directories
  • WMF_OPT_IGNORE_NONFATAL [HIGHLY RECOMMENDED]
    Ignore (some) non-fatal errors, equivalent to --wmf-ignore-nonfatal
    	flags |= WMF_OPT_IGNORE_NONFATAL;
    
  • WMF_OPT_NO_ERROR
    Suppress all error reports, equivalent to --wmf-error=no
    	flags |= WMF_OPT_NO_ERROR;
    
  • WMF_OPT_NO_DEBUG
    Suppress all debug reports, equivalent to --wmf-debug=no
    	flags |= WMF_OPT_NO_DEBUG;
    
  • WMF_OPT_LOG_ERROR [UNTESTED]
    Divert error reports to specified stream:
    	FILE* e_out;
    
    	/* */
    
    	e_out = fopen ("error.log","w");
    	if (e_out)
    	{	flags |= WMF_OPT_LOG_ERROR;
    
    		options.error_out = e_out;
    	}
    
  • WMF_OPT_LOG_DEBUG [UNTESTED]
    Divert debug reports to specified stream:
    	FILE* d_out;
    
    	/* */
    
    	d_out = fopen ("debug.log","w");
    	if (d_out)
    	{	flags |= WMF_OPT_LOG_DEBUG;
    
    		options.debug_out = d_out;
    	}
    

Acknowledging The Device Layer

In addition to creating the API, wmf_api_create sets up the link with the device layer. Device layer data can be accessed through API->device_data, but the implementation will probably provide a convenient interface. For example, with GD:

	wmfAPI_Options options;
	wmfAPI* API;

	wmf_error_t error;

	wmf_gd_t* ddata;

	unsigned long flags;

	/* */

	flags = WMF_OPT_FUNCTION | WMF_OPT_IGNORE_NONFATAL;

	options.function = wmf_gd_function;

	/* Other Options */

	error = wmf_api_create (&API,flags,&options);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

	ddata = WMF_GD_GetData (API);

	if ((ddata->flags & WMF_GD_SUPPORTS_JPEG) == 0)
	{	fprintf (stderr,"libwmf does not support JPEG conversion!\n");

		wmf_api_destroy (API);

		/* */
	}

	/* */

At this point there is little need to acknowledge the device layer, except if (as in the above example) the device layer indicates possible restrictions.

Scanning The Metafile

Before playing the metafile (i.e., rendering the image) it is necessary first to open the metafile and second to scan it. To open a metafile that is a file on disc is simple:

	error = wmf_file_open (API,"file.wmf");
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

The file needs to be closed later by calling:

	error = wmf_file_close (API);

Alternatively, if the metafile is preloaded in memory, it can be opened with:

	error = wmf_mem_open (API,(unsigned char*) buffer,(long) buffer_length);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

and closed later by calling:

	error = wmf_mem_close (API);

A third, more generic method is available as well, but requires more work. For example, to `open' an already-open file stream:

int  my_wmfRead (void*);
int  my_wmfSeek (void*,long);
long my_wmfTell (void*);

/* User redefinable functions for input-stream access:
 * wmfRead: returns unsigned char cast to int, or EOF
 */
int my_wmfRead (void* context)
{	return (fgetc ((FILE*) context));
}

/* User redefinable functions for input-stream access:
 * wmfSeek: returns (-1) on error, else 0
 */
int my_wmfSeek (void* context,long position)
{	return (fseek ((FILE*) context,position,SEEK_SET));
}

/* User redefinable functions for input-stream access:
 * wmfTell: returns (-1) on error, else pos
 */
long my_wmfTell (void* context)
{	return (ftell ((FILE*) context));
}

	/* */

	error = wmf_bbuf_input (API,my_wmfRead,my_wmfSeek,my_wmfTell,(void*) in);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

Once the metafile has been opened, it must be scanned. Scanning parses the metafile without any interaction with the device layer, and its purpose is (a) determine whether it is a valid metafile, and (b) estimate the dimensions of the metafile.

	wmfD_Rect bbox;

	/* */

	error = wmf_scan (API,0,&bbox);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

A metafile needs to be scanned, but only once. wmf_scan will reject any further attempts to scan; wmf_play (see below) will fail unless the metafile has been scanned.

Setting Up The Device Layer

Metafiles are basically a vector-graphic format and as such they can be scaled to any size and aspect ratio. The interpreter describes the metafile in a scaleable manner to the device layer, and the device layer is free to scale the metafile in any manner it chooses. As such, the device layer will almost certainly require (a) the dimensions of the metafile found by wmf_scan (see above), and (b) the image width and height desired by the application.

wmfD_Rect describes a bounding box in the interpreter's device coordinates, and is defined as:

typedef struct _wmfD_Coord wmfD_Coord;
typedef struct _wmfD_Rect  wmfD_Rect;

struct _wmfD_Coord
{	float x;
	float y;
};

struct _wmfD_Rect
{	wmfD_Coord TL;
	wmfD_Coord BR;
};

and so an application can determine the image's aspect ratio by:

	float aspect_ratio;

	/* */

	aspect_ratio = (bbox.BR.y - bbox.TL.y) / (bbox.BR.x - bbox.TL.x);

Note: By definition bbox.BR.y > bbox.TL.y and bbox.BR.x > bbox.TL.x

Putting this all together, and again using GD as an example:

	wmfAPI_Options options;
	wmfAPI* API;

	wmfD_Rect bbox;

	wmf_error_t error;

	wmf_gd_t* ddata;

	unsigned long flags;

	FILE* out;

	/* */

	flags = WMF_OPT_FUNCTION | WMF_OPT_IGNORE_NONFATAL;

	options.function = wmf_gd_function;

	/* Other Options */

	error = wmf_api_create (&API,flags,&options);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

	ddata = WMF_GD_GetData (API);

	if ((ddata->flags & WMF_GD_SUPPORTS_JPEG) == 0)
	{	fprintf (stderr,"libwmf does not support JPEG conversion!\n");

		wmf_api_destroy (API);

		/* */
	}

	error = wmf_file_open (API,"file.wmf");
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

	error = wmf_scan (API,0,&bbox);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

	out = fopen ("file.jpeg","w");
	if (out == 0)
	{	wmf_api_destroy (API);

		/* */
	}

	ddata->type = wmf_gd_jpeg;

	ddata->flags |= WMF_GD_OUTPUT_FILE;
	ddata->file = out;

	ddata->bbox = bbox;

	ddata->width  = (unsigned int) ceil (ddata->bbox.BR.x - ddata->bbox.TL.x);
	ddata->height = (unsigned int) ceil (ddata->bbox.BR.y - ddata->bbox.TL.y);

The above example doesn't do anything intelligent with the size of the image. The converter wmf2gd sets a maximum size and scales the image accordingly.

Playing The Metafile

The final step is simply to play the metafile:

	error = wmf_play (API,0,0);
	if (error != wmf_E_None)
	{	wmf_api_destroy (API);

		/* */
	}

This can be done any number of times, with varying device layer settings if desired.

Fonts & libwmf

There are a number of issues with fonts and libwmf to complicate matters: the first is the need to translate font names specified into font names recognized by libwmf; the second is to find the corresponding font files; a third is to work out what encoding (char. set) to use. Described below is libwmf's native mechanism for dealing with these issues. While versatile, unfortunately it requires significant effort on the part of an application that seeks to extend the limited font mapping provided by default. A second (experimental and optional) mechanism is provided also, and this reads an XML file containing font information (file locations and font names); on RedHat Linux systems this file is /usr/share/fonts/fontmap. No doubt this is an area that will see considerable future development.

Chances are, the metafile will require fonts that are not available to libwmf, and there must be a mechanism, therefore, for translating metafile fontnames into usable fonts. As noted above, the wmfAPI_Options structure passed to wmf_api_create has the following entries:

typedef struct _wmfAPI_Options wmfAPI_Options;

struct _wmfAPI_Options
{	/* */

	struct
	{	wmfFontMap* wmf; /* {0,*}-terminated list: wmf-font-name -> ps-font-name */
		wmfMapping* sub; /* {0,*}-terminated list: wmf-font-name substring equiv */
		wmfMapping* ps;  /* {0,*}-terminated list: ps-font-name -> pfb-file-name */
	} font;

	/* */
}

The two mapping types are defined:

typedef struct _wmfMapping             wmfMapping;
typedef struct _wmfFontMap             wmfFontMap;

struct _wmfMapping
{	char* name;
	char* mapping;

	FT_Encoding encoding;
};

struct _wmfFontMap
{	char* name;       /* wmf font name */

	char* normal;     /* postscript font names */
	char* italic;
	char* bold;
	char* bolditalic;
};

Internally libwmf has the following default definitions:

/* postscript (standard 13) font name mapping to type 1 font file
 */
static wmfMapping PSFontMap[13] = {
	{	"Courier",		"n022003l.pfb",	ft_encoding_adobe_standard	},
	{	"Courier-Oblique",	"n022023l.pfb",	ft_encoding_adobe_standard	},
	{	"Courier-Bold",		"n022004l.pfb",	ft_encoding_adobe_standard	},
	{	"Courier-BoldOblique",	"n022024l.pfb",	ft_encoding_adobe_standard	},
	{	"Helvetica",		"n019003l.pfb",	ft_encoding_adobe_standard	},
	{	"Helvetica-Oblique",	"n019023l.pfb",	ft_encoding_adobe_standard	},
	{	"Helvetica-Bold",	"n019004l.pfb",	ft_encoding_adobe_standard	},
	{	"Helvetica-BoldOblique","n019024l.pfb",	ft_encoding_adobe_standard	},
	{	"Times-Roman",		"n021003l.pfb",	ft_encoding_adobe_standard	},
	{	"Times-Italic",		"n021023l.pfb",	ft_encoding_adobe_standard	},
	{	"Times-Bold",		"n021004l.pfb",	ft_encoding_adobe_standard	},
	{	"Times-BoldItalic",	"n021024l.pfb",	ft_encoding_adobe_standard	},
	{	"Symbol",		"s050000l.pfb",	ft_encoding_adobe_custom	}};

/* exact WMF font name to postscript (standard 13) equivalent...
 * well, yeah, I know. :-(
 */
static wmfFontMap WMFFontMap[] = {
{ "Courier",		"Courier",     "Courier-Oblique",   "Courier-Bold",   "Courier-BoldOblique"   },
{ "Helvetica",		"Helvetica",   "Helvetica-Oblique", "Helvetica-Bold", "Helvetica-BoldOblique" },
{ "Modern",		"Courier",     "Courier-Oblique",   "Courier-Bold",   "Courier-BoldOblique"   },
{ "Monotype Corsiva",	"Courier",     "Courier-Oblique",   "Courier-Bold",   "Courier-BoldOblique"   },
{ "News Gothic",	"Helvetica",   "Helvetica-Oblique", "Helvetica-Bold", "Helvetica-BoldOblique" },
{ "Symbol",		"Symbol",      "Symbol",            "Symbol",         "Symbol"                },
{ "System",		"Courier",     "Courier-Oblique",   "Courier-Bold",   "Courier-BoldOblique"   },
{ "Times",		"Times-Roman", "Times-Italic",      "Times-Bold",     "Times-BoldItalic"      }};

/* Sub-string match if not in the above list;
 */
static wmfMapping SubFontMap[] = {
	{	"Arial",		"Helvetica"	},
	{	"Courier",		"Courier"	},
	{	"Fixed",		"Courier"	},
	{	"Helvetica",		"Helvetica"	},
	{	"Sans",			"Helvetica"	},
	{	"Sym",			"Symbol"	},
	{	"Terminal",		"Courier"	},
	{	"Times",		"Times"		},
	{	"Wingdings",		"Symbol"	}};

/* If all else fails, assume Times
 */
static char* DefaultFontMapping = "Times";

Bundled with libwmf are the thirteen standard ghostscript fonts. Unless the application specifies other fonts, libwmf will attempt to map the metafile's font name to one of these default fonts.

First an exact match is sought with the first argument of each font in WMFFontMap. For example, "News Gothic" would be an exact match; "Arial" would not. If there is no exact match, then a substring search is performed against the first argument of each font in SubFontMap. For example, this time "Arial" would match; "Zapf Chancery" would not. If there is still no exact match then "Times" is assumed.

Once a font name is found, this is converted to an equivalent name, assumed to be the postscript font name, using WMFFontMap. And finally the equivalent name is searched for in PSFontMap. For example, "Zapf Chancery" in italics would be mapped to "Times" in italics, then to "Times-Italic", and finally to "n021023l.pfb".

libwmf searches through the list of font directories for this file and loads it using freetype (2) with the encoding specified by the third argument of the PSFontMap entry.

These three lists can be prepended by using the WMF_OPT_FONTMAP option. The font files can be any format supported by freetype (2).

After the metafile has been scanned, API->fonts is a NULL-terminated list of (postscript) font names corresponding to the fonts selected by the interpreter.

Other API Functions

libwmf performs all memory allocation with respect to the API. When the API is destroyed, all associated memory is freed. The routines for allocating and freeing such memory are:

extern void* wmf_malloc (wmfAPI*,size_t);
extern void* wmf_calloc (wmfAPI*,size_t,size_t);
extern void* wmf_realloc (wmfAPI*,void*,size_t);
extern void  wmf_free (wmfAPI*,void*);

These behave similarly to the standard malloc, etc. Similarly:

extern char* wmf_strdup (wmfAPI*,char*);

is an internal implementation of strdup which allocates the copied string w.r.t. the API. On a related note,

extern char* wmf_strstr (const char*,const char*);

is an internal implementation of strstr and may be just a wrapper for it. This is a special case of a function which does not refer to the API.

Messages can be added to the error and debug streams using:

extern void wmf_error (wmfAPI* API,char* srcfilename,int linenumber,char* message);
extern void wmf_debug (wmfAPI* API,char* srcfilename,int linenumber,char* message);
extern void wmf_assert (wmfAPI* API,char* srcfilename,int linenumber);

but these functions should be used via the macros WMF_ERROR(API,"mesg"), WMF_DEBUG(API,"mesg"), and WMF_ASSERT(API,<expr>).

Finally, a call-back function can be set. This is called after each metafile record with an estimate of the proportion of the metafile read; if the return value is non-zero then the player will exit prematurely.

typedef int (*wmfStatus) (void* context,float proportion);

extern void wmf_status_function (wmfAPI* API,void* context,wmfStatus function);

For example, the following status function is used by wmf2gd:

int wmf2gd_status (void* context,float p)
{	int percent;

	percent = (int) (p * 100);

	if (percent <  0) percent =  0;
	if (percent > 99) percent = 99;

	fprintf (stderr,"%2d%%\b\b\b",percent);
}

Although there are other functions in the API, their use is not recommended.


Copyright 2001 wvWare/libwmf http://www.wvware.com/
libwmf-0.2.8.4/doc/tutipa.html0000644000077100007710000007773107277704326015501 0ustar fjffjf00000000000000 libwmf-0.2.0 Tutorial 2: The IPA

libwmf-0.2.0 Tutorial 2: The IPA

Contents

Introduction

This is a combination of tutorial and reference guide for writing new device layers for libwmf.

Since no two graphics interfaces are identical, the task of the IPA (the interface between the interpreter and the device layer) is to simplify the task of translating the metafile drawing commands. (It cannot be denied that there is still considerable room for improvement.)

When writing a new device layer you will need to include the following headers:

#include <libwmf/ipa.h>
#include <libwmf/defs.h>

The former includes the API declarations as well as the IPA declarations, while the latter defines metafile constants.

Types

wmfRGB | wmfBMP | wmfBrush | wmfPen | wmfFont | wmfDC | wmfFlood_t | wmfDrawPixel_t | wmfDrawArc_t | wmfDrawLine_t | wmfPolyLine_t | wmfDrawRectangle_t | wmfPolyRectangle_t | wmfBMP_Read_t | wmfBMP_Draw_t | wmfROP_Draw_t | wmfDrawText_t | wmfUserData_t | wmfCharDrawer
  • wmfRGB
    typedef struct _wmfRGB wmfRGB;
    
    struct _wmfRGB
    {	unsigned char r;
    	unsigned char g;
    	unsigned char b;
    };
    

    wmfRGB describes a color, with r = g = b = 255 corresponding to white and r = g = b = 0 corresponding to black.

  • wmfBMP
    typedef struct _wmfBMP wmfBMP;
    
    struct _wmfBMP
    {	U16 width;
    	U16 height;
    
    	void* data;
    };
    

    Container for a bitmap, of dimensions width and height. If non-zero, data is a pointer to an internal representation of the bitmap. The interpreter does not reference data and will not attempt to draw a bitmap if data is zero; however, a bitmap brush pattern may be set even though data is zero. (data=0 indicates either that the device layer has no support for bitmaps or that the bitmap is corrupt or unreadable.)

  • wmfBrush
    typedef struct _wmfBrush wmfBrush;
    
    struct _wmfBrush
    {	U16 lbStyle;
    	U16 lbHatch;
    
    	wmfRGB lbColor;
    	wmfBMP bmp;
    };
    

    wmfBrush is one element of the current drawing context. lbStyle is one of the following:

    /* Brush Styles */
    #define BS_SOLID            0
    #define BS_NULL             1
    #define BS_HOLLOW     BS_NULL
    #define BS_HATCHED          2
    #define BS_PATTERN          3
    #define BS_INDEXED          4
    #define BS_DIBPATTERN       5
    #define BS_DIBPATTERNPT     6
    #define BS_PATTERN8X8       7
    #define BS_DIBPATTERN8X8    8
    

    where BS_NULL indicates that no brush is set. If lbStyle=BS_HATCHED then the brush has the pattern, specified by lbHatch which is one of:

    /* Hatch Styles */
    #define HS_HORIZONTAL       0       /* ----- */
    #define HS_VERTICAL         1       /* ||||| */
    #define HS_FDIAGONAL        2       /* \\\\\ */
    #define HS_BDIAGONAL        3       /* ///// */
    #define HS_CROSS            4       /* +++++ */
    #define HS_DIAGCROSS        5       /* xxxxx */
    

    If lbStyle=BS_HATCHED or lbStyle=BS_SOLID then the foreground color of the brush is lbColor. Otherwise, if the brush is a bitmap, ensure that bmp.data is non-zero.

    The following macros should be used to retrieve the above info.:

    #include 
    
    /* WMF_BRUSH_STYLE(wmfBrush* B) -> (U16) brush style
     * WMF_BRUSH_HATCH(wmfBrush* B) -> (U16) brush hatch style
     * 
     * WMF_BRUSH_COLOR(wmfBrush* B) -> (wmfRGB*) brush color
     * 
     * WMF_BRUSH_BITMAP(wmfBrush* B) -> (wmfBMP*) brush bitmap
     */
    #define WMF_BRUSH_STYLE(B)  ((B)->lbStyle)
    #define WMF_BRUSH_HATCH(B)  ((B)->lbHatch)
    
    #define WMF_BRUSH_COLOR(B)  (&((B)->lbColor))
    
    #define WMF_BRUSH_BITMAP(B) (&((B)->bmp))
    
  • wmfPen
    typedef struct _wmfPen wmfPen;
    
    struct _wmfPen
    {	U16 lopnStyle;
    
    	double width;
    	double height;
    
    	wmfRGB lopnColor;
    };
    

    wmfPen is one element of the current drawing context. The nib has dimensions width and height and color lopnColor. lopnStyle contains style information on the line itself, on the ends, on the joins, and on the type:

    #define PS_STYLE_MASK       0x0000000F
    #define PS_ENDCAP_MASK      0x00000F00
    #define PS_JOIN_MASK        0x0000F000
    #define PS_TYPE_MASK        0x000F0000
    

    lopnStyle & PS_STYLE_MASK is one of:

    #define PS_SOLID            0
    #define PS_DASH             1       /* -------  */
    #define PS_DOT              2       /* .......  */
    #define PS_DASHDOT          3       /* _._._._  */
    #define PS_DASHDOTDOT       4       /* _.._.._  */
    #define PS_NULL             5
    #define PS_INSIDEFRAME      6
    #define PS_USERSTYLE        7
    #define PS_ALTERNATE        8
    

    where PS_NULL indicates that no pen has been set. lopnStyle & PS_ENDCAP_MASK is one of:

    #define PS_ENDCAP_ROUND     0x00000000
    #define PS_ENDCAP_SQUARE    0x00000100
    #define PS_ENDCAP_FLAT      0x00000200
    

    and lopnStyle & PS_JOIN_MASK is one of:

    #define PS_JOIN_ROUND       0x00000000
    #define PS_JOIN_BEVEL       0x00001000
    #define PS_JOIN_MITER       0x00002000
    

    Finally, lopnStyle & PS_TYPE_MASK is one of:

    #define PS_COSMETIC         0x00000000
    #define PS_GEOMETRIC        0x00010000
    

    The following macros should be used to retrieve the above info.:

    #include 
    
    /* WMF_PEN_STYLE(wmfPen* P)  -> (U16) pen style
     * WMF_PEN_ENDCAP(wmfPen* P) -> (U16) endcap style
     * WMF_PEN_JOIN(wmfPen* P)   -> (U16) join style
     * WMF_PEN_TYPE(wmfPen* P)   -> (U16) `type' of pen (??)
     * 
     * WMF_PEN_WIDTH(wmfPen* P)  -> (double) pen `width'  (thickness w.r.t. x-axis)
     * WMF_PEN_HEIGHT(wmfPen* P) -> (double) pen `height' (thickness w.r.t. y-axis)
     * 
     * WMF_PEN_COLOR(wmfPen* P) -> (wmfRGB*) pen color
     */
    #define WMF_PEN_STYLE(P)  ((P)->lopnStyle & PS_STYLE_MASK)
    #define WMF_PEN_ENDCAP(P) ((P)->lopnStyle & PS_ENDCAP_MASK)
    #define WMF_PEN_JOIN(P)   ((P)->lopnStyle & PS_JOIN_MASK)
    #define WMF_PEN_TYPE(P)   ((P)->lopnStyle & PS_TYPE_MASK)
    
    #define WMF_PEN_WIDTH(P)  ((P)->width)
    #define WMF_PEN_HEIGHT(P) ((P)->height)
    
    #define WMF_PEN_COLOR(P)  (&((P)->lopnColor))
    
  • wmfFont
    typedef struct _wmfFont wmfFont;
    
    struct _wmfFont
    {	U16 lfHeight;
    	U16 lfWidth;
    
    	S16 lfEscapement;
    	S16 lfOrientation;
    
    	U16 lfWeight;
    
    	U8 lfItalic;
    	U8 lfUnderline;
    	U8 lfStrikeOut;
    	U8 lfCharSet;
    	U8 lfOutPrecision;
    	U8 lfClipPrecision;
    	U8 lfQuality;
    	U8 lfPitchAndFamily;
    
    	char* lfFaceName;
    
    	char* ps_name;
    
    	FT_Face ft_face;
    };
    

    wmfFont is one element of the current drawing context. Of all of this, the most important elements are ps_name (the postscript font name) and ft_face, the freetype (2) font face for which bold and italics have already been determined.

    The following macros should be used to retrieve the above info.:

    #include 
    
    /* WMF_TEXT_ANGLE(wmfFont* F) -> (double) text angle in radians
     * 
     * WMF_TEXT_UNDERLINE(wmfFont* F) -> (U8) ?? whether to underline (?? how thick)
     * WMF_TEXT_STRIKEOUT(wmfFont* F) -> (U8) ?? whether to strikeout (?? how thick)
     * 
     * WMF_FONT_NAME(wmfFont* F)   -> (char*) font name supplied by metafile
     * WMF_FONT_PSNAME(wmfFont* F) -> (char*) font name to use in postscript output
     * WMF_FONT_FTFACE(wmfFont* F) -> (FT_Face) freetype(2) font face
     */
    #define WMF_TEXT_ANGLE(F)     ((((double) (F)->lfEscapement) / 10) * M_PI / 180)
    
    #define WMF_TEXT_UNDERLINE(F) ((F)->lfUnderline)
    #define WMF_TEXT_STRIKEOUT(F) ((F)->lfStrikeOut)
    
    #define WMF_FONT_NAME(F)   ((F)->lfFaceName)
    #define WMF_FONT_PSNAME(F) ((F)->ps_name)
    #define WMF_FONT_FTFACE(F) ((F)->ft_face)
    
  • wmfDC
    typedef struct _wmfDC wmfDC;
    
    struct _wmfDC
    {	void* userdata;
    
    	wmfBrush* brush;
    	wmfPen* pen;
    	wmfFont* font;
    
    	int key;     /* Is this used ?? */
    
    	wmfDC* next; /* Is this used ?? */
    
    	wmfRGB textcolor;
    	wmfRGB bgcolor;
    
    	U16 textalign;
    	U16 bgmode;
    	U16 polyfillmode;
    	U16 charextra;
    	U16 breakextra;
    
    	U16 ROPmode;
    
    	struct
    	{	S32 Ox;
    		S32 Oy;
    		S32 width;
    		S32 height;
    	} Window;
    
    	double pixel_width; /* Display pixel dimensions (inches) */
    	double pixel_height;
    
    	U16 map_mode;
    
    	void* clip;
    };
    

    Still very much a work in progress, especially with regard to the drawing context wmfDC; there is much in this structure that is (or should be) irrelevant to the IPA.

    See wmfBrush, wmfPen and wmfFont. textcolor is the color to draw text, bgcolor is the background color (generally, as well as with text) unless bgmode=TRANSPARENT, in which case there is no background. bgmode is one of:

    #define TRANSPARENT         1
    #define OPAQUE              2
    #define BKMODE_LAST         2
    

    The following macros should be used to retrieve the above info.:

    #include 
    
    /* WMF_DC_BRUSH(wmfDC* C) -> (wmfBrush*) current brush
     * WMF_DC_PEN(wmfDC* C)   -> (wmfPen*)   current pen
     * WMF_DC_FONT(wmfDC* C)  -> (wmfFont*)  current font
     * 
     * WMF_DC_TEXTCOLOR(wmfDC* C)  -> (wmfRGB*) text color
     * WMF_DC_BACKGROUND(wmfDC* C) -> (wmfRGB*) background color
     * 
     * WMF_DC_OPAQUE(wmfDC* C) -> (U16) whether to fill opaque (non-zero if true)
     * 
     * WMF_DC_POLYFILL(wmfDC* C) -> (U16) how to fill polygons
     * 
     * WMF_DC_ROP(wmfDC* C) -> (U16) ROP mode
     */
    #define WMF_DC_BRUSH(C)      ((C)->brush)
    #define WMF_DC_PEN(C)        ((C)->pen)
    #define WMF_DC_FONT(C)       ((C)->font)
    
    #define WMF_DC_TEXTCOLOR(C)  (&((C)->textcolor))
    #define WMF_DC_BACKGROUND(C) (&((C)->bgcolor))
    
    #define WMF_DC_OPAQUE(C)     ((C)->bgmode - 1)
    
    #define WMF_DC_POLYFILL(C)   ((C)->polyfillmode)
    
    #define WMF_DC_ROP(C)        ((C)->ROPmode)
    
  • wmfFlood_t
    typedef struct _wmfFlood_t wmfFlood_t;
    
    struct _wmfFlood_t
    {	wmfDC* dc;
    
    	wmfD_Coord pt;
    	wmfRGB color;
    
    	U16 type;
    
    	double pixel_width;
    	double pixel_height;
    };
    

    Flood-fill region with color color, starting at point pt. Since this is almost certainly not a vector operation, the pixel width and height are given (and are probably best ignored...). type is one of:

    #define  FLOODFILLBORDER    0
    #define  FLOODFILLSURFACE   1
    
  • wmfDrawPixel_t
    typedef struct _wmfDrawPixel_t wmfDrawPixel_t;
    
    struct _wmfDrawPixel_t
    {	wmfDC* dc;
    
    	wmfD_Coord pt;
    	wmfRGB color;
    
    	double pixel_width;
    	double pixel_height;
    };
    

    Set pixel at point pt to color color. The pixel width and height are given.

  • wmfDrawArc_t
    typedef struct _wmfDrawArc_t wmfDrawArc_t;
    
    struct _wmfDrawArc_t
    {	wmfDC* dc;
    
    	wmfD_Coord TL;
    	wmfD_Coord BR;
    
    	wmfD_Coord start; /* draw_ellipse: (ignored) */
    	wmfD_Coord end;
    };
    

    Draw a complete or partial ellipse. TL and BR are the coordinates of the top left and bottom right of the ellipse's bounding box respectively. If incomplete, then start and end give the start and end coordinates of the arc.

  • wmfDrawLine_t
    typedef struct _wmfDrawLine_t wmfDrawLine_t;
    
    struct _wmfDrawLine_t
    {	wmfDC* dc;
    
    	wmfD_Coord from;
    	wmfD_Coord to;
    };
    

    Draw line from point from to point to.

  • wmfPolyLine_t
    typedef struct _wmfPolyLine_t wmfPolyLine_t;
    
    struct _wmfPolyLine_t
    {	wmfDC* dc;
    
    	wmfD_Coord* pt;
    
    	U16 count;
    };
    

    An array (of length count) of points pt[]. This may be used to describe polygons as well as line sequences.

  • wmfDrawRectangle_t
    typedef struct _wmfDrawRectangle_t wmfDrawRectangle_t;
    
    struct _wmfDrawRectangle_t
    {	wmfDC* dc;
    
    	wmfD_Coord TL;
    	wmfD_Coord BR;
    
    	float width; /* draw_rectangle: axes of corner ellipses; zero if un-rounded */
    	float height;
    };
    

    A rectangle, possibly with rounded corners - in which case width and height give the elliptic axes of the rectangle's corners.

  • wmfPolyRectangle_t
    typedef struct _wmfPolyRectangle_t wmfPolyRectangle_t;
    
    struct _wmfPolyRectangle_t
    {	wmfDC* dc;
    
    	wmfD_Coord* TL; /* region_frame & region_paint: TL[count],BR[count] give the */
    	wmfD_Coord* BR; /* final `extents'... */
    
    	unsigned int count;
    
    	float width;  /* region_frame: border thickness; zero otherwise */
    	float height;
    };
    

    Used by region and clip calls, wmfPolyRectangle_t is used to describe multiple rectangles, whose top left and bottom right corners are given by the TL and BR arrays respectively. These arrays are of length count in the case of clip calls, and of length count + 1 in the case of the region calls, the extra element containing the overall bounding box (the region extents). In the case of region_frame, width and height give the thickness of the frame.

  • wmfBMP_Read_t
    typedef struct _wmfBMP_Read_t wmfBMP_Read_t;
    
    struct _wmfBMP_Read_t          /* Two means available for accessing BMP image:        */
    {	long offset;           /* (1) position in source file of start of BMP;        *
                                    * use API->bbuf.seek to set pos(ition), etc.          */
    	long length;           /* (2) buffer of length length containing image of BMP */
    	unsigned char* buffer;
    
    	U16 width;  /* WMF player may preset these values; zero otherwise. */
    	U16 height; /* Use caution - may be buggy... ?? [TODO]             */
    
    	wmfBMP bmp;
    };
    

    There are two ways to read a bitmap presented by libwmf: the first is to read it directly from the input stream using the internal stream functions:

    /* Macro-wrappers for stream functions:
     * (int)  WMF_READ ((wmfAPI*) API)                 - returns unsigned char cast to int, or EOF
     * (int)  WMF_SEEK ((wmfAPI*) API,(long) position) - returns (-1) on error, else 0
     * (long) WMF_TELL ((wmfAPI*) API)                 - returns (-1) on error, else current position
     */
    
    where the bitmap starts at offset offset; the second (which is preferred) is to use the buffer buffer of length length.

    To complicate matters, the bitmap's data may be truncated so that the bitmap's header is incorrect - width and height give the real dimensions of the bitmap.

    The bitmap's width and height should be entered into bmp (see wmfBMP above) as well as a pointer to the bitmap data (which can be in any format you choose; the library does not need to know).

  • wmfBMP_Draw_t
    typedef struct _wmfBMP_Draw_t wmfBMP_Draw_t;
    
    struct _wmfBMP_Draw_t
    {	wmfDC* dc;
    
    	wmfD_Coord pt;
    	wmfBMP bmp;
    
    	U32 type;
    
    	struct
    	{	U16 x;
    		U16 y;
    		U16 w;
    		U16 h;
    	} crop;
    
    	double pixel_width;
    	double pixel_height;
    };
    

    In contrast to earlier versions, libwmf no longer makes any attempt to crop or scale the bitmap. Instead the crop data are presented to the device layer to use as it sees fit, and the pixel width and height as well. The bitmap referenced by bmp (see wmfBMP above) is to be drawn at point pt.

    TODO: info on type

  • wmfROP_Draw_t
    typedef struct _wmfROP_Draw_t wmfROP_Draw_t;
    
    struct _wmfROP_Draw_t
    {	wmfDC* dc;
    
    	wmfD_Coord TL;
    	wmfD_Coord BR;
    
    	U32 ROP;
    
    	double pixel_width;
    	double pixel_height;
    };
    

    TODO:

  • wmfDrawText_t
    typedef struct _wmfDrawText_t wmfDrawText_t;
    
    struct _wmfDrawText_t
    {	wmfDC* dc;
    
    	wmfD_Coord pt;
    
    	wmfD_Coord TL; /* Clip zone */
    	wmfD_Coord BR;
    
    	struct /* An estimated surround zone */
    	{	wmfD_Coord TL;
    		wmfD_Coord TR;
    		wmfD_Coord BL;
    		wmfD_Coord BR;
    	} bbox;
    
    	char* str;
    
    	U16 flags;
    
    	double font_height;
    	double font_ratio;  /* width to height ratio */
    };
    

    Fonts and text are triiicky! Fortunately libwmf tries to do most of the work. As such text justification is taken care of by the interpreter, and fonts (bold, italic, etc.) are selected elsewhere. The emphasis with wmfDrawText_t is therefore the rendering of text.

    The text can be assumed to be left-justified, starting at point pt. TL and BR are the corners of a clip rectangle. bbox gives four corners of rectangle - an estimate of the background zone. str is the text to draw; font_height is the height of the font and font_ratio is how much to stretch the font width-wise. The values for flags are:

    #define ETO_OPAQUE          0x0002
    #define ETO_CLIPPED         0x0004
    #define ETO_GLYPH_INDEX     0x0010
    #define ETO_RTLREADING      0x0080
    
  • wmfUserData_t
    typedef struct _wmfUserData_t wmfUserData_t;
    
    struct _wmfUserData_t	/* TODO: Need to be careful with usage here; not all these are set by the player! */
    {	wmfDC* dc;          /* dc is guaranteed */
    
    	void* data;         /* data also, except for init */
    };
    

    Redundant; may be removed at some point...

  • wmfCharDrawer
    typedef void (*wmfCharDrawer) (wmfAPI*,wmfDrawText_t*);
    

IPA Function Reference

Let us assume that you are writing a device layer called mydev, then the first requirement is an initialization function:

#include <libwmf/ipa.h>
#include <libwmf/defs.h>
#include <libwmf/mydev.h>

void wmf_mydev_function (wmfAPI* API)
{	wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference;

	/* */
The function reference has the following definition:
typedef struct _wmfFunctionReference wmfFunctionReference;

struct _wmfFunctionReference
{	void (*device_open) (wmfAPI*);
	void (*device_close) (wmfAPI*);
	void (*device_begin) (wmfAPI*);
	void (*device_end) (wmfAPI*);

	void (*flood_interior) (wmfAPI*,wmfFlood_t*);
	void (*flood_exterior) (wmfAPI*,wmfFlood_t*);

	void (*draw_pixel) (wmfAPI*,wmfDrawPixel_t*);
	void (*draw_pie) (wmfAPI*,wmfDrawArc_t*);
	void (*draw_chord) (wmfAPI*,wmfDrawArc_t*);
	void (*draw_arc) (wmfAPI*,wmfDrawArc_t*);
	void (*draw_ellipse) (wmfAPI*,wmfDrawArc_t*);
	void (*draw_line) (wmfAPI*,wmfDrawLine_t*);
	void (*poly_line) (wmfAPI*,wmfPolyLine_t*);
	void (*draw_polygon) (wmfAPI*,wmfPolyLine_t*);
	void (*draw_rectangle) (wmfAPI*,wmfDrawRectangle_t*);

	void (*rop_draw) (wmfAPI*,wmfROP_Draw_t*);
	void (*bmp_draw) (wmfAPI*,wmfBMP_Draw_t*);
	void (*bmp_read) (wmfAPI*,wmfBMP_Read_t*);
	void (*bmp_free) (wmfAPI*,wmfBMP*);

	void (*draw_text) (wmfAPI*,wmfDrawText_t*);

	void (*udata_init) (wmfAPI*,wmfUserData_t*);
	void (*udata_copy) (wmfAPI*,wmfUserData_t*);
	void (*udata_set) (wmfAPI*,wmfUserData_t*);
	void (*udata_free) (wmfAPI*,wmfUserData_t*);

	void (*region_frame) (wmfAPI*,wmfPolyRectangle_t*);
	void (*region_paint) (wmfAPI*,wmfPolyRectangle_t*);
	void (*region_clip) (wmfAPI*,wmfPolyRectangle_t*);
};

The initialization function has two purposes, the first being to establish the links that create the IPA by pointing the function reference variables to your own drawing functions:

#include <libwmf/ipa.h>
#include <libwmf/defs.h>
#include <libwmf/mydev.h>

void wmf_mydev_function (wmfAPI* API)
{	wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference;

	FR->device_open  = wmf_mydev_device_open;
	FR->device_close = wmf_mydev_device_close;
	FR->device_begin = wmf_mydev_device_begin;
	FR->device_end   = wmf_mydev_device_end;
	/* etc. */

	/* */
}

void wmf_mydev_device_open (wmfAPI* API)
{	/* */
}

/* etc. */

The second purpose of the initialization function is to allocate the device's data structure, set the device parameters to default values if necessary, and then to attach the data to the API->device_data hook.

/* */

typedef struct _wmf_mydev_t wmf_mydev_t;

struct _wmf_mydev_t
{	/* */

	unsigned long flags;
}

void wmf_mydev_function (wmfAPI* API)
{	wmfFunctionReference* FR = (wmfFunctionReference*) API->function_reference;

	wmf_mydev_t* ddata = 0;

	FR->device_open  = wmf_mydev_device_open;
	/* etc. */

	API->device_data = wmf_malloc (API,sizeof (wmf_mydev_t));

	if (API->err != wmf_E_None) return; /* insufficient memory? */

	ddata = (wmf_mydev_t*) API->device_data;

	/* */

	ddata->flags = 0;
}

/* */

IPA Functions

The IPA functions are called by wmf_play (), the only exception being device_close which is called by wmf_api_destroy () - and then only if device_open has been called by wmf_play ().

device_open is called the first time (and only the first time) wmf_play () is called, and is the very first IPA function to be called, just as device_close will be the very last.

At the beginning of each play cycle (i.e., each call to wmf_play ()) device_begin is called (after device_open if it is the first cycle), and at the end of each cycle device_end is called. The metafile graphics use other IPA functions.

device_open, device_begin, device_end and device_close should be written so that wmf_play () can be called repeatedly.

The names of the functions are not important. The generic names are used below:

device_open | device_close | device_begin | device_end | flood_interior | flood_exterior | draw_pixel | draw_pie | draw_chord | draw_arc | draw_ellipse | draw_line | poly_line | draw_polygon | draw_rectangle | rop_draw | bmp_draw | bmp_read | bmp_free | draw_text | udata_init | udata_copy | udata_set | udata_free | region_frame | region_paint | region_clip
  • device_open
    void device_open (wmfAPI*);
    

    device_open is the very first IPA function to be called. It is called only once, the first time wmf_play () is called.

  • device_close
    void device_close (wmfAPI*);
    

    device_close is the very last IPA function to be called. It is called by wmf_api_destroy (), and only if device_open has been called earlier.

  • device_begin
    void device_begin (wmfAPI*);
    

    device_begin is the first IPA function called from wmf_play () (with the exception of device_open the first time wmf_play () is called).

  • device_end
    void device_end (wmfAPI*);
    

    device_end is the last IPA function called from wmf_play ().

  • flood_interior
    void flood_interior (wmfAPI*,wmfFlood_t*);
    
  • flood_exterior
    void flood_exterior (wmfAPI*,wmfFlood_t*);
    
  • draw_pixel
    void draw_pixel (wmfAPI*,wmfDrawPixel_t*);
    
  • draw_pie
    void draw_pie (wmfAPI*,wmfDrawArc_t*);
    
  • draw_chord
    void draw_chord (wmfAPI*,wmfDrawArc_t*);
    
  • draw_arc
    void draw_arc (wmfAPI*,wmfDrawArc_t*);
    
  • draw_ellipse
    void draw_ellipse (wmfAPI*,wmfDrawArc_t*);
    
  • draw_line
    void draw_line (wmfAPI*,wmfDrawLine_t*);
    
  • poly_line
    void poly_line (wmfAPI*,wmfPolyLine_t*);
    
  • draw_polygon
    void draw_polygon (wmfAPI*,wmfPolyLine_t*);
    
  • draw_rectangle
    void draw_rectangle (wmfAPI*,wmfDrawRectangle_t*);
    
  • rop_draw
    void rop_draw (wmfAPI*,wmfROP_Draw_t*);
    

    TODO:

  • bmp_draw
    void bmp_draw (wmfAPI*,wmfBMP_Draw_t*);
    

    Note: Unless you're feeling masochistic and want to write, or re-write, your own suite of functions for the reading, writing and general manipulation of bitmaps, you should defer this to libwmf's built-in support which is adapted from ImageMagick's excellent BMP coder.

    See section on bitmaps below.

  • bmp_read
    void bmp_read (wmfAPI*,wmfBMP_Read_t*);
    

    Note: Unless you're feeling masochistic and want to write, or re-write, your own suite of functions for the reading, writing and general manipulation of bitmaps, you should defer this to libwmf's built-in support which is adapted from ImageMagick's excellent BMP coder.

    void bmp_read (wmfAPI* API,wmfBMP_Read_t* bmp_read)
    {	wmf_ipa_bmp_read (API,bmp_read);
    }
    
  • bmp_free
    void bmp_free (wmfAPI*,wmfBMP*);
    

    Note: Unless you're feeling masochistic and want to write, or re-write, your own suite of functions for the reading, writing and general manipulation of bitmaps, you should defer this to libwmf's built-in support which is adapted from ImageMagick's excellent BMP coder.

    void bmp_free (wmfAPI* API,wmfBMP* bmp)
    {	wmf_ipa_bmp_free (API,bmp);
    }
    
  • draw_text
    void draw_text (wmfAPI*,wmfDrawText_t*);
    

    If desired, strings can be decomposed into individual chars using wmf_ipa_draw_text (). Best to see source for the various device layers in libwmf.

  • udata_init
    void udata_init (wmfAPI*,wmfUserData_t*);
    

    Redundant; may be removed at some point...

  • udata_copy
    void udata_copy (wmfAPI*,wmfUserData_t*);
    

    Redundant; may be removed at some point...

  • udata_set
    void udata_set (wmfAPI*,wmfUserData_t*);
    

    Redundant; may be removed at some point...

  • udata_free
    void udata_free (wmfAPI*,wmfUserData_t*);
    

    Redundant; may be removed at some point...

  • region_frame
    void region_frame (wmfAPI*,wmfPolyRectangle_t*);
    
  • region_paint
    void region_paint (wmfAPI*,wmfPolyRectangle_t*);
    
  • region_clip
    void region_clip (wmfAPI*,wmfPolyRectangle_t*);
    

    If the number of clip rectangles is zero, the current clip region should be unset.

Bitmap Functions

Other Functions

Guidelines

Compiling - The Distribution

The section applies only if you are working on the libwmf sources.

The build system uses automake and autoconf. If any changes are made to any of the various Makefile.am files, or to configure.in or libwmf.m4, then the build system will need to be updated. Change to the top source directory (containing configure.in and libwmf.m4) and:

# aclocal
# automake
# autoheader
# autoconf
# date > stamp-h.in

When adding a new device layer, include/libwmf/Makefile.am and src/ipa/Makefile.am will need to be modifiled. Source files (src/ipa/new.c) and installing header files (include/libwmf/new.h) do not need to be added to the distribution, but other headers (src/ipa/new.h & src/ipa/new/*.h) will.


Copyright 2001 wvWare/libwmf http://www.wvware.com/
libwmf-0.2.8.4/doc/dlayer.html0000644000077100007710000000154207260330365015424 0ustar fjffjf00000000000000 libwmf-0.2.0 Device Layer Reference

libwmf-0.2.0 Device Layer Reference

Currently libwmf has native support for only two device layers: gd, and eps. (In fact, there is also some preliminary, optional support for X, but that is not described here yet.)

Contents

gd

Supports: PNG, JPEG
Function: wmf_gd_function

eps

Supports: EPS, PS
Function: wmf_eps_function

Copyright 2001 wvWare/libwmf http://www.wvware.com/
libwmf-0.2.8.4/doc/wmfpic.png0000644000077100007710000003263507260330365015260 0ustar fjffjf00000000000000PNG  IHDR,gAMA abKGD pHYs  tIMEӉ IDATx[u 餝2(-N,E.!V ,VGvzxgEXA]xZgT*b}.5!-PiAljX(diof:3yL2dtr$B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!&\Vk>LGB@$`"4E `?Ё x x3~mB$ DxJ. NfaEᤀ7@PEQ,BNhX6$0Ρ^C^6A}ڐ$0rY4pp.Х6"t x$QrYm6p8Kq8nyX <[U#D9@DeW(GMρAO$QrYX\ 8zxXBP\55@pE#aY%T"e@Lu, ., 'U"GpU.] :y/UI &pXI Q:U"KpD.܉C$$_UI vvpwͪ" D޹ňt_a-aI brY ձ<\CM\V;xuLIo}-X.} H"ɣ Q遈ZDu,ޫ:X$)OEu Iu qH3_ :́5e_c"ƔjTp̓g.Ĩ$Qڭ=(K@DYfqn U!$Q9!=pS _uH#0v a&V/@0 RKʍE!I "/N!XD]sA}@D}"u_NQkSNd8$yQW" 8DYgl5qtB oUPGz ⇪ KI\V[ DU!VԬC§d˧rY$šƶH :>H7 . 'U!<@P OTS>$=eytF oPp@zϒ3\V;خ:i3AMAwH_:yR|Dz >joT!$if]> ?.Q k>!CX>jiSu2Rp@| I=f' Ss> Qs> yd7OW\]:~HաxuN1AuYw[:߮ }tuڊ==73\-Mgq3QmyX}U;GR\Vܡۤ}'y]:^/\]]-MݍŨeF]:ؾ(9*6Wp$;ޭ2-Xkcc.zz'NIM?ƖFn省>:{]k\{B nhGr n7JGunK#n FzL6p 5}ݗhN.x?n{by@ϕɈ$GGx]ϻ;n'51kCG~#+eZʹGOjr~eU_DXq&kCLks:+~-i׆Iz| =2v.ω0aI J7 4ǎ>:ή e#ּy/ҙ[m_s$'^NoӮ&u5G1*^ҙfZnN_iL+[Ns%*4{C7VO1ol׆+ y=ÞYNGy,}x| tsU;9ʷxmeCP'5u1G]{TJki6/ޞ?hp//5Wik-h(~9}|Ɇ%Î=$1.L =B3k* /7e5待{^Z y)S+r6[ VҪB!,&:U^sR7Zdz)>Xɫ\oT֤vo5?_bJy^[9찜JwgH}8@r9|o[>lNfd^2D Kwrŷ= zp@vm褣kԁ>c6=2-55h2أkXNG^JzR/-7*]( G9|#l;k׆:CѓLouĄv-.1^5du܌ÚʹPEIiI%X e%c9j2Km8/r^Zs3CX cU9ORjZ!+ZGꞨ2}#wÍS.silR/-Yr˺I7lΠw7vF'5T͇ & _huUuy=lYiL?wǘy^ e#ʆCKk_[9}XϩhniX;mq71w7vROɮgQ5ˍxl{4@8+U^mF ۵]n\ot<|/d(dm;zn&1*sk{!#=f6*pdcL =|C{Jr^^ڕX;+y 74unf&rGk,>gaUr /剢1H8^VhR6M;M~Pd ~Px]$U |GH񇵪'e68s> Qs> x} ;28#Vm~!'5L=bgط\K&[uy 'rY_QG=urYl`:<U!u'$D ]N /lsՔe601?/?RJ  e68_1#&qPaOD 'f>!|&/ +ӈ[MeG_uF oPp$eNc5̣56赖$D _:.U`Jr!\V0ꔨ$28PR (Uf%cIA?OICYÍIl f?@P@u })IuG=$y$ @BuժaAIuH$q($PuGOVZqTђţIZ"~:4jx,ج3d ՚WSTRѓG!M>:@fE :BhpiH$a"A} P7Z4pܬ#B@D@P_ \Sqx2yX0\c !$Aan2z4PɬB # DnSp^_$K$̺  K*nƹ< k-owdHceo8y:m@]UgMc"*j-TNދ*\x$Q\VXL:i0d$ԟP]2.*f6,T$M.CTCJ oN艌Ip9¸=ɦ$EDrY[>OG\xjy@ĸڹC@%yTϡ,&Mĸ , QfI%=a\V[*~Lv_{Z HeoZaqw͎&|ĬdIIa8IdI Ne [Q ޳큠r HN~Ba Q2YaT e\Vc$q*x_ G*IDN*[ P.Łx]<cTWxIta>;d`Ӈ}|0ӱTzo#.U%?Z 8@jI%veW/ 9x %HhjY>A=GK#Ն*:OR) xxM gl(SpTQ+ T.> aU/ ^6A}CR oJ#jQ S. NfSAcJ4>0Z Z3p`:08 0: h&f~ @ N 5g&J^#Bi|BIY !\# g*p44%1x|BIY !l# g.7iHK>{!DͤRDU}3wE\qN`̃YP@n{"8u]C14d?.DDEYyL4Nٴ<^FX_v U~4>tF^0?o¡^(KГ''a )u`kTܔГsZcshCSiU1fCzX8CmHCQ$$@88AmDc+J"'$D~BO;O¡T:N"źgg¡x$" =9)*&RŁZD}l",&J"ø>C[USO$cR7Q Sb\b$bx<Iu0:$gU26&bjkM4x*,¸>Ωy>I"X8ԯ:|@z87GEț"_<>ZK>K"}~[ГgЍ\J~,juv(ԋa\0XX8@ГKycQިO' W7]+}pQՁ8ɳ $'n>:A([நY}BNI` pw,Z:'x.$\6|b:K~ |'E6yRQx*9%=V<@zCTɣCUIE*/I$I`I,zUu vDI{6ձ8A)E~:T.*$ sw,Yu $'O~@Q%BkG6 sq7Iz#k5lI%wUNnj;UT ձ"IdkcP~J%Ƹy$yX"ݪx*}.<[WD)X8@PHГ_ĸ$*[P8 J HR J l;@ F@z_:7x0y'AxE`*IY` $a&a%W2)Гw)n Jp٧:;SO/Uٰ0xpipNĭx:ZS@f¡7*9;<<`dfkT_UKLpsz4$y(e"Uqhc $'Ov|!LguSTgVpf5G8(Ԉup9@(ԈusX]s$$d1S:_i99SEj:w8RJ rܺ#+F#չsT |Ǒ:NOUP߆{/J>:w6\ls.?}׳oŽ4%Ąh;{fO-`҅V(]q/ח|lis BcֹZؾ='o]`Fgni| a{W@ft;5[lzF۪Mw-L$ wxk;ѷy=C{v,H0Z޵ɭ^NӔ/ůh;:1yaggHD?ؿ2n[b0e<=n\pqs3EZ[З-ap߬';)!Gt_^YU‰re:w͋ tC\^Nz׼ux n_x#;=ieK:MY͇_uω0)4BݛdО4kW;y*xl{NL@Ho ftR;ckc}^o|ymQ`FgBxZ~sƤ+2N`̵oIDAT0ӻE3:m1<0{OΝe [mQ{PMY^פ+cnͱ({Ud5}v΂m^O9 ft.[Ɉc]"׼H;z@;Ҳ.[5*jݫёNe|7`Qշy=ZNΙ4Vӻn5uw sOj^@ FvZ̧}6Sm^Oc`69n ;q`k1bZО4}ũ7XWE9@\l; 7Wi||2۸uطw/eB1%ą%@sGV}+LO=< 7DRӌL4Wi|JLV}+%_ehh|r׿H>_٠nK\V[Vu K{'+n%pըCIFn><ľwŽhu|uaߘ'̘Eˇj;g)|vp1/va+ڻ^vlZgpO~q/-V˔o DZ[M #5n|رomyJh{z|67z0E=J> 3f>FK8 >Hd{sb#sg^j;Coh|h; گ[x &t3'wdq ftoy'~%&}O6X[/ok%_4&]u ^ 5wji%.ɿ/V([5eTr?k/Ey'ܝfߊ{9Y#![>h.#If*Hm^Ģ`ԉs}ْokWo<˳b]N`n;ۈ5zwo|pܝ'J^H ʬX8,-x~7r1Ys 0<+SϷXqb.Ye ICU-ODyN߭лvu-C46gI3;=m;{ˇ qB|ʉr])OZ7LFjWCY }D /\tŒC&qn5Zh}Ԫx0&'Wb Nr7'`Ѱ oٙ9əϳ 0E%j?] $;P2.䇏jgN}o㰜*5q>W}o)1i Lc` 3߈Y&qrh %8mJS`"?ujL0vC9yÎ9ѷq+w)0|w>?лay,͝-'w19a2;=WeÎ9?]5,P@543{P >|<_P, tC]Uem"u;MP]Wyj}> T{WF/#s?3m^@BSۤae4M#ӿy=M4Mʗq`Cu8oo5M e '=\>CeƦ1f;6g7Ё\}O{H*Id 6$ۼSsؑqmo3b6b}mzs l3^_ե7/dD/{*-D-.xU6mYpT\ O\ɱ(ǺH%c;v7mƺ-z.cJ֣pnwg/14ֻؑ]dcg1E%rc%Gk7$+r#=߸k*Va%RjؑW,VO =vVrMQ-}A&J/Qp;a.:X84X\ymCpD#Խ?@8ZU{N$M)D%ׯ:u]'S~H O6O ;l b-3/SHsb#!-D)ϫ ksT!ƯGz׭vV։BC6N߆+6FEۧl:=z+rWUrپ '([4!'s 8}^$տx!yvp]V8:.$]%*N%=u̻>::qR\I Q-YI[|ǬS^m` DۏQ\Vp%+ OY<%}ܤ:n2+\K o|>=Cph)PhX "q()1q۽|!mRh:$qX BTB 4\C?3` }DKx*@~b0d,u7R,E ocQ=CgӌMSS^,ꍅCKT!l$] XZ0nkѯ:Q~`Y64S,RcUK3l @Z'l7gg@g {!X8,0 x@u,bϮH9 =8DEnj;U1R9i}>1t١MØt|ZTzKu,npOZ5lHS1.sT"JZ |=E^QHiNzްRSo7cͪN hS)E~:Ւ@.*\{&ƜH^OT$N"ձܓ ۯn+|zCHͷxX":՚@J U xކZsU3y$KBOŸgU3"UR0&çCNo/_aUx4`~ROb k:ۂ1\Bu N\$Tqj5Ψ;aDobhZcIbL󍲚s6vS髁SU1¡GU$&KBO~8Ou, poT@Z Tz<@, =y6R+eπQ-Nu ~TTkWV4>GñpNW:7 ĒГaL8Bq8 䡨ySu0yTX\,/g-(<K z D&K5hT<:N<(pp)ppTۄqcПT%'Ƹ@.J0&jwU#K@\s˔n{=&eS$"''a\ Q 5 $&E+Gx@<|c91e] 5@^)sU$;i̭f$qJɓ1& c߼1.9tlj?qG06rN> @ځI_Z8tM b`?Ё x؅q?o¡A_HqHBOf`\ 0BuF^ `\ ;ZdK!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B(w0rIENDB`libwmf-0.2.8.4/doc/smlogo2.gif0000644000077100007710000000542107260330365015327 0ustar fjffjf00000000000000GIF89a@           !" #!$"%"&#'$(%)&*' +( ,)!-)".*#/+#/,$0-%1.%2/&3/'40(51(62)73*84*95+:6,;6-<7-=8.>9/?:/?;0@<1A=1B=2C>3D?4E@4FA5GB6HC6IC7JD8KE9LF9MG:NH;OI;OJRL>SM?TN@UO@VPAWQBXQCYRCZSD[TE\UE]VF^WG^WG_XH`YIaZJb[Jc\Kd]Le^Lf^Mg_Nh`OiaOjbPkcQldQmeRneSnfTogTphUqiVrjVskWtlXulYvmYwnZxo[yp[zq\{r]|r^}s^~t_~u`v`waxbybyczd{e|e}f~gghijjkllmnoopqqrsttuvvwxxyz{{|}}~´õĵŶƷǸȹɺʻ˼̼̽;οžßàĠšƢǢȣɤɥʥ˦̧ͧΨϩЩЪѫҬӬԭծ֮ׯװرٱڲ۳ܳݴݵ޶!,@@ H*\ȰÇ#JHŋ3jȱǏA@tqDe>Gy9-D&U"B$ DR B|Q@p9 $bqж Ja+C@hG4JGpS! zۼc/aP5:mWR; B(FTJ-H!sxHaG"(wl1DFtq!?>6$>LM )DiH&L6PF)T.TeNQ:\Ɗ?#\6A~?$0k t?\ƂCa\B6\6 DdpwHeDIxS Re.paW.@\vl5\?\vGA\@ܨ@PZBPC_\ A̱@4(:6h:JP@ؚ3E?^ Al?KrU+k,l1r6epH@ VB?WB,V%\@.|^?SM&@PlGAx\fBM\DhP8^Z @Ï}qΒ0H SA\6E/Pwb }0@`?Nk#AMB|P97kFB`P>eO(da> \+,,eZr*q`0RP;K'A00׼8B\>wSe4 aq" -%eY Ŷ % qY"كI1p@L PbUx &@:.,I k>\&8F%R IL ,e@Fe&'@`&X9Pq PJb"A{ $J.z` H2hL6pH:x̣Əw؃GCa(dxH0$el?wG>a+be<`@r gH&Ap# @>AO^ddAp8Bp=(d!Cp 2(d$  Ȗv#_V "\ Pep]}nE׀"!ZZ6}^@b/!C=c98AaK. eF`VJ eq! ڀ5 |Z{ȿ>!CH(VH7B؃n->4`w*<@#B! bT?XzA> 0@Gx ݈@  <8T T+ 32e1efP6C\6$c(:R˼8n‰t Xe@#@РZ{"6j~d @@ A \UG#t@þ 7P/~A x͹ B/` 1s&= ˸B7őzB;'N[x;libwmf-0.2.8.4/doc/caolan/0000755000077100007710000000000010272000327014476 5ustar fjffjf00000000000000libwmf-0.2.8.4/doc/caolan/Makefile.am0000644000077100007710000000331707505305525016553 0ustar fjffjf00000000000000SUBDIRS = . pics wmfonedocdir = @WMF_DOCDIR@/caolan install-data-local: @echo "Installing Caolan's documentation"; \ cd $(srcdir) && \ $(mkinstalldirs) $(DESTDIR)$(wmfonedocdir); \ (for i in *.html *.gif; do \ $(INSTALL_DATA) $$i $(DESTDIR)$(wmfonedocdir)/$$i; \ done) DOCUMENTATION = \ 2.html \ Arc.html \ BitBlt.html \ Bmpfrmat.html \ Chord.html \ CreateBrushIndirect.html \ CreatePenIndirect.html \ CreateRegion.html \ DeleteObject.html \ DibBitBlt.html \ DibCreatePatternBrush.html \ DibStretchBlt.html \ Ellipse.html \ ExcludeClipRect.html \ ExtFloodFill.html \ ExtTextOut.html \ FillRgn.html \ FloodFill.html \ FrameRgn.html \ IntersectClipRect.html \ InvertRgn.html \ LineTo.html \ MoveTo.html \ OffsetClipRgn.html \ OffsetViewportOrg.html \ OffsetWindowOrg.html \ PaintRgn.html \ PatBlt.html \ Pie.html \ PolyPolygon.html \ Polygon.html \ Polyline.html \ Rectangle.html \ RestoreDC.html \ RoundRect.html \ SaveDC.html \ ScaleViewportExt.html \ ScaleWindowExt.html \ SelectClipRgn.html \ SelectObject.html \ SetBkColor.html \ SetBkMode.html \ SetDIBitsToDevice.html \ SetMapMode.html \ SetMapperFlags.html \ SetPixel.html \ SetPolyFillMode.html \ SetROP2.html \ SetStretchBltMode.html \ SetTextAlign.html \ SetTextCharacterExtra.html \ SetTextColor.html \ SetTextJustification.html \ SetViewportExt.html \ SetViewportOrg.html \ SetWindowExt.html \ SetWindowOrg.html \ StretchDib.html \ TextOut.html \ dibs.html \ esc.html \ index.html \ mapmode.html \ ora-clp.html \ ora-wmf.html \ rop.html \ support.html \ support2.html \ template.html \ unknown.html \ msmeta01.gif \ msmeta02.gif \ msmeta03.gif \ msmeta04.gif EXTRA_DIST = $(DOCUMENTATION) libwmf-0.2.8.4/doc/caolan/Makefile.in0000664000077100007710000004211510272000327016550 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/caolan DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = . pics wmfonedocdir = @WMF_DOCDIR@/caolan DOCUMENTATION = \ 2.html \ Arc.html \ BitBlt.html \ Bmpfrmat.html \ Chord.html \ CreateBrushIndirect.html \ CreatePenIndirect.html \ CreateRegion.html \ DeleteObject.html \ DibBitBlt.html \ DibCreatePatternBrush.html \ DibStretchBlt.html \ Ellipse.html \ ExcludeClipRect.html \ ExtFloodFill.html \ ExtTextOut.html \ FillRgn.html \ FloodFill.html \ FrameRgn.html \ IntersectClipRect.html \ InvertRgn.html \ LineTo.html \ MoveTo.html \ OffsetClipRgn.html \ OffsetViewportOrg.html \ OffsetWindowOrg.html \ PaintRgn.html \ PatBlt.html \ Pie.html \ PolyPolygon.html \ Polygon.html \ Polyline.html \ Rectangle.html \ RestoreDC.html \ RoundRect.html \ SaveDC.html \ ScaleViewportExt.html \ ScaleWindowExt.html \ SelectClipRgn.html \ SelectObject.html \ SetBkColor.html \ SetBkMode.html \ SetDIBitsToDevice.html \ SetMapMode.html \ SetMapperFlags.html \ SetPixel.html \ SetPolyFillMode.html \ SetROP2.html \ SetStretchBltMode.html \ SetTextAlign.html \ SetTextCharacterExtra.html \ SetTextColor.html \ SetTextJustification.html \ SetViewportExt.html \ SetViewportOrg.html \ SetWindowExt.html \ SetWindowOrg.html \ StretchDib.html \ TextOut.html \ dibs.html \ esc.html \ index.html \ mapmode.html \ ora-clp.html \ ora-wmf.html \ rop.html \ support.html \ support2.html \ template.html \ unknown.html \ msmeta01.gif \ msmeta02.gif \ msmeta03.gif \ msmeta04.gif EXTRA_DIST = $(DOCUMENTATION) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/caolan/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/caolan/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-data-local install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-libtool clean-recursive ctags \ ctags-recursive distclean distclean-generic distclean-libtool \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am uninstall-info-am install-data-local: @echo "Installing Caolan's documentation"; \ cd $(srcdir) && \ $(mkinstalldirs) $(DESTDIR)$(wmfonedocdir); \ (for i in *.html *.gif; do \ $(INSTALL_DATA) $$i $(DESTDIR)$(wmfonedocdir)/$$i; \ done) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/doc/caolan/2.html0000644000077100007710000003031207260330366015540 0ustar fjffjf00000000000000 Q: How do I display a 256 color bitmap?

Q: How do I display a 256 color bitmap?

A: To display a 256 color bitmap, you must use the palette information that is in the bitmap. With the palette information, you create a GDI object known as a logical palette, using the function CreatePalette(). You must also call the functions SelectPalette() and RealizePalette() before displaying the bitmap. The SelectPalette() function is used to select a logical palette into the device context. The RealizePalette() function maps color entries in the logical palette that is selected into the device context to entries in the system palette.

Since the system palette may be shared by more than one application, Windows uses a few messages for sharing the palette. When an application is about to receive the input focus, Windows sends the window a WM_QUERYNEWPALETTE message. If the application uses the palette, it should realize its logical palette, invalidate the window's client area, and return TRUE to indicate that it has changed the system palette.

When the system palette has been changed, Windows sends WM_PALETTECHANGED messages to all the inactive windows, from top to bottom in the Z-order. A window that uses the palette should do one of two things:

  • It can realize its palette by calling RealizePalette(), and redraw the client area. When realizing its palette, colors are mapped to any free entries in the system palette that remain, otherwise, they are mapped to the closest colors in the system palette.
  • It can call the function UpdateColors(). This function quickly maps existing system palette colors on the screen to the closest colors in the new system palette. The accuracy of the matched colors decreases every time this function is called, so a bitmap color's will become more and more distorted, until the window is brought to the foreground.

The following example displays a 256 color bitmap:

// bmp256.c
// copyright 1995 Robert Mashlan

#define STRICT
#include <windows.h>
#include <windowsx.h>
#include <commdlg.h>
#include <string.h>

#include "bmp256.rh"

#define LOCALFUNC static NEAR PASCAL

#define WM_OPENFILE WM_USER // message used to open a file

// app's HINSTANCE
HINSTANCE hInst;

int LOCALFUNC WMPaint( HWND hwnd )
// WM_PAINT message handler
{
   PAINTSTRUCT ps;
   BITMAP bm;
   HDC hdc = BeginPaint(hwnd,&ps);
   HBITMAP hbmp = (HGLOBAL)GetProp(hwnd,"bmp");
   HPALETTE hPal = (HPALETTE)GetProp(hwnd,"palette");
   HPALETTE hPalOld;
   HDC hdcMem = CreateCompatibleDC(hdc);
   if(hPal) {
      hPalOld = SelectPalette(hdc,hPal,FALSE);
      RealizePalette(hdc);
   }
   GetObject(hbmp,sizeof(bm),(LPSTR)&bm);
   hbmp = SelectObject(hdcMem,hbmp);
   BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);
   hbmp = SelectObject(hdcMem,hbmp);
   if(hPalOld)
      SelectPalette(hdc,hPalOld,FALSE);
   DeleteDC(hdcMem);
   EndPaint(hwnd,&ps);
   return 0;
}

#define ISWIN30DIB(lpbi) ((*(LPDWORD)(lpbi))==sizeof(BITMAPINFOHEADER))
#define GETDIBBITS(lpbi) (lpbi+(WORD)(*(LPDWORD)lpbi)+PaletteSize(lpbi))

WORD DIBNumColors(LPSTR lpbi)
// returns the number of palette entries in a memory DIB
{
   WORD wBitCount;
   if(ISWIN30DIB(lpbi)) {
      // use the biClrUsed entry, if non-zero
      DWORD dwClrUsed = ((LPBITMAPINFOHEADER)lpbi)->biClrUsed;
      if(dwClrUsed)
         return (WORD)dwClrUsed;
   }
   // Calculate the number of colors in the color table based on
   //  the number of bits per pixel for the DIB.
   if(ISWIN30DIB (lpbi))
      wBitCount = ((LPBITMAPINFOHEADER)lpbi)->biBitCount;
   else
      wBitCount = ((LPBITMAPCOREHEADER)lpbi)->bcBitCount;
   switch(wBitCount) {
      case 1:
         return 2;
      case 4:
         return 16;
      case 8:
         return 256;
      default:
         return 0;
   }
}

WORD PaletteSize(LPSTR lpbi)
// returns the size of the palette in a memory DIB
{
   WORD wResult = DIBNumColors(lpbi);
   if(ISWIN30DIB(lpbi))
      return(wResult*sizeof(RGBQUAD));
   else
      return(wResult*sizeof(RGBTRIPLE));
}


HPALETTE LOCALFUNC CreateDIBPalette( HGLOBAL hDIB )
// this function creates a logical palette from a
// in-memory DIB
{
   LPLOGPALETTE lpPal;
   HPALETTE  hPal = NULL;
   int       i, wNumColors;
   LPSTR     lpbi = NULL;
   LPBITMAPINFO  lpbmi;
   LPBITMAPCOREINFO lpbmc;

   if (!hDIB) return NULL;
   lpbi = GlobalLock(hDIB);
   lpbmi = (LPBITMAPINFO)lpbi;
   lpbmc = (LPBITMAPCOREINFO)lpbi;
   wNumColors = DIBNumColors(lpbi);
   if(wNumColors) {
      lpPal = (LPLOGPALETTE)GlobalAllocPtr(GHND,sizeof(LOGPALETTE)+
                             sizeof(PALETTEENTRY)*wNumColors);
      if(!lpPal) {
         GlobalUnlock(hDIB);
         return NULL;
      }
      lpPal->palVersion = 0x300;
      lpPal->palNumEntries = wNumColors;
      for(i=0;i<wNumColors;i++) {
         if(ISWIN30DIB(lpbi)) {
            lpPal->palPalEntry[i].peRed =
               lpbmi->bmiColors[i].rgbRed;
            lpPal->palPalEntry[i].peGreen =
               lpbmi->bmiColors[i].rgbGreen;
            lpPal->palPalEntry[i].peBlue  =
               lpbmi->bmiColors[i].rgbBlue;
            lpPal->palPalEntry[i].peFlags = 0;
         } else {
            lpPal->palPalEntry[i].peRed =
               lpbmc->bmciColors[i].rgbtRed;
            lpPal->palPalEntry[i].peGreen =
               lpbmc->bmciColors[i].rgbtGreen;
            lpPal->palPalEntry[i].peBlue = 
               lpbmc->bmciColors[i].rgbtBlue;
            lpPal->palPalEntry[i].peFlags = 0;
         }
      }
      hPal = CreatePalette(lpPal);
      GlobalFreePtr(lpPal);
   }
   GlobalUnlock(hDIB);
   return hPal;
}

HBITMAP LOCALFUNC DIBToBMP(HGLOBAL hDIB, HPALETTE hPal)
// convert a DIB in a global memory block to a DDB
{
   LPSTR    lpDIBHdr;
   HBITMAP  hbmp;
   HDC      hdc;
   HPALETTE hPalOld = NULL;

   if (!hDIB)
      return NULL;

   lpDIBHdr = GlobalLock(hDIB);
   hdc = GetDC(NULL);
   if(!hdc) {
      GlobalUnlock(hDIB);
      return NULL;
   }
   if (hPal) {
      hPalOld = SelectPalette(hdc,hPal,FALSE);
      RealizePalette(hdc);
   }
   hbmp = CreateDIBitmap(hdc,
      (LPBITMAPINFOHEADER)lpDIBHdr,
      CBM_INIT,
      GETDIBBITS(lpDIBHdr),
      (LPBITMAPINFO)lpDIBHdr,
      DIB_RGB_COLORS);
   if(hPalOld)
      hPalOld = SelectPalette(hdc,hPalOld,FALSE);
   ReleaseDC(NULL,hdc);
   GlobalUnlock(hDIB);
   return hbmp;
}

BOOL LOCALFUNC ReadDIBFile( HWND hwnd, LPCSTR lpstrFileName )
// reads a DIB file, and converts it to a DDB, and creates the
// logical palette.
{
   BITMAPFILEHEADER bmfh;
   OFSTRUCT of;
   DWORD dwSize;
   HGLOBAL hDat = NULL;
   LPSTR lpDat = NULL;
   HFILE hf = OpenFile(lpstrFileName,&of,OF_READ);
   HPALETTE hPal;
   if( hf == HFILE_ERROR ) goto failed;
   if( _hread(hf,&bmfh,sizeof(bmfh) ) != sizeof(bmfh) ) goto failed;
   if( bmfh.bfType != 'BM' ) goto failed;
   dwSize = _llseek(hf,0,2) - sizeof(bmfh);
   _llseek(hf,sizeof(bmfh),0);
   hDat = GlobalAlloc(GHND,dwSize);
   if( !hDat ) goto failed;
   lpDat = GlobalLock( hDat );
   _hread(hf,lpDat,dwSize);
   GlobalUnlock(hDat);
   hPal = CreateDIBPalette(hDat);
   SetProp(hwnd,"palette",hPal);
   SetProp(hwnd,"bmp",DIBToBMP(hDat,hPal));
   GlobalFree(hDat);
   _lclose(hf);
   return TRUE;
failed:
   if( lpDat )
      GlobalUnlock(hDat);
   if( hDat )
      GlobalFree(hDat);
   if( hf != HFILE_ERROR )
      _lclose(hf);
   return FALSE;
}

void LOCALFUNC OpenDIBFile( HWND hwnd, LPCSTR lpstrFileName )
// read DIB file, updates title and display
{
   char szTitle[80] = "256 Color BMP Viewer";
   HPALETTE hPal = GetProp(hwnd,"palette");
   HBITMAP hbmp = GetProp(hwnd,"bmp");
   if(hPal) {
      DeleteObject(hPal);
      RemoveProp(hwnd,"palette");
   }
   if(hbmp) {
      DeleteObject(hbmp);
      RemoveProp(hwnd,"bmp");
   }
   if( lpstrFileName ) {
      ReadDIBFile(hwnd,lpstrFileName);
      lstrcat(szTitle," - ");
      GetFileTitle(lpstrFileName,szTitle+lstrlen(szTitle),
         sizeof(szTitle)-lstrlen(szTitle));
   }
   SetWindowText(hwnd,szTitle);
   InvalidateRect(hwnd,NULL,TRUE);
}


void LOCALFUNC OpenFileDlg( HWND hwnd )
// displays Open File dialog
{
   char szFileName[80] = "";
   static OPENFILENAME ofn;

   ofn.lStructSize = sizeof(ofn);
   ofn.hwndOwner = hwnd;
   ofn.hInstance = hInst;
   ofn.lpstrFilter = "bitmaps\000*.bmp;*.dib;*.rle\000";
   ofn.lpstrFile = szFileName;
   ofn.nMaxFile = sizeof(szFileName);
   ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
   ofn.lpstrDefExt = "BMP";
   if( GetOpenFileName(&ofn) )
      SendMessage(hwnd,WM_OPENFILE,0,(LPARAM)(LPSTR)szFileName);
}

int LOCALFUNC RealizeMyPalette( HWND hwnd )
// realize palette to screen DC, return number of changed entries
{
   HDC hdc = GetDC(hwnd);
   HPALETTE hPal = GetProp(hwnd,"palette");
   int i = 0;
   if(hPal) {
      hPal = SelectPalette(hdc,hPal,FALSE);
      i = RealizePalette(hdc);
      SelectPalette(hdc,hPal,FALSE);
      ReleaseDC(hwnd,hdc);
   }
   return i;
}

LRESULT CALLBACK _export MainWndProc( HWND hwnd, UINT msg,
   WPARAM wParam, LPARAM lParam )
{
   switch(msg) {

      case WM_DESTROY:
         OpenDIBFile(hwnd,NULL);
         PostQuitMessage(0);
         return 0;

      case WM_PAINT:
         return WMPaint(hwnd);

      case WM_PALETTECHANGED:
         if( (HWND)wParam != hwnd && GetProp(hwnd,"palette") )
            if( RealizeMyPalette(hwnd) )
               InvalidateRect(hwnd,NULL,TRUE);
         return 0;

      case WM_QUERYNEWPALETTE: {
         if(RealizeMyPalette(hwnd)) {
            InvalidateRect(hwnd,NULL,TRUE);
            return TRUE;
         }
         return 0;
      }

      case WM_OPENFILE:
         OpenDIBFile(hwnd,(LPSTR)lParam);
         return 0;

      case WM_COMMAND:
         switch(wParam) {
            case CM_EXIT:
               SendMessage(hwnd,WM_CLOSE,0,0);
               return 0;
            case CM_FILEOPEN:
               OpenFileDlg(hwnd);
               return 0;
         }
         return 0;

   }
   return DefWindowProc(hwnd,msg,wParam,lParam);
}

int MessagePump(void)
{
   MSG msg;
   while( GetMessage(&msg,NULL,0,0) ) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   return msg.wParam;
}

#pragma argsused
int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,
                    LPSTR lpstrCmdLine, int nCmdShow )
{
   char szClassName[] = "256BmpDemo";
   HWND hwnd;
   hInst = hInstance;
   if(!hPrevInst) {
      WNDCLASS wc;
      memset(&wc,0,sizeof(wc));
      wc.style         = CS_HREDRAW|CS_VREDRAW;
      wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
      wc.hCursor       = LoadCursor(NULL,IDC_ARROW);
      wc.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
      wc.lpfnWndProc   = MainWndProc;
      wc.lpszClassName = szClassName;
      wc.lpszMenuName  = MAKEINTRESOURCE(MENU_MAIN);
      wc.hInstance     = hInst;
      RegisterClass(&wc);
   }
   hwnd = CreateWindow(szClassName,"256 Color Bitmap",
                       WS_OVERLAPPEDWINDOW,
                       CW_USEDEFAULT,CW_USEDEFAULT,500,500,
                       NULL,NULL,hInst,NULL);
   if(hwnd) {
      if( lstrlen(lpstrCmdLine) )
         SendMessage(hwnd,WM_OPENFILE,0,(LPARAM)lpstrCmdLine);
      ShowWindow(hwnd,nCmdShow);
      UpdateWindow(hwnd);
      return MessagePump();
   }
   return -1;
}

Listing for bmp256.rh:

/* bmp256.rh */
#define MENU_MAIN     1001
#define CM_FILEOPEN   102
#define CM_EXIT       101
Listing for bmp256.rc:
/* bmp256.rc */
#include "bmp256.rh"

MENU_MAIN MENU 
{
 POPUP "&File"
 {
  MENUITEM "&Open...", CM_FILEOPEN
  MENUITEM "E&xit", CM_EXIT
 }
}

Listing for bmp256.def:

NAME        BMP256
DESCRIPTION "256 Color DIB demo - Copyright 1995 Robert Mashlan"
EXETYPE     WINDOWS
CODE        LOADONCALL MOVEABLE DISCARDABLE
DATA        PRELOAD MOVEABLE MULTIPLE
HEAPSIZE    1024
STACKSIZE   8196

Copyright 1995 Robert Mashlan
Return to Windows Developer FAQ - Graphics
Comments?
libwmf-0.2.8.4/doc/caolan/Arc.html0000644000077100007710000000273107260330366016110 0ustar fjffjf00000000000000 META_ARC

NAME

META_ARC

NEAREST API CALL

#include <windows.h>

BOOL32 Arc
(
    HDC32 hdc,
    INT32 left,
    INT32 top,
    INT32 right,
    INT32 bottom,
    INT32 xstart,
    INT32 ystart,
    INT32 xend,
    INT32 yend
);

DESCRIPTION

U16 array noValue
0 yend, y of endpoint
1 xend, x of endpoint
2 ystart, y of endpoint
3xstart, x of endpoint
4bottom, bottom of bounding box
5right, right of bounding box
6top, top of bounding box
7left, left of bounding box
left, right, top and bottom are the extents of the ellipse of which the arc is a part
xstart,ystart define a point from which you draw an imaginary line between it and the center of the ellipse, where that line intersects the ellipse is the starting part of the arc
xend,yend similiarly define the end of the arc.

This is quite different from how X, and other drawing lib's define an Arc, and its somewhat awkward to convert from it to X's mechanism, see the X bindings for libwmf for info on that.

back libwmf-0.2.8.4/doc/caolan/BitBlt.html0000644000077100007710000000142307260330366016560 0ustar fjffjf00000000000000 BitBlt - BitBlt32 (GDI32.10)

NAME

BitBlt - BitBlt32 (GDI32.10)

SYNOPSIS

#include <windows.h>

BOOL32 BitBlt
(
	HDC32 hdcDst,
	INT32 xDst,
	INT32 yDst,
	INT32 width,
	INT32 height,
	HDC32 hdcSrc,
	INT32 xSrc,
	INT32 ySrc,
	DWORD rop
);

DESCRIPTION

BitBlt32 (GDI32.10).

SEE ALSO

PatBlt , StretchBlt , MaskBlt , PlgBlt

back libwmf-0.2.8.4/doc/caolan/Bmpfrmat.html0000644000077100007710000010136307260330366017154 0ustar fjffjf00000000000000 BMP Format

Title:

BMP Format

Subject:

Windows Bitmap File Format Specifications

Author:

Wim Wouters

Version:

V1.1

 

Table of Contents

Table of Contents

Introduction

Bitmap File Format

General

BMP Contents

Field Details

Height Field

Bits Per Pixel Field

Compression Field

Colors Field

Important Colors Field

 

Introduction

This document describes the Microsoft Windows and IBM OS/2 picture bitmap files, called Bitmaps or BMP files. Most of the descriptions of the BMP file concentrate on the Microsoft Windows BMP structures like BMPINFOHEADER and BMPCOREINFO , but only a few describe the file contents on byte level. This information is therefor only intended to be used in applications where direct reading and writing of a BMP file is required.

Bitmap File Format

The following chapters contain the detailed information on the contents of the BMP file. First more general information will be given regarding the byte order and file alignment. The second chapter will concentrate on the byte-level contents of a BMP file. The third chapter will elaborate on this chapter and explain some of the concepts - like compression - and/or values in detail.

General

The BMP file has been created by Microsoft and IBM and is therefor very strictly bound to the architecture of the main hardware platform that both companies support: the IBM compatible PC. This means that all values stored in the BMP file are in the Intel format, sometimes also called the Little Endian format because of the byte order that an Intel processor uses internally to store values.

 

The BMP files are the way, Windows stores bit mapped images. The BMP image data is bit packed but every line must end on a dword boundary - if thats not the case, it must be padded with zeroes. BMP files are stored bottom-up, that means that the first scan line is the bottom line.

 

The BMP format has four incarnations, two under Windows (new and old) and two under OS/2, all are described here.

BMP Contents

The following table contains a description of the contents of the BMP file. For every field, the file offset, the length and the contents will be given. For a more detailed discussion, see the following chapters.

 

Offset

Field

Size

Contents

0000h

Identifier

2 bytes

The characters identifying the bitmap. The following entries are possible:

 

BM - Windows 3.1x, 95, NT,

BA - OS/2 Bitmap Array

CI - OS/2 Color Icon

CP - OS/2 Color Pointer

IC - OS/2 Icon

PT - OS/2 Pointer

0002h

File Size

1 dword

Complete file size in bytes.

0006h

Reserved

1 dword

Reserved for later use.

000Ah

Bitmap Data Offset

1 dword

Offset from beginning of file to the beginning of the bitmap data.

000Eh

Bitmap Header Size

1 dword

Length of the Bitmap Info Header used to describe the bitmap colors, compression, The following sizes are possible:

 

28h - Windows 3.1x, 95, NT,

0Ch - OS/2 1.x

F0h - OS/2 2.x

0012h

Width

1 dword

Horizontal width of bitmap in pixels.

0016h

Height

1 dword

Vertical height of bitmap in pixels.

001Ah

Planes

1 word

Number of planes in this bitmap.

001Ch

Bits Per Pixel

1 word

Bits per pixel used to store palette entry information. This also identifies in an indirect way the number of possible colors. Possible values are:

1 - Monochrome bitmap

4 - 16 color bitmap

8 - 256 color bitmap

16 - 16bit (high color) bitmap

24 - 24bit (true color) bitmap

32 - 32bit (true color) bitmap

001Eh

Compression

1 dword

Compression specifications. The following values are possible:

0 - none (Also identified by BI_RGB)

1 - RLE 8-bit / pixel (Also identified by BI_RLE4)

2 - RLE 4-bit / pixel (Also identified by BI_RLE8)

3 - Bitfields (Also identified by BI_BITFIELDS)

0022h

Bitmap Data Size

1 dword

Size of the bitmap data in bytes. This number must be rounded to the next 4 byte boundary.

0026h

HResolution

1 dword

Horizontal resolution expressed in pixel per meter.

002Ah

VResolution

1 dword

Vertical resolution expressed in pixels per meter.

002Eh

Colors

1 dword

Number of colors used by this bitmap. For a 8-bit / pixel bitmap this will be 100h or 256.

0032h

Important Colors

1 dword

Number of important colors. This number will be equal to the number of colors when every color is important.

0036h

Palette

N * 4 byte

The palette specification. For every entry in the palette four bytes are used to describe the RGB values of the color in the following way:

1 byte for blue component

1 byte for green component

1 byte for red component

1 byte filler which is set to 0 (zero)

0436h

Bitmap Data

x bytes

Depending on the compression specifications, this field contains all the bitmap data bytes which represent indices in the color palette.

 

 

Note: The following sizes were used in the specification above:

 

Size

# bytes

Sign

char

1

signed

word

2

unsigned

dword

4

unsigned

Field Details

Some of the fields require some more information. The following chapters will try to provide this information:

Height Field

The Height field identifies the height of the bitmap in pixels. In other words, it describes the number of scan lines of the bitmap. If this field is negative, indicating a top-down DIB, the Compression field must be either BI_RGB or BI_BITFIELDS. Top-down DIBs cannot be compressed.

Bits Per Pixel Field

The Bits Per Pixel (BBP) field of the bitmap file determines the number of bits that define each pixel and the maximum number of colors in the bitmap.

 

  • When this field is equal to 1.

 

The bitmap is monochrome, and the palette contains two entries. Each bit in the bitmap array represents a pixel. If the bit is clear, the pixel is displayed with the color of the first entry in the palette; if the bit is set, the pixel has the color of the second entry in the table.

 

 

  • When this field is equal to 4.

 

The bitmap has a maximum of 16 colors, and the palette contains up to 16 entries. Each pixel in the bitmap is represented by a 4-bit index into the palette. For example, if the first byte in the bitmap is 1Fh, the byte represents two pixels. The first pixel contains the color in the second palette entry, and the second pixel contains the color in the sixteenth palette entry.

 

 

  • When this field is equal to 8.

 

The bitmap has a maximum of 256 colors, and the palette contains up to 256 entries. In this case, each byte in the array represents a single pixel.

 

 

  • When this field is equal to 16.

 

The bitmap has a maximum of 2^16 colors. If the Compression field of the bitmap file is set to BI_RGB, the Palette field does not contain any entries. Each word in the bitmap array represents a single pixel. The relative intensities of red, green, and blue are represented with 5 bits for each color component. The value for blue is in the least significant 5 bits, followed by 5 bits each for green and red, respectively. The most significant bit is not used.

 

If the Compression field of the bitmap file is set to BI_BITFIELDS, the Palette field contains three dword color masks that specify the red, green, and blue components, respectively, of each pixel. Each word in the bitmap array represents a single pixel.

 

Windows NT specific: When the Compression field is set to BI_BITFIELDS, bits set in each dword mask must be contiguous and should not overlap the bits of another mask. All the bits in the pixel do not have to be used.

 

Windows 95 specific: When the Compression field is set to BI_BITFIELDS, Windows 95 supports only the following 16bpp color masks: A 5-5-5 16-bit image, where the blue mask is 0x001F, the green mask is 0x03E0, and the red mask is 0x7C00; and a 5-6-5 16-bit image, where the blue mask is 0x001F, the green mask is 0x07E0, and the red mask is 0xF800.

 

 

  • When this field is equal to 24.

 

The bitmap has a maximum of 2^24 colors, and the Palette field does not contain any entries. Each 3-byte triplet in the bitmap array represents the relative intensities of blue, green, and red, respectively, for a pixel.

 

 

  • When this field is equal to 32.

 

The bitmap has a maximum of 2^32 colors. If the Compression field of the bitmap is set to BI_RGB, the Palette field does not contain any entries. Each dword in the bitmap array represents the relative intensities of blue, green, and red, respectively, for a pixel. The high byte in each dword is not used.

 

If the Compression field of the bitmap is set to BI_BITFIELDS, the Palette field contains three dword color masks that specify the red, green, and blue components, respectively, of each pixel. Each dword in the bitmap array represents a single pixel.

 

Windows NT specific: When the Compression field is set to BI_BITFIELDS, bits set in each dword mask must be contiguous and should not overlap the bits of another mask. All the bits in the pixel do not have to be used.

 

Windows 95 specific: When the Compression field is set to BI_BITFIELDS, Windows 95 supports only the following 32bpp color mask: The blue mask is 0x000000FF, the green mask is 0x0000FF00, and the red mask is 0x00FF0000.

Compression Field

The Compression field specifies the way the bitmap data is stored in the file. This information together with the Bits Per Pixel (BPP) field identifies the compression algorithm to follow.

 

The following values are possible in this field:

 

Value

Meaning

BI_RGB

An uncompressed format.

BI_RLE4

An RLE format for bitmaps with 4 bits per pixel. The compression format is a two-byte format consisting of a count byte followed by two word-length color indices. For more information, see the following Remarks section.

BI_RLE8

A run-length encoded (RLE) format for bitmaps with 8 bits per pixel. The compression format is a two-byte format consisting of a count byte followed by a byte containing a color index. For more information, see the following Remarks section.

BI_BITFIELDS

Specifies that the bitmap is not compressed and that the color table consists of three double word color masks that specify the red, green, and blue components, respectively, of each pixel. This is valid when used with 16- and 32- bits-per-pixel bitmaps.

 

When the Compression field is BI_RLE8, the bitmap is compressed by using a run-length encoding (RLE) format for an 8-bit bitmap. This format can be compressed in encoded or absolute modes. Both modes can occur anywhere in the same bitmap.

 

  • Encoded mode consists of two bytes:

 

The first byte specifies the number of consecutive pixels to be drawn using the color index contained in the second byte. In addition, the first byte of the pair can be set to zero to indicate an escape that denotes an end of line, end of bitmap, or delta. The interpretation of the escape depends on the value of the second byte of the pair, which can be one of the following:

 

0

End of line.

1

End of bitmap.

2

Delta. The two bytes following the escape contain unsigned values indicating the horizontal and vertical offsets of the next pixel from the current position.

 

  • Absolute mode.

 

The first byte is zero and the second byte is a value in the range 03H through FFH. The second byte represents the number of bytes that follow, each of which contains the color index of a single pixel. When the second byte is 2 or less, the escape has the same meaning as in encoded mode. In absolute mode, each run must be aligned on a word boundary.

 

 

 

The following example shows the hexadecimal values of an 8-bit compressed bitmap.

 

03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01 02 78 00 00 09 1E 00 01

 

This bitmap would expand as follows (two-digit values represent a color index for a single pixel):

 

04 04 04

06 06 06 06 06

45 56 67

78 78

move current position 5 right and 1 down

78 78

end of line

1E 1E 1E 1E 1E 1E 1E 1E 1E

end of RLE bitmap

 

 

When the Compression field is BI_RLE4, the bitmap is compressed by using a run-length encoding format for a 4-bit bitmap, which also uses encoded and absolute modes:

 

  • In encoded mode.

 

The first byte of the pair contains the number of pixels to be drawn using the color indices in the second byte. The second byte contains two color indices, one in its high-order four bits and one in its low-order four bits. The first of the pixels is drawn using the color specified by the high-order four bits, the second is drawn using the color in the low-order four bits, the third is drawn using the color in the high-order four bits, and so on, until all the pixels specified by the first byte have been drawn.

 

  • In absolute mode.

 

The first byte is zero, the second byte contains the number of color indices that follow, and subsequent bytes contain color indices in their high- and low-order four bits, one color index for each pixel. In absolute mode, each run must be aligned on a word boundary.

The end-of-line, end-of-bitmap, and delta escapes described for BI_RLE8 also apply to BI_RLE4 compression.

 

 

The following example shows the hexadecimal values of a 4-bit compressed bitmap.

 

03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01 04 78 00 00 09 1E 00 01

 

This bitmap would expand as follows (single-digit values represent a color index for a single pixel):

 

0 4 0

0 6 0 6 0

4 5 5 6 6 7

7 8 7 8

move current position 5 right and 1 down

7 8 7 8

end of line

1 E 1 E 1 E 1 E 1

end of RLE bitmap

Colors Field

The Colors field specifies the number of color indices in the color table that are actually used by the bitmap. If this value is zero, the bitmap uses the maximum number of colors corresponding to the value of the BBP field for the compression mode specified by the Compression field.

 

If the Colors field is nonzero and the BBP field less than 16, the Colors field specifies the actual number of colors the graphics engine or device driver accesses.

 

If the BBP field is 16 or greater, then Colors field specifies the size of the color table used to optimize performance of Windows color palettes.

 

If BBP equals 16 or 32, the optimal color palette starts immediately following the three double word masks.

If the bitmap is a packed bitmap (a bitmap in which the bitmap array immediately follows the bitmap header and which is referenced by a single pointer), the Colors field must be either 0 or the actual size of the color table.

Important Colors Field

The Important Colors field specifies the number of color indices that are considered important for displaying the bitmap. If this value is zero, all colors are important.

 

libwmf-0.2.8.4/doc/caolan/Chord.html0000644000077100007710000000105607260330366016441 0ustar fjffjf00000000000000 META_CHORD

NAME

META_CHORD

NEAREST API CALL

#include <windows.h>
BOOL32 Chord
(
	HDC32 hdc,
	INT32 left,
	INT32 top,
	INT32 right,
	INT32 bottom,
	INT32 xstart,
	INT32 ystart,
	INT32 xend,
	INT32 yend
);

DESCRIPTION

The exact same as an arc, only the arc is closed, and may be filled with a brush.

back

libwmf-0.2.8.4/doc/caolan/CreateBrushIndirect.html0000644000077100007710000000217007260330366021271 0ustar fjffjf00000000000000 META_CREATEBRUSHINDIRECT

NAME

META_CREATEBRUSHINDIRECT

NEAREST API CALL

#include <windows.h>
HBRUSH32 CreateBrushIndirect(const LOGBRUSH32 *brush);

typedef struct tagLOGBRUSH
{
	UINT        lbStyle;
	COLORREF    lbColor;
	LONG        lbHatch;
} LOGBRUSH;

DESCRIPTION

U16 Value
0 lbStyle
1 lbColor
2
3 lbHatch
lbColor is the color of the brush, lbStyle can be one of BS_SOLID,BS_NULL & BS_HATCHED, there are others, but i dont think they can show up in metafiles

if lbStyle is not hatched then lbHatch is ignored, otherwise lbHatch is one of HS_HORIZONTAL, HS_VERTICAL, HS_FDIAGONAL, HS_BDIAGONAL, HS_CROSS, HS_DIAGCROSS. See the source for details of these.

This operation adds an entry for itself in the object list.

back

libwmf-0.2.8.4/doc/caolan/CreatePenIndirect.html0000644000077100007710000000311407260330366020727 0ustar fjffjf00000000000000 META_CREATEPENINDIRECT

NAME

META_CREATEPENINDIRECT

NEAREST API CALL

#include <windows.h>
HPEN32 CreatePenIndirect(const LOGPEN32 *pen);

typedef struct tagLOGPEN
{
	UINT        lopnStyle;
	POINT       lopnWidth;
	COLORREF    lopnColor;
} LOGPEN;

DESCRIPTION

U16 Value
0 lopnStyle
1 lopnWidth
2 lopnColor
3
lopnColor is the color of the pen, lopnWidth is the width of the pen, if the pen's width is > 1 but the lopnStyle is not solid, then lopnStyle is ignored and set to solid anyway.
lopnStyle can be one of PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT, PS_NULL, PS_INSIDEFRAME, PS_USERSTYLE, PS_ALTERNATE . Check out the source for that they actually mean. Theres also a set of flags and masks that can be found in lopnStyle as well that set the end and join styles of lines drawn with a pen, they are PS_STYLE_MASK, PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE, PS_ENDCAP_FLAT, PS_ENDCAP_MASK, PS_JOIN_ROUND, PS_JOIN_BEVEL, PS_JOIN_MITER, PS_JOIN_MASK, PS_COSMETIC, PS_GEOMETRIC, PS_TYPE_MASK, again check out the source to figure these out.

This operation adds an entry for itself in the object list.

back

libwmf-0.2.8.4/doc/caolan/CreateRegion.html0000644000077100007710000000265407260330366017756 0ustar fjffjf00000000000000 META_CREATEREGION

NAME

META_CREATEREGION

NEAREST API CALL

#include <windows.h>
HRGN32 CreateRectRgn
(
	INT32 left,
	INT32 top,
	INT32 right,
	INT32 bottom
);

DESCRIPTION

Now on this one, i havent a clue, so heres what the wine source has to say on the matter, i blithered for a while and gave up and just dumped the wine source into libwmf and waved a dead chicken over it, and it appears to work for rectangular regions so....
/*
 *  The layout of the record looks something like this:
 *  
 *   rdParam    meaning
 *   0      Always 0?
 *   1      Always 6?
 *   2      Looks like a handle? - not constant
 *   3      0 or 1 ??
 *   4      Total number of bytes
 *   5      No. of seperate bands = n [see below]
 *   6      Largest number of x co-ords in a band
 *   7-10       Bounding box x1 y1 x2 y2
 *   11-...     n bands
 *
 *   Regions are divided into bands that are uniform in the
 *   y-direction. Each band consists of pairs of on/off x-coords and is
 *   written as
 *      m y0 y1 x1 x2 x3 ... xm m
 *   into successive rdParam[]s.
 *
 *   This is probably just a dump of the internal RGNOBJ?
 *
 *   HDMD - 18/12/97
 *
 */

This operation adds an entry for itself in the object list.

back

libwmf-0.2.8.4/doc/caolan/DeleteObject.html0000644000077100007710000000133707260330366017735 0ustar fjffjf00000000000000 META_DELETEOBJECT

NAME

META_DELETEOBJECT

NEAREST API CALL

#include <windows.h>
BOOL32 DeleteObject(HGDIOBJ32 obj)

DESCRIPTION

U16 Value
0 object no
object no is the number of the object to delete, this frees up the number of the object to be reused by any of the Create operands, e.g CreatePenIndirect, SelectObject has more details on objects.

back

libwmf-0.2.8.4/doc/caolan/DibBitBlt.html0000644000077100007710000000653507260330366017210 0ustar fjffjf00000000000000 META_DIBBITBLT

NAME

META_DIBBITBLT

NEAREST API CALL

#include <windows.h>

BOOL32 BitBlt
(
    HDC32 hdcDst,
    INT32 xDst,
    INT32 yDst,
    INT32 width,
    INT32 height,
    HDC32 hdcSrc,
    INT32 xSrc,
    INT32 ySrc,
    DWORD rop
);

DESCRIPTION

DIBBITBLT is the operand that BitBlt converts to automatically when used with a metafile. It has two forms so watch out.

DibBitBlt basically copies a dib into a dest location transformed by the ROP, but it can also be used with ROP's that dont use the src at all.

Form 1
In the scenario where hdcSrc is NULL, then the arguments are as follows
U16Value
0rop
1
2ySrc
3xSrc
4???, probably nothing
5height
6width
7yDst
8xDst

Form 2
In the scenario where hdcSrc is not NULL, then the arguments are as follows
U16Value
0rop
1
2ySrc
3xSrc
4height
5width
6yDst
7xDst
8 until the endthe src dib

rop is the ROP.
ySrc is the starting y coord to copy from (in log units i suppose) in the dib (if it exists).
xSrc it the x coord to copy from (in log units i suppose) in the dib (if it exists).
height is height in logical units of the destination rectangle
width is width in logical units of the destination rectangle
yDst is the y pos in logical units of the rectangle to copy to in the destination window
xDst is the x pos in logical units of the rectangle to copy to in the destination window

The primary purpose of this is to copy a dib to a given location, but it can be used to do all sorts of ROP tricks as well or instead.

back

Some realworld examples and thoughts at the time on DIBBITBLT


DIBBITBLT is created from a BitBlt call, i havent seen BITBLT in the wild at
all and suspect that it doesnt exist.

theres two sets of possibilites for the parameters.
one that fits the layout of the call which is used 
when the src is NULL, i.e....

head
40 09

0 }__dwRop
1 }

2 srcy  
00 00

3 srcx  
00 00

4       ?
00 00

5 height
50 00

6 width
50 00

7 dest y
00 00

8 dest x
5a 00

and the other when src is not NULL, with the calls that use
src, where in effect argument 4 (the src dc) is missing
and the dib placed after the end of the parameters. I suppose
you can tell one from the other either by looking at the
no of parameters, or by seeing if no 4 is 0, or by seeing
if the dwROP requires a src, i use approach one, as its simple.




head
40 09


0 }__dwROP 
1 }
09 0a fb 00

2 srcy
00 00

3 srcx
00 00

4 dest height
50 00

5 dest width
50 00

6 dest y
b4 00

7 dest x
b4 00

8 the dib itself.
28 00

9
00 00

10
50 00

11
00 00

12
50 00

13
00 00

01 00

Caolan
libwmf-0.2.8.4/doc/caolan/DibCreatePatternBrush.html0000644000077100007710000000103607260330366021564 0ustar fjffjf00000000000000 META_DIBCREATEPATTERNBRUSH

NAME

META_SETBKCOLOR

NEAREST API CALL

#include <windows.h>
HBRUSH32 CreatePatternBrush(HBITMAP32 hbitmap);

DESCRIPTION

U16 Value
0 until end the dib
The bytes of the dib that makes up the brush.

back

libwmf-0.2.8.4/doc/caolan/DibStretchBlt.html0000644000077100007710000000220707260330366020076 0ustar fjffjf00000000000000 META_DIBSTRETCHBLT

NAME

META_DIBSTRETCHBLT

NEAREST API CALL

#include <windows.h>
BOOL32 StretchBlt
(
	HDC32 hdcDst,
	INT32 xDst,
	INT32 yDst,
	INT32 widthDst,
	INT32 heightDst,
	HDC32 hdcSrc,
	INT32 xSrc,
	INT32 ySrc,
	INT32 widthSrc,
	INT32 heightSrc,
	DWORD rop
);

DESCRIPTION

U16Value
0rop
1
2ySrc
3xSrc
4src height
5src width
6dest height
7dest width
8yDest
9xDest
10 until the endthe full dib
DibStretchBlt stretches a dib of src height and src width (from location ySrc and xSrc ?) to the destination x and y, with the dest width and height, transformed by the rop.

back

libwmf-0.2.8.4/doc/caolan/Ellipse.html0000644000077100007710000000137307260330366017001 0ustar fjffjf00000000000000 META_ELLIPSE

NAME

META_ELLIPSE

NEAREST API CALL

#include <windows.h>
BOOL32 Ellipse
(
HDC32 hdc,
INT32 left,
INT32 top,
INT32 right,
INT32 bottom
);

DESCRIPTION

U16 array noValue
0bottom, bottom of bounding box
1right, right of bounding box
2top, top of bounding box
3left, left of bounding box
left, right, top and bottom are the extents of the ellipse.

back libwmf-0.2.8.4/doc/caolan/ExcludeClipRect.html0000644000077100007710000000150207260330366020415 0ustar fjffjf00000000000000 META_EXCLUDECLIPRECT

NAME

META_EXCLUDECLIPRECT

NEAREST API CALL

#include <windows.h>
INT32 ExcludeClipRect
(
	HDC32 hdc,
	INT32 left,
	INT32 top,
	INT32 right,
	INT32 bottom
);

DESCRIPTION

DESCRIPTION

U16 array noValue
0 bottom
1 right
2 top
3left
top, left, right and bottom define the points of the region to be deleted from the clipping region, the resultant clipping region is the original region minus this region.

back

libwmf-0.2.8.4/doc/caolan/ExtFloodFill.html0000644000077100007710000000170207260330366017733 0ustar fjffjf00000000000000 META_EXTFLOODFILL

NAME

META_EXTFLOODFILL

NEAREST API CALL

#include <windows.h>
BOOL32 ExtFloodFill
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	COLORREF color,
	UINT32 fillType
);

DESCRIPTION

U16 Value
0 fillType
1 COLORREF
2
3 y
4 x
The same as FloodFill, except that fillType is prepended, which can be one of FLOODFILLBORDER or FLOODFILLSURFACE. FLOODFILLBORDER makes ExtFloodFill function as FloodFill, FLOODFILLSURFACE converts the area of color that the point x,y is set to, to the new color.

back

libwmf-0.2.8.4/doc/caolan/ExtTextOut.html0000644000077100007710000000410607260330366017476 0ustar fjffjf00000000000000 META_EXTTEXTOUT

NAME

META_EXTTEXTOUT

NEAREST API CALL

#include <windows.h>
BOOL32 ExtTextOutA
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	UINT32 flags,
	const RECT32 *lprect,
	LPCSTR str,
	UINT32 count,
	const INT32 *lpDx
);

DESCRIPTION

U16 Value
0 y
1 x
2 count
3 flag
If flag & ETO_CLIPPED is true then the following parameters are...
U16 Value
4 x1
5 y1
6 x2
7 y2
In either case the next parameters are
U16 Value
next parameter, for a count of parameter[2]/2 two chars of the string
There may be extra parameters after the end of the string , this array is known as lpDx and each element is the extra distance from one character to the next.
U16 Value
each next parameter, until the end of the record
count is the number of characters in the string, as each char is only a 8bit number, two chars exist in each 16bit parameter entry.
flag is one or both of ETO_OPAQUE and ETO_CLIPPED, the first means that the background of the box that the text is typed in is OPAQUE, and the usual opaque rules apply, (SetBkMode. The second means that the text is clipped to the rectangle supplied. x1, y1, x2 and y2, are the points of the optional clipping rectangle, included if flags has ETO_CLIPPED set
Then the string follows, and then there is an optional array of widths, each 16bit width is the distance from one character to the next.

back

libwmf-0.2.8.4/doc/caolan/FillRgn.html0000644000077100007710000000121407260330366016733 0ustar fjffjf00000000000000 META_FILLREGION

NAME

META_FILLREGION

NEAREST API CALL

#include <windows.h>
BOOL32 FillRgn
(
HDC32 hdc,
HRGN32 hrgn,
HBRUSH32 hbrush
);

DESCRIPTION

U16 array noValue
0 region object no
1 brush object no
FillRgn fills the region identified by the first param with the brush identified with the second param.

back libwmf-0.2.8.4/doc/caolan/FloodFill.html0000644000077100007710000000140707260330366017254 0ustar fjffjf00000000000000 META_FLOODFILL

NAME

META_FLOODFILL

NEAREST API CALL

#include <windows.h>
BOOL32 FloodFill
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	COLORREF color
);

DESCRIPTION

U16 Value
0 COLORREF
1
2 y
3 x
At the point x,y FloodFill fills with the color COLORREF in all directions until it meets a border of the same color as COLORREF. see ExtFloodFill

back libwmf-0.2.8.4/doc/caolan/FrameRgn.html0000644000077100007710000000153607260330366017106 0ustar fjffjf00000000000000 META_FRAMEREGION

NAME

META_FRAMEREGION

NEAREST API CALL

#include <windows.h>
BOOL32 FrameRgn
(
	HDC32 hdc,
	HRGN32 hrgn,
	HBRUSH32 hbrush,
	INT32 nWidth,
	INT32 nHeight
);

DESCRIPTION

U16 array noValue
0 height
1 width
2 region object no
3 brush object no
FrameRgn draws a border around region identified by the first param with the brush identified with the second param. width is the width of vertical lines, and height is the height of horizontal lines.

back libwmf-0.2.8.4/doc/caolan/IntersectClipRect.html0000644000077100007710000000147407260330366020774 0ustar fjffjf00000000000000 META_INTERSECTCLIPRECT

NAME

META_INTERSECTCLIPRECT

NEAREST API CALL

#include <windows.h>
INT32 IntersectClipRect
(
	HDC32 hdc,
	INT32 left,
	INT32 top,
	INT32 right,
	INT32 bottom
);

DESCRIPTION

DESCRIPTION

U16 array noValue
0 bottom
1 right
2 top
3left
top, left, right and bottom define the points of the clipping region, the resultant clipping region is the intersection of this region and the original region.

back

libwmf-0.2.8.4/doc/caolan/InvertRgn.html0000644000077100007710000000104607260330366017317 0ustar fjffjf00000000000000 META_INVERTREGION

NAME

META_INVERTREGION

NEAREST API CALL

#include <windows.h>
BOOL32 InvertRgn
(
HDC32 hdc,
HRGN32 hrgn
);

DESCRIPTION

U16 array noValue
0 region object no
InvertRgn inverts the region identified by the first param.

back libwmf-0.2.8.4/doc/caolan/LineTo.html0000644000077100007710000000124707260330366016576 0ustar fjffjf00000000000000 META_LINETO

NAME

META_LINETO

NEAREST API CALL

#include <windows.h>
BOOL32 LineTo
(
	HDC32 hdc,
	INT32 x,
	INT32 y
);

DESCRIPTION

U16 Value
0 y
1 x
LineTo draws a line from the current position to the specified position (in logical units).
The current position is set with MoveTo (and some others ?)

back libwmf-0.2.8.4/doc/caolan/MoveTo.html0000644000077100007710000000112507260330366016610 0ustar fjffjf00000000000000 META_MOVETO

NAME

META_MOVETO

NEAREST API CALL

#include <windows.h>
BOOL32 MoveToEx
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	LPPOINT32 pt
);

DESCRIPTION

U16 Value
0 y
1 x
MoveTo moves the current position to the specified position (in logical units).

back libwmf-0.2.8.4/doc/caolan/OffsetClipRgn.html0000644000077100007710000000107407260330366020107 0ustar fjffjf00000000000000 META_OFFSETCLIPRGN

NAME

META_OFFSETCLIPRGN

NEAREST API CALL

#include <windows.h>
INT32 OffsetClipRgn
(
	HDC32 hdc,
	INT32 x,
	INT32 y
);

DESCRIPTION

U16 array noValue
0 y
1 x
The clipping region is moved by the values x and y.

back

libwmf-0.2.8.4/doc/caolan/OffsetViewportOrg.html0000644000077100007710000000125207260330366021036 0ustar fjffjf00000000000000 META_OFFSETVIEWPORTORG

NAME

META_OFFSETVIEWPORTORG

NEAREST API CALL

#include <windows.h>
BOOL32 OffsetViewportOrgEx
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	LPPOINT32 pt
);

DESCRIPTION

U16 Value
0 y diff
1 x diff
OffsetViewportOrg adds the arguments to the physical window origin, see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/OffsetWindowOrg.html0000644000077100007710000000124107260330366020464 0ustar fjffjf00000000000000 META_OFFSETWINDOWORG

NAME

META_OFFSETWINDOWORG

NEAREST API CALL

#include <windows.h>
BOOL32 OffsetWindowOrgEx
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	LPPOINT32 pt
);

DESCRIPTION

U16 Value
0 y diff
1 x diff
OffsetWindowOrg adds the arguments to the logical window origin, see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/PaintRgn.html0000644000077100007710000000110407260330366017116 0ustar fjffjf00000000000000 META_PAINTREGION

NAME

META_PAINTREGION

NEAREST API CALL

#include <windows.h>
BOOL32 PaintRgn
(
	HDC32 hdc,
	HRGN32 hrgn
);

DESCRIPTION

U16 array noValue
0 region object no
PaintRgn fills the region identified by the first param with the currently selected brush.

back libwmf-0.2.8.4/doc/caolan/PatBlt.html0000644000077100007710000000157607260330366016577 0ustar fjffjf00000000000000 META_PATBLT

NAME

META_PATBLT

NEAREST API CALL

#include <windows.h>
BOOL32 PatBlt
(
HDC32 hdc,
INT32 left,
INT32 top,
INT32 width,
INT32 height,
DWORD rop
);

DESCRIPTION

U16 Value
0 ROP
1
2 height
3 width
4 top
5 left
PalBlt combines a pattern i.e the currently selected brush, with the destination, which is defined by top,left,width and height.
The ROP defines how they should be combined. see rop

back libwmf-0.2.8.4/doc/caolan/Pie.html0000644000077100007710000000273007260330366016117 0ustar fjffjf00000000000000 META_PIE

NAME

META_PIE

NEAREST API CALL

#include <windows.h>

BOOL32 Pie
(
    HDC32 hdc,
    INT32 left,
    INT32 top,
    INT32 right,
    INT32 bottom,
    INT32 xstart,
    INT32 ystart,
    INT32 xend,
    INT32 yend
);

DESCRIPTION

U16 array noValue
0 yend, y of endpoint
1 xend, x of endpoint
2 ystart, y of endpoint
3xstart, x of endpoint
4bottom, bottom of bounding box
5right, right of bounding box
6top, top of bounding box
7left, left of bounding box
left, right, top and bottom are the extents of the ellipse of which the pie is a part
xstart,ystart define a point from which you draw an imaginary line between it and the center of the ellipse, where that line intersects the ellipse is the starting part of the arc
xend,yend similiarly define the end of the arc.

This is quite different from how X, and other drawing lib's define an Arc, and its somewhat awkward to convert from it to X's mechanism, see the X bindings for libwmf for into on that.

back libwmf-0.2.8.4/doc/caolan/PolyPolygon.html0000644000077100007710000000172507260330366017700 0ustar fjffjf00000000000000 META_POLYPOLYGON

NAME

META_POLYPOLYGON

NEAREST API CALL

#include <windows.h>
(
	HDC32 hdc,
	const POINT32 *pt,
	const INT32 *counts,
	UINT32 polygons
);

DESCRIPTION

U16 array noValue
0 no of polygons
1 to 1 + para[0] number of points in each polygon
next paramater until the end a y point, followed by an x point
PolyPolygon, is a list of polygons, for filled polygons SetPolyFillMode affects how the polygon is filled.
the number of polygons is recorded, followed by the number of points in each polygon, and then a long sequence of all the points of all the polygons.

back libwmf-0.2.8.4/doc/caolan/Polygon.html0000644000077100007710000000140007260330366017022 0ustar fjffjf00000000000000 META_POLYGON

NAME

META_POLYGON

NEAREST API CALL

#include <windows.h>
BOOL32 Polygon
(
	HDC32 hdc,
	const POINT32 *pt,
	INT32 count
);

DESCRIPTION

U16 array noValue
0 no of points
1 each odd until the end x of the point
2 each even until the end y of the point
Polygon, is a list of points, for filled polygons SetPolyFillMode affects how the polygon is filled.

back libwmf-0.2.8.4/doc/caolan/Polyline.html0000644000077100007710000000133007260330366017170 0ustar fjffjf00000000000000 META_POLYLINE

NAME

META_POLYLINE

NEAREST API CALL

#include <windows.h>
BOOL32 Polyline
(
	HDC32 hdc,
	const POINT32 *pt,
	INT32 count
);

DESCRIPTION

U16 array noValue
0 no of points
1 each odd until the end x of the point
2 each even until the end y of the point
Polyline, is a list of points, unlike polygon polyline is always unfilled, and can be open.

back libwmf-0.2.8.4/doc/caolan/Rectangle.html0000644000077100007710000000125507260330366017307 0ustar fjffjf00000000000000 META_RECTANGLE

NAME

META_RECTANGLE

NEAREST API CALL

#include <windows.h>
BOOL32 Rectangle
(
	HDC32 hdc,
	INT32 left,
	INT32 top,
	INT32 right,
	INT32 bottom
);

DESCRIPTION

U16 array noValue
0 bottom
1 right
2 top
3left
top, left, right and bottom define the points of the rectangle.

back libwmf-0.2.8.4/doc/caolan/RestoreDC.html0000644000077100007710000000135507260330366017236 0ustar fjffjf00000000000000 META_RESTOREDC

NAME

META_RESTOREDC

NEAREST API CALL

#include <windows.h>
BOOL32 RestoreDC
(
	HDC32 hdc,
	INT32 level
);

DESCRIPTION

U16 array noValue
0 level
RestoreDC restores a DC off the stack which it has been pushed by SaveDC. The value is the number of entries to be popped off the stack to find the correct one to restore. The DC'c between the top of the stack and the one to restore are discarded.

back libwmf-0.2.8.4/doc/caolan/RoundRect.html0000644000077100007710000000163307260330366017310 0ustar fjffjf00000000000000 META_ROUNDRECT

NAME

META_ROUNDRECT

NEAREST API CALL

#include <windows.h>
BOOL32 RoundRect
(
	HDC32 hdc,
	INT32 left,
	INT32 top,
	INT32 right,
	INT32 bottom,
	INT32 ell_width,
	INT32 ell_height
);

DESCRIPTION

U16 array noValue
0 ell_height
1 ell_width
2 bottom
3 right
4 top
5left
top, left, right and bottom define the points of the rectangle.
ell_width and ell_height define the width and height of each pie/arc on the corners of the round rectangle.

back libwmf-0.2.8.4/doc/caolan/SaveDC.html0000644000077100007710000000105707260330366016510 0ustar fjffjf00000000000000 META_SAVEDC

NAME

META_SAVEDC

NEAREST API CALL

#include <windows.h>
INT32 SaveDC(HDC32 hdc);

DESCRIPTION

SaveDC instructs that the current Device Context, which consists of such things as the currently selected brush and pen and so on, be pushed onto a stack, the DC can be restored with RestoreDC

back libwmf-0.2.8.4/doc/caolan/ScaleViewportExt.html0000644000077100007710000000155307260330366020654 0ustar fjffjf00000000000000 META_SCALEVIEWPORTEXT

NAME

META_SCALEVIEWPORTEXT

NEAREST API CALL

#include <windows.h>
BOOL32 ScaleViewportExtEx
(
	HDC32 hdc,
	INT32 xNum,
	INT32 xDenom,
	INT32 yNum,
	INT32 yDenom,
	LPSIZE32 size
);

DESCRIPTION

U16 Value
0 yDenom
1 yNum
2 xDenom
3 xNum
ScaleViewportExt resizes the width and height of the physical window by
width = (width * xNum) / xDenom;
height = (height * yNum) / yDenom;
see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/pics/0000755000077100007710000000000010272000327015434 5ustar fjffjf00000000000000libwmf-0.2.8.4/doc/caolan/pics/Makefile.am0000644000077100007710000000017407335242767017520 0ustar fjffjf00000000000000wmfonedocdir = @WMF_DOCDIR@/caolan wmfonepicdir = $(wmfonedocdir)/pics wmfonepic_DATA = weave.jpg EXTRA_DIST = weave.jpg libwmf-0.2.8.4/doc/caolan/pics/Makefile.in0000664000077100007710000002672610272000327017520 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/caolan/pics DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(wmfonepicdir)" wmfonepicDATA_INSTALL = $(INSTALL_DATA) DATA = $(wmfonepic_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ wmfonedocdir = @WMF_DOCDIR@/caolan wmfonepicdir = $(wmfonedocdir)/pics wmfonepic_DATA = weave.jpg EXTRA_DIST = weave.jpg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/caolan/pics/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/caolan/pics/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-wmfonepicDATA: $(wmfonepic_DATA) @$(NORMAL_INSTALL) test -z "$(wmfonepicdir)" || $(mkdir_p) "$(DESTDIR)$(wmfonepicdir)" @list='$(wmfonepic_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(wmfonepicDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(wmfonepicdir)/$$f'"; \ $(wmfonepicDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(wmfonepicdir)/$$f"; \ done uninstall-wmfonepicDATA: @$(NORMAL_UNINSTALL) @list='$(wmfonepic_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(wmfonepicdir)/$$f'"; \ rm -f "$(DESTDIR)$(wmfonepicdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(wmfonepicdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-wmfonepicDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-wmfonepicDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-strip \ install-wmfonepicDATA installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-info-am \ uninstall-wmfonepicDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/doc/caolan/pics/weave.jpg0000644000077100007710000001556707260330371017273 0ustar fjffjf00000000000000JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?Sd(o|ހ}NiLmQSA(lP_ѸҒ7F!<~SNϹ x 8P7'('؟cJaʺ7)=8Q ڀiG#9i>`yP{\ԟa@;cFo4)RG?iy>d>P6g@K6n=yTm0\~RsԼgi2A磨mbzi>Q78.ҟNH{mۓNqFWnZMcۜd)ю1?ݤ:(1o@S]?IvhؽS@yg dG֗nڜ7~T÷T&˱GT !f3OZL~qҔsHqqE=)dlzH*#QBAO!sʀ:_qCQ,Ni~`?"Ii?.=yšLcA>€{ C9';щ;?ltS1}m0?QJ<TC7ғo!G*Ps,z/IF[/Ne@c !AOHQ(OT{ RL=d܊v}1f0G 8B͎@ 2:s}sI,}HBr2çžqB:@;zy=Ax@?Tv1ҌcCqϰ=riGN>٠JAF94ciztO#>—owu{9}M!irq44Vh`?p/R句`zﺀS4 zIA ( P=?B(* 7/A!ϧZ]?( 0qI0?2z4h~"ϦM߭/򦐠e\4J7@?'G٠*yܻH7Ɠ}(#vB~cR`@όOsqiߕ.9=~p '9WK0N h3ը{>P< ǐ d)@{Ɓ?R9i{OG eI~}2)y@V֓ fǶ)qp@ҌӚB@'hr|㎾P7` 'Ab>ث 8?xC{Rn#*(*\g4aKU 2ݎF1, җ!E}GFHBIk'?~4~4@>ccnGn^TOƎ>Ԙ\gN(w jRY? 0}TqBв}3G˞.A9@ђRr4`c-3Qh}2Pw?٥sϰ2yUc@ fSΐ(*{QAпR(x޿xfqFy#Ё@eqJ1ً~:t G}$1韩s϶2pPmHM)v|٣d@ (1΂[4 .>'Q=R))NhdvRnW{4r>}~|:BI{?U!%Z76}  #OQ@f̤~7PzԽ4A>~>3G-8⌐1wӊ\yڹ?J_?wj>|{n=P? I%@>q^*A?::~t`t4G+ƀezniI*>? 7qleoqJ=  c>69+}QdzlZRu)¿t=vN,@1PB?Z0> ϾsN%7)0I|OiI Jni7.047pg(ۏ}70G:o@|C RNiw~>ϻӌP: R[8JCC@@ {KQnF[$@WGqJ3hjDϵ(۟S@P֌QGb4vn@ g ߭;ǯM'·8繠$}Ԅkh#'w|?JN[` \wA#=I€Rhs¯׭.3򨣧 8Ґ$R?_#-#NǩRdppxju<.=s@ Qʀ9vSg PW=Kn1@]ha:pA,} ҍ>4 {R,O竱8ր(p1J tq?);tr9Γϥ.x28}?\|zqPSHOr0(~~48 =??|_d(ވѼcс,}l 4HiK`c~1? }uoɠ?#;M8aAFhMnqO41ƀ ab46tnpV3U*Z}T)3+ix<@u7aMFqQP<Mp>?JQ}/ M7?JN=?J^oʍ@hz$pSKԜhG=x'4p8(8'?&T~a[9b>@'FNLg ' IzXc 3_z `Ԝß @ hz)4SBù4ұ;m 2=E'Q =x35 1E.y/n?Lg΃y4?y*Bql>F1Չ>—\P+d?_|{R4yb<0Y{◰;Rہ==b0!@/um4j\f?QIߕ.=$/Rj\oM/p(_9W*>I?ys.IcK@&q/HHs Q8$}1F6K ʀ3О)xmp[8>ew}i$9AϭseO#RzPh3>㏓,ғ9w Rf?JS>`ʑEƀ4^>Җ\E'-M_T"=I4ӿ⢀ piNl}Zʐ=z6.y$Ts/Pqրi >A*ŸYxqGlRjBr:㴼8~=!:@睬?^OC)9?y?@8gإSh{Lm0Eqʟ_F(Ġh1\p 7`dҀ@ (\z>NpOx@=I?P(HvSv.֓R>M.:{b<ũ|G@- WӉcp)?ϾC OҝsnirqʓP qʂI8(^}ʀq9?b`} !/=BY} +.=m;RhҀy~ӌrp2Ae9ÏfOs1N)C #( VS⁷`<{OsnlaGhR'۵7'?3iBiF2ϥ?|'8ލ?A+ [jRJ&=> rf巟GԓGbni?ߠf1qH2zd~dO֗=N( ~Ш:"@(zoAB~CF?S@ ьc 8} 9s}fHA}/?V QM ^}I`8@ ,9ϥ|FI'ߵ&W89?Z^p>0oʐ<6 Px'K`v,3J:?; t4a{4qFG /?Z0{P/b` P1W*LA'IN_gʊ2ݕ0Asi6r4shpOa{GPƓ@ K)  _{ ;ʂr; I!lzi2Oxߥ&)wCPKm@  @R'贽:!c?1 q"?Rh)nI'4JTt7 n^/N=ڔ1F81@ ]~(&T 4??Pې = ?w8bz*Z4AiT;Y'}nF('qOrhDvgFnC@libwmf-0.2.8.4/doc/caolan/ScaleWindowExt.html0000644000077100007710000000154207260330366020302 0ustar fjffjf00000000000000 META_SCALEWINDOWEXT

NAME

META_SCALEWINDOWEXT

NEAREST API CALL

#include <windows.h>
BOOL32 ScaleWindowExtEx
(
	HDC32 hdc,
	INT32 xNum,
	INT32 xDenom,
	INT32 yNum,
	INT32 yDenom,
	LPSIZE32 size
);

DESCRIPTION

U16 Value
0 yDenom
1 yNum
2 xDenom
3 xNum
ScaleWindowExt resizes the width and height of the logical window by
width = (width * xNum) / xDenom;
height = (height * yNum) / yDenom;
see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/SelectClipRgn.html0000644000077100007710000000113707260330366020100 0ustar fjffjf00000000000000 META_SELECTCLIPREGION

NAME

META_SELECTCLIPREGION

NEAREST API CALL

#include <windows.h>
INT32 SelectClipRgn
(
	HDC32 hdc,
	HRGN32 hrgn
);

DESCRIPTION

U16 Value
0 Object No
SelectClipRgn asks for an given object no which should be a region to be selected as the current clipping region.

back

libwmf-0.2.8.4/doc/caolan/SelectObject.html0000644000077100007710000000170207260330366017746 0ustar fjffjf00000000000000 META_SELECTOBJECT

NAME

META_SELECTOBJECT

NEAREST API CALL

#include <windows.h>
HGDIOBJ32 SelectObject
(
	HDC32 hdc,
	HGDIOBJ32 handle
);

DESCRIPTION

U16 Value
0 Object No
SelectObject asks for an given object no to be selected, an internal list of objects is kept by libwmf.
The object no is an index into this list.
Object's include OBJ_PEN,OBJ_BRUSH,OBJ_PAL,OBJ_FONT & OBJ_REGION
SelectObject can select any of these to be the current object on their class, e.g. when you select a brush, it becomes the current brush, etc etc. libwmf handles all of this stuff for you (hopefully), see DeleteObject

back libwmf-0.2.8.4/doc/caolan/SetBkColor.html0000644000077100007710000000222207260330366017405 0ustar fjffjf00000000000000 META_SETBKCOLOR

NAME

META_SETBKCOLOR

NEAREST API CALL

#include <windows.h>

COLORREF SetBkColor
(
        HDC32 hdc,
        COLORREF color
);

DESCRIPTION

U16 Value
0 COLORREF
1
When the BkMode is set to OPAQUE, the color that SETBKCOLOR sets is the color that will be used as the background color for
  • the box that is the background to text.
  • the color that shows through the transparent areas of hatched brushes and styled (dashed) lines.
  • and for the background color when converting bitmaps to monochrome and vice versa, though i havent figured out if this last point has any revelence to a metafile converter.

back libwmf-0.2.8.4/doc/caolan/SetBkMode.html0000644000077100007710000000145307260330366017220 0ustar fjffjf00000000000000 META_SETBKMODE

NAME

META_SETBKMODE

NEAREST API CALL

#include <windows.h>
int SetBkMode(
   HDC hdc,
   INT iBkMode
 );

DESCRIPTION

U16 Value
0 BkMode
Sets the background mode to either OPAQUE of TRANSPARENT, if its OPAQUE then the effects described in META_SETBKCOLOR take effect.
If its TRANSPARENT, the ordinary behaviour takes place, where transparent parts of hatched brushes, pens and text remain transparent.

back libwmf-0.2.8.4/doc/caolan/SetDIBitsToDevice.html0000644000077100007710000000365307260330366020624 0ustar fjffjf00000000000000 META_SETDIBTODEV

NAME

META_SETDIBTODEV

NEAREST API CALL

#include <windows.h>
INT32 SetDIBitsToDevice
(
	HDC32 hdc,
	INT32 xDest,
	INT32 yDest,
	DWORD cx,
	DWORD cy,
	INT32 xSrc,
	INT32 ySrc,
	UINT32 startscan,
	UINT32 lines,
	LPCVOID bits,
	const BITMAPINFO *info,
	UINT32 coloruse
);

DESCRIPTION

U16Value
0coloruse
1lines
2starting line
3ySrc
4xSrc
5cy
6cx
7yDst
8xDst
9 to endthe dib itself
coloruse is one of either DIB_RGB_COLORS or DIB_PAL_COLORS
lines is the number of lines in the dib to copy, in fact only this number of lines *exist* in the dib attached to the record, the header of the dib may tell you that there's more lines in the dib that there actually is, so you must use this value to determine the truth (nasty eh!)
starting line is the line of the original dib that was to be the starting line to copy from, in the metafile record you can ignore this, as the attached dib is cropped as far as this line, so this work is done for you
xSrc, and ySrc are the location in the dib to copy from, im uncertain of these for the moment, as all examples have them to set to 0
cy and cx are the size of the destination rectangle, with xDest and yDest being the coordinate of the topleft of the dest rect.
the rest of the bytes are the dib itself, but remember the height of the dib, as shown in its header may be wrong, use the lines parameter to determine the truth

back

libwmf-0.2.8.4/doc/caolan/SetMapMode.html0000644000077100007710000000260607260330366017402 0ustar fjffjf00000000000000 META_SETMAPMODE

NAME

META_SETMAPMODE

NEAREST API CALL

#include <windows.h>
INT32 SetMapMode
(
    HDC32 hdc,
    INT32 mode
);

DESCRIPTION

U16 Value
0 MapMode
SetMapMode sets the mapping mode to one of MM_TEXT, MM_LOMETRIC,MM_HIMETRIC, MM_LOENGLISH,MM_HIENGLISH,MM_TWIPS,MM_ISOTROPIC,MM_ANISOTROPIC
Set this doc for explanation

Id like to point out here, that some wmf files do not set a mapping mode at all, and while the referenced doc here puts MM_TEXT as the default mapping mode, in practice when no map mode is set and the wmf isn't a placeable wmf, i.e. there is no information at all about the desired size of the wmf, then this is a problem because

  • wmfs exist which expect to be played in MM_TEXT mode where each unit is a pixel and
  • wmfs exist which expect to be played in MM_TWIPS mode where each unit is 1/1440 or an inch.
and neither set a MAPMODE. (grrr) so arbitrarily i put non-placeable wmf files that have no MAPMODE set into MM_TEXT mode if they are < 400 x 400 and into the other mode if they are not.

back libwmf-0.2.8.4/doc/caolan/SetMapperFlags.html0000644000077100007710000000307007260330366020255 0ustar fjffjf00000000000000 META_SETMAPPERFLAGS

NAME

META_SETMAPPERFLAGS

NEAREST API CALL

#include <windows.h>
DWORD SetMapperFlags
(
	HDC32 hDC,
	DWORD dwFlag
);

DESCRIPTION

extract from http://www.melander.dk/lib/windows/gdi/fontmap.htm
 Windows Font Mapping

 Ron Gery

 Microsoft Developer Network Technology Group

 Created: June 8, 1992

 Filters
An application can, to some extent, filter which physical fonts are examined by the font mapper. Aspect-ratio filtering, which is available in both Windows versions 3.0 and 3.1, allows an application to specify that only fonts designed for the device's aspect ratio should be considered by the font mapper. An application enables and disables this filter by using the SetMapperFlags function. Because nonscaling raster fonts are designed with a certain aspect ratio in mind, it is sometimes desirable to ensure that only fonts actually designed for the device are used. When this filter is enabled, the font mapper does not consider any physical fonts whose design aspect ratio does not match that of the device. Aspect-ratio filtering does not affect TrueType fonts because they can scale to match any aspect ratio. This filter affects all font selections to the DC until the filter is turned off. Aspect-ratio filtering is a holdover from earlier times and is not a recommended approach in today's font world.

back

libwmf-0.2.8.4/doc/caolan/SetPixel.html0000644000077100007710000000121207260330367017132 0ustar fjffjf00000000000000 META_SETPIXEL

NAME

META_SETPIXEL

NEAREST API CALL

#include <windows.h>
COLORREF SetPixel
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	COLORREF color
);

DESCRIPTION

U16 Value
0 COLORREF
1
2 y
3 x
SetPixel sets the pixel at x,y to the specified color.

back libwmf-0.2.8.4/doc/caolan/SetPolyFillMode.html0000644000077100007710000000140407260330367020413 0ustar fjffjf00000000000000 META_SETPOLYFILLMODE

NAME

META_SETPOLYFILLMODE

NEAREST API CALL

#include <windows.h>
int SetPolyFillMode(
	HDC hdc,
	INT fillmode
	);

DESCRIPTION

U16 Value
0 FillMode
SetPolyFillMode sets polygon filling to either ALTERNATE or WINDING.
ALTERNATE is equivalent to X's EvenOddRule, and
WINDING is equivalent to WindingRule
The default is ALTERNATE, and fills the polygon in the intuitive manner, im not too sure what the hell WINDING means.

back libwmf-0.2.8.4/doc/caolan/SetROP2.html0000644000077100007710000000420207260330367016575 0ustar fjffjf00000000000000 META_SETROP2

NAME

META_SETROP2

NEAREST API CALL

#include <windows.h>
INT32 SetROP2
(
HDC32 hdc,
INT32 ROP
);

DESCRIPTION

U16 Value
0 ROP
1
SetROP2 sets the binary raster operation which affects how the current brush and pen combine with the existing window contents when they draw to it, this is equivalent to the GC functions in X, heres an equivalence table and info where src is the brush or pen, and dest is where the pen or brush is being applied, R2_COPYPEN is the intuitive default.
X Function NameMS ROP2 NameOperation
GXclear R2_BLACK 0
GXnor R2_NOTMERGEPEN (NOT src) AND (NOT dst)
GXandInverted R2_MASKNOTPEN (NOT src) AND dst
GXcopyInverted R2_NOTCOPYPEN NOT src
GXandReverse R2_MASKPENNOT src AND NOT dst
GXinvert R2_NOT NOT dst
GXxor R2_XORPEN src XOR dst
GXnand R2_NOTMASKPEN (NOT src) OR (NOT dst)
GXand R2_MASKPEN src AND dst
GXequiv R2_NOTXORPEN (NOT src) XOR dst
GXnoop R2_NOP dst
GXorInverted R2_MERGENOTPEN (NOT src) OR dst
GXcopy R2_COPYPEN src
GXorReverse R2_MERGEPENNOT src OR (NOT dst)
GXor R2_MERGEPEN src OR dst
GXset R2_WHITE 1

back libwmf-0.2.8.4/doc/caolan/SetStretchBltMode.html0000644000077100007710000000137507260330367020746 0ustar fjffjf00000000000000 META_SETSTRETCHBLTMODE

NAME

META_SETSTRETCHBLTMODE

NEAREST API CALL

#include <windows.h>
int SetStretchBltMode(
	HDC hdc,
	INT StretchMode
	);

DESCRIPTION

U16 Value
0 StretchMode
SetStretchBltMode sets how StretchBlt will handle adding and removing lines from an original dib to fit it to a different requested size. The possibilities are BLACKONWHITE,WHITEONBLACK,COLORONCOLOR,HALFTONE, MAXSTRETCHBLTMODE.

libwmf currently ignores this hint.

back libwmf-0.2.8.4/doc/caolan/SetTextAlign.html0000644000077100007710000000154707260330367017763 0ustar fjffjf00000000000000 META_SETTEXTALIGN

NAME

META_SETTEXTALIGN

NEAREST API CALL

#include <windows.h>
UINT32 SetTextAlign
(
	HDC32 hdc,
	UINT32 textAlign
);

DESCRIPTION

U16 Value
0 magic no
magic no is combo of TA_NOUPDATECP,TA_UPDATECP,TA_LEFT,TA_RIGHT,TA_CENTER,TA_TOP,TA_BOTTOM,TA_BASELINE which basically specify whether the text is left or right aligned, or centered in the horizontal direction. centered on the baseline, at the top or the bottom of the baseline. And whether the current position is updated or not.See the source for more details on all this malarky.

back

libwmf-0.2.8.4/doc/caolan/SetTextCharacterExtra.html0000644000077100007710000000114407260330367021622 0ustar fjffjf00000000000000 META_SETTEXTCHAREXTRA

NAME

META_SETTEXTCHAREXTRA

NEAREST API CALL

#include <windows.h>

INT32 SetTextCharacterExtra
(
	HDC32 hdc,
	INT32 extra
);

DESCRIPTION

U16 Value
0 extra
SetTextCharacterExtra sets the space between characters of TextOut and ExtTextOut to be extra in logical units.

back libwmf-0.2.8.4/doc/caolan/SetTextColor.html0000644000077100007710000000113507260330367020000 0ustar fjffjf00000000000000 META_SETTEXTCOLOR

NAME

META_SETTEXTCOLOR

NEAREST API CALL

#include <windows.h>

COLORREF SetTextColor
(
	HDC32 hdc,
	COLORREF color
);

DESCRIPTION

U16 Value
0 COLORREF
1
SetTextColor sets the color that will be used for text in TextOut and ExtTextOut.

back libwmf-0.2.8.4/doc/caolan/SetTextJustification.html0000644000077100007710000000063707260330367021543 0ustar fjffjf00000000000000 META_SETTEXTJUSTIFICATION

NAME

META_SETTEXTJUSTIFICATION

NEAREST API CALL

#include <windows.h>
BOOL32 SetTextJustification
(
	HDC32 hdc,
	INT32 extra,
	INT32 breaks
);

DESCRIPTION

back libwmf-0.2.8.4/doc/caolan/SetViewportExt.html0000644000077100007710000000124007260330367020352 0ustar fjffjf00000000000000 META_SETVIEWPORTEXT

NAME

META_SETVIEWPORTEXT

NEAREST API CALL

#include <windows.h>
BOOL32 SetViewportExtEx
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	LPSIZE32 size
);

DESCRIPTION

U16 Value
0 height
1 width
SetViewportExt sets the logical window dimensions to these values, see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/SetViewportOrg.html0000644000077100007710000000122407260330367020343 0ustar fjffjf00000000000000 META_SETVIEWPORTORG

NAME

META_SETVIEWPORTORG

NEAREST API CALL

#include <windows.h>
BOOL32 SetViewportOrgEx
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	LPPOINT32 pt
);

DESCRIPTION

U16 Value
0 y
1 x
SetViewportOrg sets the phyisical window origin to these values, see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/SetWindowExt.html0000644000077100007710000000122607260330367020006 0ustar fjffjf00000000000000 META_SETWINDOWEXT

NAME

META_SETWINDOWEXT

NEAREST API CALL

#include <windows.h>
BOOL32 SetWindowExt
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	LPSIZE32 size
);

DESCRIPTION

U16 Value
0 height
1 width
SetWindowExt sets the logical window dimensions to these values, see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/SetWindowOrg.html0000644000077100007710000000121207260330367017770 0ustar fjffjf00000000000000 META_SETWINDOWORG

NAME

META_SETWINDOWORG

NEAREST API CALL

#include <windows.h>
BOOL32 SetWindowOrgEx
(
	HDC32 hdc,
	INT32 x,
	INT32 y,
	LPPOINT32 pt
);

DESCRIPTION

U16 Value
0 y
1 x
SetWindowOrg sets the logical window origin to these values, see this file for explanation.

back libwmf-0.2.8.4/doc/caolan/StretchDib.html0000644000077100007710000000206007260330367017432 0ustar fjffjf00000000000000 META_STRETCHDIB

NAME

META_STRETCHDIB

NEAREST API CALL

???

DESCRIPTION

U16Value
0???
1???
2???
3src height
4src width
5ySrc
6xSrc
7dest height
8dest width
9yDest
10xDest
11 until the endthe full dib
META_STRETCHDIB stretches the part of the dib of src height and src width and starting from location ySrc and xSrc to the destination x and y, with the dest width and height. A rop in the first three arguments ? See DibStretchBlt.

back

libwmf-0.2.8.4/doc/caolan/TextOut.html0000644000077100007710000000117207260330367017016 0ustar fjffjf00000000000000 META_TEXTOUT

NAME

META_TEXTOUT

NEAREST API CALL

#include <windows.h>

DESCRIPTION

U16 Value
0 count
1 for a count of count/2 the string
after that y
after that x
See ExtTextOut for more details.

back

libwmf-0.2.8.4/doc/caolan/dibs.html0000644000077100007710000006747607260330367016346 0ustar fjffjf00000000000000 Device-Independent Bitmaps and Palettes

Device-Independent Bitmaps and Palettes

Introduction

The purpose of this article is to show how to create a Device-Independent Bitmap of a given format, how to get a pointer to the memory bits that make up the image and how to display it on screen regardless of the current display mode.

Pick a Flavor

When you create a DIB, you have to specify the pixel format you want it in. In general there are two "flavors":

  • Palette images
  • RGB images

Palette images usually contain 256 colors. You supply a palette of 256 colors, and each pixel in the image takes up one byte which is an index into the palette table.

With RGB images you specify each of the 3 RGB components for each pixel. RGB images are usually 16-bits or 24-bits per pixel.

Setting up the Palette

If you want to display a 256 color image then you'll need to set up a palette for it. We need this palette information twice: once to create the bitmap, and again to create a palette object we'll use when rendering to the window. To keep things simple, I'm going to start out by declaring a 256x3 array of bytes which we'll use later on. The following code also initializes the entire palette to a smooth gradiant from black to bright red:

// Set up a palette
BYTE palette[256][3];
for (i=0; i<255; i++)
{
 palette[i][0] = i; // red
 palette[i][1] = 0; // green
 palette[i][2] = 0; // blue
}

Creating the Bitmap

There are several ways to create a bitmap under Windows95, the most useful is probably with the CreateDIBSection() function. CreateDIBSection() allows you to specify the desired pixel format, and it returns both a handle to the bitmap object and a pointer to the image memory.

Before calling CreateDIBSection() we must set up a BITMAPINFO structure for the desired pixel format. The BITMAPINFO structure contains two fields: bmiHeader (of type BITMAPINFOHEADER) and bmiColors (a one element array of type RGBQUAD). The pixel format itself is stored in the bmiHeader header field, while the bmiColors field is used to store the first palette entry. Since this first example is for a 256-color bitmap, we need to allocate a structure containing enough memory for the BITMAPINFO structure itself as well as an extra 255 palette entries immediately after it (which we can then access by indexing off the bmiColors field). The following code will allocate the amount of memory we need:

// Allocate enough memory for the BITMAPINFOHEADER and 256 RGBQUAD palette entries
LPBITMAPINFO lpbi;
lpbi = (LPBITMAPINFO) new BYTE[sizeof(BITMAPINFOHEADER) + (256 * sizeof(RGBQUAD))];

Our next step is to initialize the fields in the BITMAPINFOHEADER member bmiHeader. BITMAPINFOHEADER contains the following fields:

  • biSize: the size of this structure, set it to sizeof(BITMAPINFOHEADER).
  • biWidth: the bitmap's width in pixels.
  • biHeight: the bitmap's height in pixels.
  • biPlanes: the number of planes in the image. This should be set to 1 for both palette and RGB bitmaps.
  • biBitCount: the number of bits per pixel. Set it to 8 for 256 color bitmaps, and 24 for 24-bit RGB bitmaps.
  • biCompression: the type of compression used. We don't want any compression, so set it to BI_RGB for both bitmap flavors.
  • biSizeImage: the size of the image, in bytes. This is used for compressed bitmaps where the image size is not a direct function of the width and height of the image itself. Our bitmaps aren't compressed, so we can set it to 0.
  • biXPelsPerMeter and biYPelsPerMeter: specifies the resolution of the bitmap. We'll be displaying these on the screen, so set both fields to 0.
  • biClrUsed and biClrImportant: these values are used to notify Windows of which colors in the image are most important. I won't be covering this topic in this article, so for now just set both to 0.

So the code to initialize the lpbi structure should look something like this:

lpbi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpbi->bmiHeader.biWidth = width;
lpbi->bmiHeader.biHeight = height;
lpbi->bmiHeader.biPlanes = 1;
lpbi->bmiHeader.biBitCount = 8;
lpbi->bmiHeader.biCompression = BI_RGB;
lpbi->bmiHeader.biSizeImage = 0;
lpbi->bmiHeader.biXPelsPerMeter = 0;
lpbi->bmiHeader.biYPelsPerMeter = 0;
lpbi->bmiHeader.biClrUsed = 0;
lpbi->bmiHeader.biClrImportant = 0;

The next step is to fill in the bmiColors array. We do this by simply copying the values out of the palette array we set up in the first step:

// Set the bitmap palette
for (i=0; i<255; i++)
{
 lpbi->bmiColors[i].rgbRed      = palette[i][0];
 lpbi->bmiColors[i].rgbGreen    = palette[i][1];
 lpbi->bmiColors[i].rgbBlue     = palette[i][2];
 lpbi->bmiColors[i].rgbReserved = 0;
}

We are now ready to create the bitmap. The CreateDIBSection() function is declared as follows:

HBITMAP CreateDIBSection(HDC hdc,CONST BITMAPINFO *pbmi,UINT iUsage,VOID *ppvBits,HANDLE hSection,DWORD dwOffset)

As you can see, the first parameter is a device context. What we need here is the device context for the screen, we can get it by calling GetWindowDC() and passing in NULL as the window handle. pbmi is a pointer to a BITMAPINFO structure (ie our lpbi variable). iUsage is an identifier that specifies the type of information we've filled the palette with, so set it to RGB (do so for 24-bit images as well). ppvBits should point to a variable of type LPBYTE, it will be filled with a pointer to the bitmap's pixel memory. hSection and dwOffset are used with file mapping objects, set them both to 0. The following code gets the screen dc, calls CreateDIBSection() to create the bitmap then frees both the dc and the lpbi structure we allocated:

HDC hScreenDC = GetWindowDC(NULL);
hBitmap = CreateDIBSection(hScreenDC, lpbi, DIB_RGB_COLORS, (LPVOID *)&m_pBits, NULL, 0 );
ReleaseDC(NULL,hScreenDC);
delete [](BYTE *)lpbi;

BTW, if you're using MFC then you'll probably want to declare a variable of type CBitmap and attach the bitmap handle to it with a call to the Attach() member function.

Creating a Palette Object

In order to display the bitmap on screen we also need a palette object. The palette object is created with a call to CreatePalette(), and we pass in a pointer to a LOGPALETTE structure. LOGPALETTE contains the following fields:

  • palVersion: indicates the Windows version number. You should set this to 0x300.
  • palNumEntries: the number of indices in the palette. This should be set to 256.
  • palPalEntry: an array of PALETTEENTRY structures containing the palette information.

The palPalEntry field contains a single element of type PALETTEENTRY, so we need to do the same trick we used when creating the bitmap to tack an extra 255 entries to the end of the LOGPALETTE structure. The following code allocates the memory, fills it with the information from our palette array and creates the palette object itself:

// Create the palette object
LPLOGPALETTE lpLogPal;
lpLogPal = (LPLOGPALETTE)new BYTE[sizeof(LOGPALETTE) + 255*sizeof(PALETTEENTRY)];
lpLogPal->palVersion = 0x0300;
lpLogPal->palNumEntries = 256;
for (i=0; i<255; i++)
{
 lpLogPal->palPalEntry[i].peRed   = palette[i][0];
 lpLogPal->palPalEntry[i].peGreen = palette[i][1];
 lpLogPal->palPalEntry[i].peBlue  = palette[i][2];
 lpLogPal->palPalEntry[i].peFlags = 0;
}
hPalette = ::CreatePalette(lpLogPal);
delete [](BYTE *)lpLogPal;

If you're using MFC then you'll probably want to attach the palette handle to a CPalette variable. Or better yet, call the CPalette's CreatePalette() member function and pass the lpLogPal variable into it.

Displaying the Bitmap

The information presented in this section is enough to display the bitmap if the user's display is set to an RGB mode (eg 16 or 24 bits per pixel). However, it's not enough for displaying in 256-color modes. To do that you need the code in this section, plus handlers for an extra 2 windows messages (which I'll show in the next section).

To display the bitmap you obviously need a device context for the window you're rendering to. This is usually obtained by calling BeginPaint() in response to a WM_PAINT message. The first task is to create a compatible device context for the bitmap. This is done by calling CreateCompatibleDC() and passing in the destination dc. Next, we need to select the bitmap into it by calling SelectObject(). Don't forget to save a copy of the bitmap handle it returns, you'll need to select it back into the dc when you're done. Finally, we need to select the palette into the destination dc, this is done with a call to the SelectPalette() function.

Before going any further, let me explain a bit about the SelectPalette() function and how it works. This function accepts a device context (the destination dc in our case), a handle to the palette object itself and a BOOLEAN variable called bForceBackground. bForceBackground indicates to Windows what it should do with the palette object we've just given it. If it's set to FALSE, then that means we want windows to try and perfectly match as many of the palette indices as possible. Windows normally reserves 20 palette entries for itself and other applications may add their own entries to the palette. If your application currently has the input focus then you get palette priority over other programs, but Windows still has priority over you to set the 20 reserved entries. When you set a palette, Windows searches for any matches between your palette entries and the entries in the current physical palette (i.e. the actual palette that the screen is set to). If no match is found, then what Windows does depends on the bForceBackground parameter. If bForceBackground is set to FALSE, then Windows will go ahead and pick the closest matching index from the current physical palette. If it's set to TRUE then Windows will find an empty entry in the physical palette and add the new index to it. None of this really matters in 16 or 24 bit modes, since Windows doesn't use a physical palette in those modes. It makes a big difference though in 256-color modes, since you want Windows to display as many of your palette colors as possible. Note that if your window does not have the focus and another window has set the palette, then Windows will map your palette indices to that application's palette regardless of what bForceBackground value you passed in.

So obviously we want to always pass in TRUE when we first call SelectPalette(), if our window doesn't have the focus then it'll just be ignored anyway. The function returns the handle to the previous palette, and when we're done rendering we need to set that palette back into the device context. In this second case though, we don't want windows to go and change all the palette entries back to the old palette, we want it to simply remap them to the palette we've just set. So when we call SelectPalette() the second time to restore the old palette, we want to pass in FALSE.

With the palette set we can now blt the bitmap to the destination dc. Here's some code that uses BitBlt to display the bitmap:

// Assume hPaintDC is a variable of type HDC, and the dc we're rendering to
HDC hBitmapDC = CreateCompatibleDC(hPaintDC);
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hBitmapDC, hBitmap);
HPALETTE hOldPalette = SelectPalette(hPaintDC, hPalette, FALSE);
BitBlt(hPaintDC, 0, 0, BITMAP_WIDTH, BITMAP_HEIGHT, hBitmapDC, 0, 0, SRCCOPY);
SelectPalette(hPaintDC, hOldPalette, TRUE);
SelectObject(hBitmapDC, hOldBitmap);
DeleteDC(hBitmapDC);

Dueling Palettes

Windows is a multi-tasking environment, and that means that at any given moment there are typically numerous applications all fighting for control of the palette. Windows has a very simple method of determining who gets what: if your window has the input focus, then you get palette priority, and all other windows have their palettes remapped to yours. Windows loops through each index of all the other palettes, finds the entry in your palette that's closest and makes a note of it. Whenever one of those applications renders something to the screen Windows looks up each pixel's value in an internal table and draws the remapped color instead. Since the other application is using your palette, it's not going to look anywhere near as good as if it were using it's own, but at least it's better than the alternative (i.e. a jumbled mess of pixels).

Unfortunately it works both ways, since you too are subject to having another application rip the palette out from under your feet. In order to help you deal with this in an effective manner, Windows provides two messages to notify you of palette changes: WM_PALETTECHANGED and WM_QUERYNEWPALETTE.

WM_QUERYNEWPALETTE is sent whenever your application gets the input focus, thus giving you a chance to prepare the palette for rendering. When you select a palette into a device context, Windows assigns each palette index a space in the physical palette, but it does not actually go ahead and make changes to the physical palette itself. To do that you need to call the RealizePalette() function. The correct way to handle the WM_QUERYNEWPALETTE message is to get the device context for the window, select the palette into it with bForceBackground set to FALSE (remember to save the old palette handle), realize the palette, select the old palette back in with bForceBackground set to TRUE and release the device context. Here's the WM_QUERYNEWPALETTE handler code to do all this:

HDC hDC = GetWindowDC(hWnd);
HPALETTE hOldPalette = SelectPalette(hDC, hPalette, FALSE);
UINT nChanged = RealizePalette(hDC);
SelectPalette(hDC, hOldPalette, TRUE);
ReleaseDC(hWnd, hDC);

(Note that we could avoid handling this message by simply realizing the palette immediately after the SelectPalette() call in the WM_PAINT handler. Realizing a palette however is slow, so we may as well only do it when we need to).

WM_PALETTECHANGED is sent whenever any application, including yours, causes changes to the physical palette. If it's your own application doing the changing then you should ignore this message, but if it's another application then you need to realize your palette. Realizing the palette can be done with the same code as used for the WM_QUERYNEWPALETTE handler. Since this message is only handled when another window has received the input focus, we should be able to to still pass in a bForceBackground parameter of FALSE, since it'll be ignored anyway. However, one document I read stated that it's possible for the WM_PALETTECHANGED message to be sent to your window before the other window has actually received the input focus. If this happens and you're passing in FALSE, then the other windows' palette will be messed up, so it's best to stay on the safe side and pass in the correct value. When this message is received, check the wParam value to see if it matches your windows' HWND. If it's different, then realize the palette:

HDC hDC = GetWindowDC(hWnd);
HPALETTE hOldPalette = SelectPalette(hDC, hPalette, TRUE);
UINT nChanged = RealizePalette(hDC);
SelectPalette(hDC, hOldPalette, TRUE);
ReleaseDC(hWnd, hDC);

To avoid code duplication, you should probably have each message call a function which accepts the appropriate bForceBackground value and passes it into the first SelectPalette() call.

One last thing to keep in mind: if the RealizePalette() function in either handler returns non-zero, then you should invalidate and repaint your entire client area. This is needed to fix any image degradation caused when by another window changing the palette.

True-Color Tyranny

24-bit DIBs are somewhat easier to create than their 8-bit counterparts, since you no longer have to worry about a palette. Displaying them is a bit different though (that is, if want them to look semi-decent on a 256-color display).

To create a 24-bit bitmap you simply set the biBitCount field of the BITMAPINFOHEADER structure to 24. Since this bitmap doesn't require a palette, we can use an actual BITMAPINFOHEADER structure instead of a BITMAPINFO structure. The important thing to remember here is to save a copy of the BITMAPINFOHEADER variable. You need it to display the bitmap, for reasons which will become apparent in a minute. Here's the code to create a 24-bit DIB:

BITMAPINFOHEADER m_BitmapInfo; // <- this should be saved, eg make it a member variable

m_BitmapInfo.biSize = sizeof(BITMAPINFOHEADER);
m_BitmapInfo.biWidth = BITMAP_WIDTH;
m_BitmapInfo.biHeight = BITMAP_HEIGHT;
m_BitmapInfo.biPlanes = 1;
m_BitmapInfo.biBitCount = 24;
m_BitmapInfo.biCompression = BI_RGB;
m_BitmapInfo.biSizeImage = 0;
m_BitmapInfo.biXPelsPerMeter = 0;
m_BitmapInfo.biYPelsPerMeter = 0;
m_BitmapInfo.biClrUsed = 0;
m_BitmapInfo.biClrImportant = 0;
HDC hScreenDC = GetWindowDC(NULL);
hBitmap = CreateDIBSection(hScreenDC, (LPBITMAPINFO)&m_BitmapInfo, DIB_RGB_COLORS, (LPVOID *)&m_pBits, NULL, 0);
ReleaseDC(NULL,hScreenDC);

We no longer have to worry about selecting and realizing palettes, so we can just go ahead and select the bitmap into a device context and blt it to the destination device
in our WM_PAINT handler:

HDC hBitmapDC = CreateCompatibleDC(hPaintDC);
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hBitmapDC, hBitmap);
BitBlt(hPaintDC, 0, 0, BITMAP_WIDTH, BITMAP_HEIGHT, hBitmapDC, 0, 0, SRCCOPY);
SelectObject(hBitmapDC, hOldBitmap);
DeleteDC(hBitmapDC);

This works fine if the display is in a true color mode, but if it's in a 256-color mode then Windows maps each pixel to the closest entry in the physical palette, i.e. usually one of it's 20 reserved entries. Needless to say, it looks like crap! In theory, we should should be able to call SetStretchBltMode(), SetBrushOrgEx() and StretchBlt() to render with dithering. I have tried and tried to get this to work, but to no avail. It may be a feature that only certain drivers support. If so, I have yet to find one that does!

Fortunately, Video for Windows provides a function for dithering DIBs. Instead of accepting the bitmap's device context, it requires a pointer to the memory bits and, lo-and-behold, it's BITMAPINFOHEADER structure (good thing you saved it, huh?). To use video for windows you need to add the following declarations to the top of your source. The first line includes it's header file while the second links in the appropriate lib file:

// Include video for windows
#include 
#pragma comment(lib, "vfw32.lib")

We no longer need a device context, so our display code is reduced to just 3 measly lines:

HDRAWDIB hdd = DrawDibOpen(); 
DrawDibDraw(hdd, hPaintDC,0,0,BITMAP_WIDTH,BITMAP_HEIGHT,&m_BitmapInfo,m_pBits,0,0,BITMAP_WIDTH,BITMAP_HEIGHT,DDF_HALFTONE);
DrawDibClose(hdd);

DrawDib apparently uses some kind of pattern dither (Bayer?) to display images, but it does a surprisingly good job of it. On my machine it's reasonably fast too! In the past I've used it to emulate the primary surface in debug builds of my DirectDraw code, since it allows me to display 16-bit images in a window even when I'm running in a 256-color mode.

Full-Screen Without DirectX

If you want to develop high-speed full-screen applications then you'll almost certainly want to use DirectX. However, the techniques discussed in this file can be used to develop full-screen apps, provided you don't try and update too much of the screen each frame (otherwise it'll bog down, particularly at higher resolutions).

The first thing you'll probably want to do is change the screen resolution. Win32 allows you to do this on the fly provided that you don't try and change the number of bits-per-pixel. I've already shown how to handle different pixel depths, so only changing the resolution will be adequate for our needs. Of course, if the user is running in a 16 or 24-bit mode and you're rendering an 8-bit bitmap then there'll be some slowdown since Windows has to convert it. The code to change the display mode is as follows:

SIZE m_sOldRes; // <-- save this somewhere
// Get current display mode
sOldRes.cx = GetSystemMetrics(SM_CXSCREEN);
sOldRes.cy = GetSystemMetrics(SM_CYSCREEN);

// Switch to our desired display mode
DEVMODE mode;
ZeroMemory(&mode, sizeof(mode));
mode.dmSize = sizeof(mode);
mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
mode.dmPelsWidth = SCREEN_WIDTH; // eg 640
mode.dmPelsHeight = SCREEN_HEIGHT; // eg 480
ChangeDisplaySettings(&mode, 0); <- don't forget to check the error returned here

To change it back again once the program has finished you simply plug in the old resolution values:

// Restore old display mode
DEVMODE mode;
ZeroMemory(&mode, sizeof(mode));
mode.dmSize = sizeof(mode);
mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
mode.dmPelsWidth = sOldRes.cx;
mode.dmPelsHeight = sOldRes.cy;
ChangeDisplaySettings(&mode, 0);

Finally, we need to create a window that covers the entire screen, including the task bar. This is easily done by creating a window with the WS_POPUP style and maximizing it with a call to ShowWindow(hWnd, SW_SHOWMAXIMISED).

 
Copyright (c) 1997 Mark Feldman (pcgpe@geocities.com) - All Rights Reserved
This article is part of The Win95 Game Programmer's Encyclopedia
Please retain this footer if you distribute this file.
Click Here!
libwmf-0.2.8.4/doc/caolan/esc.html0000644000077100007710000000044207260330367016153 0ustar fjffjf00000000000000 The layout of META_ESC is unknown, but it doesnt matter, as it has no effect on on screen metafile display (i think)

back libwmf-0.2.8.4/doc/caolan/index.html0000644000077100007710000001051507260330367016512 0ustar fjffjf00000000000000 Windows Metafiles, guide for non-windows programmers

Windows Metafiles

a guide for non-windows programmers

Windows Metafiles (wmf) files are common in the windows world. Basically they are a recording of the windows gdi (graphic) calls. They consist of a list of calls to such graphic primitives as LineTo, Polygon, Rectangle, etc. And as such as inherently a vector based format.

There are three basic kinds,

  • The original 16 bit format
  • Placeable 16 bit format
  • The new 32 bit (emf) format
O'Reilly's File Format handbook has a description of the headers of these files, and some other info on them

While this information is very useful, it lacks an explanation of each of the records that can exist in a metafile, for the development of libwmf it was required to understand each of the metafile records. To this end the wine source was a great aid. As was the basic help files of MS's Visual C compiler. In most cases just looking at the definition of an equivalent windows api call allows you to know what the parameters of each metafile record mean.

First you must know that the arguments to each api call are stored in reverse order in the actual disk dump that is a metafile record.
So in the case of a Rectangle call which from wine has the api

BOOL32 Rectangle
(
	HDC32 hdc,
	INT32 left,
	INT32 top,
	INT32 right,
	INT32 bottom
);

Now wine uses the win32 api, so in 16 bit wmf files left,top,right and bottom are all 16 bit values, not 32, and also they are stored in reverse order in the parameter list of wmf record, so the layout on disk for a RECTANGLE entry is

|32bit size of total record|0x041B |bottom|right|top|left|
Got that ?, so all the other records are the same.

There are complications when you start into the more complex operands such as BITBLT, and CREATEPATTERNBRUSH as they appear to get converted into DIBBITBLT and DIBCREATEPATTERNBRUSH when used in conjuntion with a metafile

There are other complications in many of the other operands, my particular favorite is one i found in DIBBITBLT.

I've created a list of all the known operands that can be used in 16 bit metafiles, as listed in wine's wingdi.h (and windows of course). The list attempts to document all the calls in terms of the layout of the operands' parameters as dumped to file, some of them are definitely correct, and some have been pieced together by the wine developers, and one of two ive put together myself from mucking around with a hexeditor and wmf files that i've created under windows. So if you know them to be incorrect or have any information that you think would help, please do send that information to me

This information is primarily intended for developers to create alternative bindings to the libwmf library which is a wmf library for non-windows machines that ive written, it takes care of most of the housecleaning and handling of wmf files. All new bindings should have to implement is handlers for the calls as listed in the (as yes non-existant) libwmf developer's documentation.
For that reason this list also shows what operands are supported in the various existing bindings for libwmf, which currently are one for X, and one for gd which is a graphic library for creating gif files. So as it stands any X program can display wmf files using the included X binding to libwmf, and there exists a wmftogif program which can create gif's from wmf files without requiring windows. libwmf was developed to allow my other project mswordview, a msword converter to extract wmf files in a unix-friendly format. Bindings that are missing that would be useful are eps and fig, to name two.

Enough already, here is the the known world's most complete wmf documentation to data

The Windows Metafile (wmf) Operand Documentation by Caolán McNamara libwmf-0.2.8.4/doc/caolan/mapmode.html0000644000077100007710000003447207260330367017035 0ustar fjffjf00000000000000 GDI Mapping Modes Explained

GDI Mapping Modes Explained

Date: 8 May 1997
Author: Rich Goldstein, MD  (goldstei@interport.net)

Overview

Each device context (DC, represented by TDC and derivatives in OWL) has the ability to maintain a coordinate system separate and distinct from the device it represents. So while the display may be a 640x480 or 800x600 or whatever pixels in dimension, we can tell the DC that the coordinate space uses some other units.

The result is the existence of 2 coordinate systems: the DEVICE coordinate system, and the LOGICAL coordinate system.

In general, DEVICE coordinates are established by the device or it's related drivers. So for the monitor, the display driver determines the DEVICE coordinates (0,0 in the top left, width,height in pixels in the lower right). These are rarely if ever changed programmatically (the exceptions, of course, include changing screen or printer resolution, or paper orientation, etc.).

The LOGICAL coordinates relate to the device context (DC) and are established by the mapping mode, viewport origin and extents, and window origin and extents. All DC related functions accept LOGICAL coordinates, unless explicitly stated (e.g. DPtoLP, which converts DEVICE coordinates to LOGICAL coordinates).

The system maps your LOGICAL coordinates to the DEVICE coordinates using the viewport/window origins and extents.

So WHAT ARE THEY, ALREADY???

Origins

OK, let's start with the window, which is expressed in LOGICAL coordinates.

SetWindowOrg() tells the DC the LOGICAL point that maps to the DEVICE point (0,0). So if you call SetWindowOrg(100,100) for a window, the LOGICAL point (100,100) occurs in the top left corner. (Hold on, this was the easy one...)

SetViewportOrg() tells the DC which DEVICE coordinate maps to LOGICAL point (0,0). So calling SetViewportOrg() with half the width and height of your window (in pixels), for example, sets the LOGICAL point (0,0) to the center of the window.

SetWindowOrg() and SetViewportOrg() can be called on any Mapping Mode. They serve to offset the origin of one system within the other. They have no effect on the relative distances specified by the two coordinate systems.

Advanced Note:
  Believe it or not, there are some (though few) reasons to use BOTH SetWindowOrg() and SetViewportOrg(). OWL's TScroller provides one such opportunity. In AutoOrg mode, the TScroller calls SetViewportOrg in it's BeginView member function, which is called before Paint is called. If your LOGICAL coordinate system uses an origin other that the top-left of the window, you can call SetWindowOrg in the Paint method to choose some other origin. Because both functions can be used safely together, you can let TScroller adjust the Viewport origin to facilitate scrolling, and you can adjust the Window origin to facilitate alternative coordinate systems.  

Mapping Modes

There are several mapping modes, some of which are constrained to a fixed relationship between DEVICE and LOGICAL coordinate systems. Here is the list:

Name/Constant  Constrained?  Logical Unit 
MM_TEXT (default)  Yes  Pixel 
MM_LOENGLISH  Yes  0.01 inch 
MM_HIENGLISH  Yes  0.001 inch 
MM_LOMETRIC  Yes  0.1 mm 
MM_HIMETRIC  Yes  0.01 mm 
MM_TWIPS  Yes  1/20 of a point, or 1/1440 of an inch 
MM_ISOTROPIC  No  User Defined 
MM_ANISOTROPIC  No  User Defined 

For the 'constrained' modes, all you are allowed is to change the origin of the logical system using either SetWindowOrg or SetViewportOrg.

This means that if I set the mapping mode to MM_LOENGLISH, the point (0,0) and (0,100) are 1 inch apart (1 Logical inch, defined by the device capabilities, see GetDeviceCaps())

Extents

Extents are a little trickier, because how they are interpreted depends on the mapping mode. They are only appropriate for the non-constrained modes, MM_ISOTROPIC and MM_ANISOTROPIC.

The difference between these two modes is that MM_ISOTROPIC takes the parameters you pass to SetViewportExt and SetWindowExt as 'suggestions' (see below) and adjusts the extents so the the x and y axis coordinates represent the same distance on the device. This way, a LOGICAL unit in the x direction is the same length (in terms of the output) as a LOGICAL unit in the y direction (this is not intuitive... some printers may have different resolutions in the two axes... this mode ensures that the LOGICAL units are equivalent in space).

MM_ANISOTROPIC differs in that the parameters passed to SetViewportExt and SetWindowExt are taken literally. Windows make no adjustment. Therefore, you can have very different coordinate systems in the two axes.

SetWindowExt and SetViewportExt are used as a team. These two functions set some internal members in the DC, which are used to map points between coordinate systems. As such, each is essentially meaningless taken alone.

SetWindowExt tells the DC that a rectangle with the LOGICAL width and height passed in, has the DEVICE width and height passed in via SetViewportExt. Confused yet?

Let's say that I call SetViewportExt for a display device with the parameters 100,50. Taken alone, that's rather meaningless. Now I call SetWindowExt with parameters 100,100. This means that for each LOGICAL unit in the x direction, I will move 1 DEVICE unit. On the other hand, for each LOGICAL unit I move in the y direction, I move 1/2 a unit in the DEVICE coordinate.

These functions can also be called with negative numbers. When the sign of the parameters to SetWindowExt and SetViewportExt a different, the direction of the axes changes. So that the positive y direction can be up, instead of the usual default of down, if I call:

SetWindowExt(1,-1);
SetViewportExt(1,1);

One LOGICAL x unit translates to 1 DEVICE x unit, but 1 LOGICAL y unit translates to 1 DEVICE y unit, in the opposite direction.

Basically, here is the formula used (by Windows) to convert LOGICAL points to DEVICE points:

where xD = the DEVICE coordinate
  and xL = the LOGICAL coordinate

     xD = (xL - xWindowOrg)*(xViewportExt/xWindowExt) + xViewportOrg

If that makes anything clearer.

How Windows handles extents for MM_ISOTROPIC

Assuming that SetWindowExt is called BEFORE SetViewportExt (recommended), how the adjustments are made depends on the actual physical dimensions of the extents passed to SetViewportExt. Since device coordinates are not necessarily in equal units in the two axes, they are probably adjusted internally according to LOGPIXELSX/LOGPIXELSY.

If the physical dimensions of the Viewport Extents are wider than they are tall, the x extent is adjusted so that it's LOGICAL units are equal to the LOGICAL units for the y axis (as defined by the y parameters passed to SetWindowExt / SetViewportExt).

If the physical dimensions of the Viewport Extents are taller than they are wide, the y extent is adjusted.


Contents of this page Copyright 1997, Rich Goldstein, MD. All Rights Reserved.

back libwmf-0.2.8.4/doc/caolan/ora-clp.html0000644000077100007710000004775107260330367016754 0ustar fjffjf00000000000000 GFF Format Summary: Microsoft Windows Clipboard

Microsoft Windows Clipboard

Also Known As: CLP


Type Metafile
Colors Bilevel to 24-bit
Compression None
Maximum Image Size 32Kx32K and 2Gx2G pixels
Multiple Images Per File Yes
Numerical Format Little-endian
Originator Microsoft Corporation
Platform Microsoft Windows
Supporting Applications Microsoft Clipboard and ClipBook Viewer
See Also Microsoft Bitmap, Microsoft Metafile, DIF, SYLK, RTF

Usage
Used as a "one-format-saves-all" solution for easily storing data in Windows to disk.

Comments
A useful and under-utilized format. Programmers can safely assume that every installation of Windows will have the ability to read and write Clipboard files.


The Clipboard file format is used to store Microsoft Windows Clipboard data to disk. The Clipboard is an area of shared memory found in the Windows operating system, and is the simplest mechanism available to exchange data between applications running in the Windows environment.

Contents:
File Organization
File Details
For Further Information

A set of functions in the Windows API is used to transfer data between the Clipboard and Windows applications. For example, the Cut, Copy, Clear, Paste, and Undo functions found in many Windows applications all use these function to access Clipboard memory as an area for temporary storage and data exchange. However, only one Windows application may access the Clipboard at a time. The Clipboard can also be accessed directly using the built-in Windows applications Clipboard Viewer and ClipBook Viewer.

The Clipboard Viewer is a simple application used to view the entire contents of the Clipboard and to save its data to disk using the CLP file format. The ClipBook Viewer is an extended version of the Clipboard Viewer that allows stored data to be divided into separate pages of information and shared over a Microsoft (NetBEUI) network using the OLE or DDE protocols. Each page in the ClipBook may hold the data captured by a single Cut or Copy operation. ClipBook may contain a maximum of 127 separate pages, each identified by a name up to 47 characters in length, and limited in size only by the amount of available disk space. Each page of the ClipBook may be stored in a separate CLP file.

The Clipboard Viewer and ClipBook Viewer are separate programs, but both use the executable file name clipbrd.exe, so it is not likely you will find both programs installed in the same Windows environment.

The Clipboard Viewer under Windows 2.x and 3.x is found in the Main group box. Windows for Workgroups 3.x and Windows NT 3.x provide only the ClipBook Viewer, also found in the Main group box.

Clipboard Viewer is not installed by default in Windows 95. To install the Clipboard Viewer under Windows 95, you must select Add/Remove Programs in Control Panel, click the Windows Setup tab, click Accessories, and then click Details. Click the Clipboard Viewer check box to select it, and then click OK or Apply. The Clipboard Viewer will be installed and a shortcut will be placed in the Accessories menu under the Programs menu.

The CD-ROM version of Windows 95 and CD-ROM Extras for Microsoft Windows 95 Upgrade also includes the ClipBook Viewer, but the floppy disk version of Windows 95 does not. If you install Windows 95 over Windows for Workgroups version 3.1, and during Setup choose to not install the Windows 95 Clipboard Viewer, Windows 95 retains and will use the Windows for Workgroups ClipBook Viewer.

It is important to realize that both the Clipboard and ClipBook Viewer are only applications that access the Clipboard and its data, and are not the Clipboard themselves. This point is often a source of confusion for both Windows users and programmers alike.

File Organization

Clipboard files use a very simple data format, but can be quite complicated because they can store many types of data. The CLP file format begins with a header and is followed by a directory of one or more records that indicates the type and location of data within the Clipboard file. Following these records are the actual Clipboard data. (See Figure Microsoft Windows Clipboard-1.)

Figure Microsoft Windows Clipboard-1: Basic layout of a CLP file

[Graphic: Figure Microsoft Windows Clipboard-1]

There will be one section of data per record. The standard Clipboard data formats are listed in Table Microsoft Windows Clipboard-1.

Table Microsoft Windows Clipboard-1: Standard Clipboard Data Formats
Data Format Format ID Description
TEXT 0x0001 ANSI text
BITMAP 0x0002 Windows Device-Dependent Bitmap
METAFILE 0x0003 Windows Clipboard Metafile
SYLK 0x0004 Microsoft spreadsheet format
DIF 0x0005 Soft Arts spreadsheet format
TIFF 0x0006 Adobe Tag Image File Format
OEMTEXT 0x0007 ASCII text
DIB 0x0008 Windows Device-Independent Bitmap
PALETTE 0x0009 Windows DIB Color Palette
PENDATA 0x000A Microsoft Pen Windows data
RIFF 0x000B Microsoft Resource Interchange File Format
WAVE 0x000C Microsoft Audio File Format
UNICODETEXT 0x000D Unicode text (Windows NT only)
ENHMETAFILE 0x000E Windows Enhanced Metafile (Windows 95 and NT only)
HDROP 0x000F Double NULL-terminated list of strings (Windows 95 only)
LOCALE 0x0010 Language and character set specifier (Windows 95 only)

Most of the native Windows data formats are supported by the Clipboard. The Clipboard is also capable of storing private or user-defined data formats (Table Microsoft Windows Metafile-2). Applications such as the Microsoft Windows Write word processor store a variety of private data formats using the Clipboard. You can also store any other file format as private data inside of a CLP file and read the file into the Clipboard using the Clipboard Viewer or your own Clipboard-aware application. Your application is then responsible for parsing and displaying the private data.

Table Microsoft Windows Clipboard-2: Private Clipboard Data Formats
Data Formats Format ID Description
OWNERDISPLAY 0x0080 Private data not displayable on the Clipboard
DSPTEXT 0x0081 Display Text
DSPBITMAP 0x0082 Display Bitmap
DSPMETAFILEPICT 0x0083 Display Metafile Picture
DSPENHMETAFILE 0x008E Display Enhanced Metafile
PRIVATEFIRST 0x0200 First Private Data Format
PRIVATELAST 0x02FF Last Private Data Format
GDIOBJFIRST 0x0300 First Private Graphics Device Interface Object
GDIOBJLAST 0x03FF Last Private Graphics Device Interface Object

When a CLP file is read by a Clipboard viewer, the data of the first usable entry will be displayed. It is therefore necessary to store the most important data first in a CLP file. For example, you might store the same piece of text in both the TEXT and OEMTEXT formats. Windows would use the TEXT data, and other applications that use only the ASCII character set would use the OEMTEXT data. The same text data could also be stored as RTF and UNICODETEXT in the same CLP file.

Not every flavor of Windows is capable of supporting every Clipboard data format. For example, ENHMETAFILE is not supported by Windows 3.x and UNICODETEXT is presently only supported by Windows NT. If Windows cannot find data in a usable format on the Clipboard, it will attempt to convert a recognized data format to one considered more suitable. For example, TEXT or OEMTEXT data may be converted to UNICODETEXT; METAFILEPICT to ENHMETAFILE; BITMAP to DIB, and DIB to PALETTE. Unrecognized formats are ignored and not displayed by the viewers.

File Details

The CLP header is four bytes in length and has the following format:

typedef struct _ClpHeader
{
    WORD FileId;        /* File identifier (always 3C50h) */
    WORD FormatCount;   /* Number of records in directory */
} CLPHEADER;

FileId is used to identify a CLP file. This value is always 3C50h.

FormatCount is the number of record entries in the format directory.

Clipboard Records

Following the header is one or more records that indicate the type and location of data within the Clipboard file. The number of records is specified by the FormatCount field in the header. Each record may be from 11 to 89 bytes in length and has the following format:

typedef struct _FormatRecord
{
    WORD  FormatId;       /* Format Identifier */
    DWORD DataLength;     /* Number of bytes in the data */
    DWORD DataOffset;     /* Offset of the data in the file */
    BYTE  FormatName[];   /* Format name */
} FORMATRECORD;

FormatId identifies the type of data indicated by this record. Valid values for this field are listed in the Format ID columns of Tables Microsoft Windows Clipboard-1 and Microsoft Windows Clipboard-2.

DataLength specifies the length of the data in bytes.

DataOffset indicates the offset of the data within the Clipboard file. The offset is always calculated from the beginning of the file.

FormatName is a plain-text string that describes the name of the format. This string will be "Text" for TEXT data, "Bitmap" for BITMAP data, and so forth. Private data types, such as "Rich Text Format", will also be described. This string may be up to 78 characters in length and is always terminated with a NULL (0x00).

The format of an entire Clipboard file can be defined as such:

typedef struct _ClipboardFormat
{
    CLPHEADER ClpHeader;
    FORMATRECORD ClpRecords[ClpHeader.FormatCount];
    BYTE Data[];
} CLIPBOARDFORMAT;

Clipboard Data

The CLP format supports a bewildering variety of data formats. Most of these formats are documented as separate file formats described elsewhere in this book. Following is a description of the format data types listed in Tables Microsoft Windows Clipboard-1 and Microsoft Windows Clipboard-2.

TEXT is one or more strings of 8-bit ANSI characters. Each string is terminated by a carriage return (0x0D) and a line feed (0x0A). A NULL (0x00) byte indicates the end of the TEXT data. The ANSI character set is the default character set used by Windows.

BITMAP is a Microsoft Device-Dependent Bitmap (DDB). Refer to the Microsoft Windows Bitmap format article for more information on the DDB format.

METAFILE is a standard Windows Metafile, but is preceded by an additional header used by the Clipboard. Refer to the Microsoft Windows Metafile format article for the format of the Clipboard Metafile.

SYLK is the Microsoft Symbolic Link data format used by Microsoft Excel, Chart, and Multiplan to store spreadsheet data. The SYLK data is stored as ASCII text with each line terminated with a carriage return and line feed. Refer to the Microsoft SYLK file format article for more information on the SYLK format.

DIF is the Software Arts Data Interchange Format used to store spreadsheet data. The DIF data is stored as ASCII text with each line terminated with a carriage return and line feed. Refer to the Lotus DIF file format article for more information on the DIF format.

TIFF is the Tag Image File Format created by Aldus, Hewlett-Packard, and others, and is now administered by Adobe Systems. Refer to the Tag Image File Format article for further information on TIFF.

OEMTEXT is one or more strings of 7-bit ASCII characters. Each string is terminated by a carriage return (0x0D) and a line feed (0x0A). A NULL (0x00) byte indicates the end of the OEMTEXT data. The ASCII character set is the default character set used by MS-DOS.

DIB is a Microsoft Device-Independent Bitmap (DIB). Refer to the Microsoft Windows Bitmap format article for more information on the DIB format.

PALETTE is a DIB color palette. Refer to the Microsoft Windows Bitmap format article for more information on the DIB color palettes.

RIFF is the Microsoft Resource Interchange File Format. This is Microsoft's "store anything" multimedia file format. Refer to the Microsoft RIFF article for more information.

WAVE is the Microsoft Waveform audio file format (.wav files). A wave file is nothing more than a RIFF file that stores only digital audio data.

UNICODETEXT is one or more strings of 16-bit Unicode characters. Each string is terminated by a carriage return (0x000D) and a line feed (0x000A). A NULL (0x0000) byte indicates the end of the UNICODETEXT data. The Unicode character set is the default character set used by Windows NT and Win32.

ENHMETAFILE is an Enhanced Windows Metafile found on Win32 systems. Refer to the Microsoft Windows Metafile format article for the format of the Enhanced Metafile.

OWNERDISPLAY is private data that is not recognized by the Clipboard, and is therefore not displayed by the Clipboard Viewer. The FormatName field of this data's record should yield a clue as to the format of the data.

DSPTEXT is a collection of private text. This data is stored using the same format as the TEXT format, and will be displayed as text, but is not available via the TEXT format ID.

DSPBITMAP is a collection of private text. This data is stored using the same format as the BITMAP format, and will be displayed as text, but is not retrievable using the BITMAP format ID.

DSPMETAFILEPICT is a collection of private text. This data is stored using the same format as the METAFILEPICT format, and will be displayed as text, but is not retrievable using the METAFILEPICT format ID.

DSPENHMETAFILE is a collection of private text. This data is stored using the same format as the ENHMETAFILE format, and will be displayed as text, but is not retrievable using the ENHMETAFILE format ID.

GDIOBJFIRST and GDIOBJLAST are a range of reserved values use to register private GDI objects. GDI objects include brushes, pens, palettes, and fonts. Under Windows the object is created first in memory and then saved to the Clipboard using the SetClipboardData() functions call. The handle of the GDI object and a value in the range of GDIOBJFIRST and GDIOBJLAST (inclusive) are passed to the function.

PRIVATEFIRST and PRIVATELAST are a range of reserved values used to register private data formats. There is no official registration of private data format numbers, so your reader application needs to both recognize this value and the FormatName string to properly identify the private data.

For example, let's say you want to import a 32K IFF file into your application through the Clipboard. You might construct a CLP file with a single record and containing the IFF file data:

typedef struct _PrivateIffFormat
{
    WORD  FileId;           /* 0x3C50 */
    WORD  FormatCount;      /* 0x0001 */
    WORD  FormatId;         /* 0x0200 */
    DWORD DataLength;       /* 0x00007FFF */
    DWORD DataOffset;       /* 0x00000026 */
    BYTE  FormatName[];     /* "Interchange File Format\0" */
    BYTE  Data[];           /* The entire IFF file */
} PRIVATEIFFFORMAT;

In this example we see a CLP file that contains a single record describing a private format with an ID value of 0x200. The data is 32K in size and begins 39 bytes into the file. Once this file has been read into the Clipboard the IFF file data may be read and parsed by any application that can access the Clipboard.

For Further Information

There is no official CLP file format specification. The Clipboard File Format and Clipboard management functions are described in detail in:

Microsoft Windows Programmer's Reference, Volumes 2 and 4, Microsoft Press, Redmond, WA, 1990.

The Microsoft Developers Network (MSDN) distributes several files containing information on the CLP format. These files may be found on the MSDN CD, or on the Microsoft Web site at:

http://www.microsoft.com/developr/MSDN/



Copyright © 1996, 1994 O'Reilly & Associates, Inc. All Rights Reserved.

libwmf-0.2.8.4/doc/caolan/ora-wmf.html0000644000077100007710000015254307260330370016755 0ustar fjffjf00000000000000 GFF Format Summary: Microsoft Windows Metafile

Microsoft Windows Metafile

Also Known As: WMF, Enhanced Metafile, EMF, APM


Type Metafile
Colors 24-bit
Compression None
Maximum Image Size NA
Multiple Images Per File Yes
Numerical Format Little-endian
Originator Microsoft Corporation
Platform Microsoft Windows
Supporting Applications Numerous Microsoft Windows-based graphics applications
See Also Encapsulated PostScript, Microsoft Windows Bitmap, and Microsoft Windows Clipboard

Usage
Storage of vector drawings and bitmaps.

Comments
A widely used format associated with Microsoft Windows, although many applications on other platforms provide support.


Microsoft Windows Metafile Format (WMF) files are used to store both vector and bitmap-format graphical data in memory or in disk files. The vector data stored in WMF files is described as Microsoft Windows Graphics Device Interface (GDI) commands. In the Window environment these commands are interpreted and played back on an output device using the Windows API PlayMetaFile() function. Bitmap data stored in a WMF file may be stored in the form of a Microsoft Device Dependent Bitmap (DDB), or Device Independent Bitmap (DIB).

Contents:
File Organization
File Details
For Further Information

In the Windows environment, metafiles are typically created and played back in memory. If the metafile data grows too large to be stored in memory, or needs to be saved before an application terminates, the data can be written to disk in the form of a WMF or EMF file and played back from disk. The maximum size of a Windows metafile is four gigabytes.

WMF is the original 16-bit Windows metafile format that appeared with Windows 2.0. EMF files are the 32-bit revision of the WMF format. EMF files have extended functionality over WMF files, including a color palette and full support for all 32-bit GDI commands. The Win32 API (Windows 95 and Windows NT) and 32-bit OLE support both WMF and EMF files. The Win16 and Win32s APIs (Windows 3.x) and 16-bit OLE only supports WMF files.

Although the Windows Metafile format is specific to Microsoft Windows, many non-Windows-based applications support this format as a method for interchanging graphical data with Windows applications. Because of the widespread popularity of the Microsoft Windows GUI, the Windows Metafile format has become a staple format for graphical applications and is therefore supported on most platforms. For example, Adobe's Encapsulated PostScript (EPS) supports the use of an included Windows Metafile when required to store vector-based data.

If you are using metafiles in the Windows or OS/2 operating systems you will not write code to parse them directly, but instead call a set of Windows API functions used to manipulate metafiles. Because there is ample documentation from Microsoft and IBM on how to use metafiles under Windows and OS/2, this article will look at the structure and direct parsing of Microsoft metafiles without the benefit of the Windows API.

If you have access to the Win16 Software Development Kit, then you will find all of the data structures and data type definitions associated with WMF files in the WINDOWS.H header file. For the Win32 SDK you will find WMF and EMF definitions in the WINUSER.H and WINGDI.H header files. Both of these SDKs are available with all C and C++ compilers that support Windows application development.

File Organization

A metafile is comprised of one or two information headers and an array of variable-length records that store the GDI function call information.

There are four flavors of Windows metafiles: standard, placeable, clipboard, and enhanced. A standard metafile contains an 18-byte WMF header followed by one or more records of GDI commands. A placeable metafile contains a 22-byte header followed by the standard 18-byte WMF header and GDI command records. Clipboard metafiles contains a 8-byte (Win16) or 16-byte (Win32) header that precedes the standard metafile header. Enhanced metafiles contain only EMF records, with the first record storing the header information. EMF files are not compatible in design with the other types of WMF metafiles.

Windows Metafiles (Figure Microsoft Windows Metafile-1) contain a header, followed by one or more records of data. The header contains a description of the record data stored in the metafile. Each record is a binary-encoded Microsoft Windows Graphics Device Interface (GDI) function call. The GDI is used by Windows to perform all output to a window, printer, or other output device. When the metafile data is rendered (or played back, in Microsoft terminology), the data from each record is used to perform the appropriate GDI function call to render each object stored in the file. The last record in the file contains information indicating that the end of the record data has been reached.

Figure Microsoft Windows Metafile-1: Standard metafile format

[Graphic: Figure Microsoft Windows Metafile-1]

Placeable metafiles (Figure Microsoft Windows Metafile-2) are WMF files with an 18-byte header prepended. This preheader contain information used to describe the position of the metafile drawing on the printed page (something that the original WMF file designers did not think of).

Figure Microsoft Windows Metafile-2: Placeable metafile format

[Graphic: Figure Microsoft Windows Metafile-2]

Clipboard metafiles (Figure Microsoft Windows Metafile-3) are similar to placeable metafiles in that that also contain an extra header prepended to a WMF file. The Clipboard preheader contains information used to describe the position of the metafile on the Windows Clipboard and the mapping mode used to playback the data.

Figure Microsoft Windows Metafile-3: Clipboard metafile format

[Graphic: Figure Microsoft Windows Metafile-3]

Enhanced metafiles (Figure Microsoft Windows Metafile-4) have the same basic format of WMF files: a header followed by one or more records of drawing objects stored as GDI commands. Unlike WMF, the header is also stored in a record which appears as the first record in each EMF file. The EMF header now contains additional information, including the position and mapping information stored in the placeable and clipboard metafile preheaders. EMF also adds the features of a file description string and a programmable color palette to the metafile format.

Figure Microsoft Windows Metafile-4: Enhanced metafile format

[Graphic: Figure Microsoft Windows Metafile-4]

File Details

The standard Windows metafile header is 18 bytes in length and is structured as follows:

typedef struct _WindowsMetaHeader
{
  WORD  FileType;       /* Type of metafile (0=memory, 1=disk) */
  WORD  HeaderSize;     /* Size of header in WORDS (always 9) */
  WORD  Version;        /* Version of Microsoft Windows used */
  DWORD FileSize;       /* Total size of the metafile in WORDs */
  WORD  NumOfObjects;   /* Number of objects in the file */
  DWORD MaxRecordSize;  /* The size of largest record in WORDs */
  WORD  NumOfParams;    /* Not Used (always 0) */
} WMFHEAD;

FileType contains a value which indicates the location of the metafile data. A value of 0 indicates that the metafile is stored in memory, while a 1 indicates that it is stored on disk.

HeaderSize contains the size of the metafile header in 16-bit WORDs. This value is always 9.

Version stores the version number of Microsoft Windows that created the metafile. This value is always read in hexadecimal format. For example, in a metafile created by Windows 3.0 and 3.1, this item would have the value 0x0300.

FileSize specifies the total size of the metafile in 16-bit WORDs.

NumOfObjects specifies the number of objects that are in the metafile.

MaxRecordSize specifies the size of the largest record in the metafile in WORDs.

NumOfParams is not used and is set to a value of 0.

Aldus Placeable Metafiles

Placeable Metafiles (file extension .APM) were created by Aldus Corporation as a non-standard way of specifying how a metafile is mapped and scaled on an output device. Placeable metafiles are quite wide-spread, but not directly supported by the Windows API. To playback a placeable metafile using the Windows API, you will first need to strip the placeable metafile header from the file. This is typically performed by copying the metafile to a temporary file starting at file offset 0x16. The contents of the temporary file may then be used as input to the Windows GetMetaFile(), PlayMetaFile(), CopyMetaFile(), etc. GDI functions. Placeable Metafiles are limited to 64K in length.

Each placeable metafile begins with a 22-byte header followed by a standard metafile:

typedef struct _PlaceableMetaHeader
{
  DWORD Key;           /* Magic number (always 9AC6CDD7h) */
  WORD  Handle;        /* Metafile HANDLE number (always 0) */
  SHORT Left;          /* Left coordinate in metafile units */
  SHORT Top;           /* Top coordinate in metafile units */
  SHORT Right;         /* Right coordinate in metafile units */
  SHORT Bottom;        /* Bottom coordinate in metafile units */
  WORD  Inch;          /* Number of metafile units per inch */
  DWORD Reserved;      /* Reserved (always 0) */
  WORD  Checksum;      /* Checksum value for previous 10 WORDs */
} PLACEABLEMETAHEADER;

Key contains a special identification value that indicates the presence of a placeable metafile header and is always 9AC6CDD7h.

Handle is used to stored the handle of the metafile in memory. When written to disk, this field is not used and will always contains the value 0.

Left, Top, Right, and Bottom contain the coordinates of the upper-left and lower-right corners of the image on the output device. These are measured in twips[1]. These four fields also correspond to the RECT structure used in Microsoft Windows and defined in the file WINDOWS.H.

[1] A twip (meaning "twentieth of a point") is the logical unit of measurement used in Windows Metafiles. A twip is equal to 1/1440 of an inch. Thus 720 twips equal 1/2 inch, while 32,768 twips is 22.75 inches.

Inch contains the number of twips per inch used to represent the image. Normally, there are 1440 twips per inch; however, this number may be changed to scale the image. A value of 720 indicates that the image is double its normal size, or scaled to a factor of 2:1. A value of 360 indicates a scale of 4:1, while a value of 2880 indicates that the image is scaled down in size by a factor of two. A value of 1440 indicates a 1:1 scale ratio.

Reserved is not used and is always set to 0.

Checksum contains a checksum value for the previous 10 WORDs in the header. This value can be in an attempt to detect if the metafile has become corrupted. The checksum is calculated by XORing each WORD value to an initial value of 0:

PLACEABLEMETAHEADER pmh; 
pmh.Checksum = 0;
pmh.Checksum ^= (pmh.Key & 0x0000FFFFUL);
pmh.Checksum ^= ((pmh.Key & 0xFFFF0000UL) >> 16);
pmh.Checksum ^= pmh.Handle; 
pmh.Checksum ^= pmh.Left;
pmh.Checksum ^= pmh.Top; 
pmh.Checksum ^= pmh.Right;
pmh.Checksum ^= pmh.Bottom; 
pmh.Checksum ^= pmh.Inch;
pmh.Checksum ^= (pmh.Reserved & 0x0000FFFFUL);
pmh.Checksum ^= ((pmh.Reserved & 0xFFFF0000UL) >> 16);

An alternative way to step through the header structure one WORD at a time is to use a pointer as shown below:

PLACEABLEMETAHEADER *pmh; 
WORD *ptr;
pmh->Checksum = 0;
for (ptr = (WORD *) pmh; ptr < (WORD *)pmh->Checksum; ptr++)
    pmh->Checksum ^= *ptr;

Clipboard Metafile

Clipboard metafiles are stored in Microsoft Clipboard Viewer files (file extension .CLP) and Microsoft Windows Write files (file extension .WRI). Clipboard metafiles are also based on the standard metafile format, but are preceded by an additional 8- or 16-byte header that allows the position of the metafile on the Clipboard viewer. If the Clipboard metafile was created using a 16-bit version of Windows (Windows and Windows for Workgroups) this header will contain 2-byte fields arranged in the following structure:

typedef struct _Clipboard16MetaHeader
{
  SHORT MappingMode; /* Units used to playback metafile */
  SHORT Width;       /* Width of the metafile */
  SHORT Height;      /* Height of the metafile */
  WORD  Handle;      /* Handle to the metafile in memory */
} CLIPBOARD16METAHEADER;

MappingMode specifies the type of Windows coordinate mapping units used to store and playback the metafile data. This field will contain one of the following values:

Value Mapping Mode One Unit Maps To
1 Text One pixel
2 Low Metric 0.1 millimeter
3 High Metric 0.01 millimeter
4 Low English 0.01 inch
5 High English 0.001 inch
6 Twips 1/1440th of an inch
7 Isotropic Application specific (aspect ratio preserved)
8 Anisotropic Application specific (aspect ratio not preserved)

Width and Height are the size of the metafile in the units specified in the MappingMode field.

Handle is used to stored the handle of the metafile in memory. When written to disk, this field is not used and will always contains the value 0.

If the clipboard metafile was created under a 32-bit Windows environment (Windows NT and Windows 95) this header will contain the same fields as the Win16 WMF header, but the fields are 32 bytes in length:

typedef struct _Clipboard32MetaHeader
{
  LONG  MappingMode; /* Units used to playback metafile */
  LONG  Width;       /* Width of the metafile */
  LONG  Height;      /* Height of the metafile */
  DWORD Handle;      /* Handle to the metafile in memory */
} CLIPBOARD32METAHEADER;

Enhanced Metafiles

Enhanced metafile files are a "new and improved" 32-bit revision of the standard metafile. Only the 32-bit Windows API (Win32) supports EMF files and the 16-bit Windows APIs (Win16 and Win32s) do not. It is also recommended that WMF files not be used by applications running the Window 32-bit environments (Windows 95 and Windows NT). Enhanced metafiles are typically saved to disk using the file extension ".EMF".

The string data found in EMF files uses the Unicode character set. Each Unicode character is 2-bytes in size. The first 256 (of the over 36000) characters of the Unicode characters set are also the 256 characters of the ANSI character set used by Windows. The low byte of each Unicode character will contain the ANSI character value and the high byte will be zero. You will recognize Unicode strings in data dumps when you see a byte pattern such as " S u m m a r y I n f o" rather than the more common ANSI or ASCII pattern of "SummaryInfo".

EMF files have a header that is 80 bytes in length and contains the same features as found in placeable and Clipboard metafiles. Although the header is considered to be just another EMF record, it must appear as the first record in every EMF file.

typedef struct _EnhancedMetaHeader
{
    DWORD RecordType;       /* Record type */
    DWORD RecordSize;       /* Size of the record in bytes */
    LONG  BoundsLeft;       /* Left inclusive bounds */
    LONG  BoundsRight;      /* Right inclusive bounds */
    LONG  BoundsTop;        /* Top inclusive bounds */
    LONG  BoundsBottom;     /* Bottom inclusive bounds */
    LONG  FrameLeft;        /* Left side of inclusive picture frame */
    LONG  FrameRight;       /* Right side of inclusive picture frame */
    LONG  FrameTop;         /* Top side of inclusive picture frame */
    LONG  FrameBottom;      /* Bottom side of inclusive picture frame */
    DWORD Signature;        /* Signature ID (always 0x464D4520) */
    DWORD Version;          /* Version of the metafile */
    DWORD Size;             /* Size of the metafile in bytes */
    DWORD NumOfRecords;     /* Number of records in the metafile */
    WORD  NumOfHandles;     /* Number of handles in the handle table */
    WORD  Reserved;         /* Not used (always 0) */
    DWORD SizeOfDescrip;    /* Size of description string in WORDs */
    DWORD OffsOfDescrip;    /* Offset of description string in metafile */
    DWORD NumPalEntries;    /* Number of color palette entries */
    LONG  WidthDevPixels;   /* Width of reference device in pixels */
    LONG  HeightDevPixels;  /* Height of reference device in pixels */
    LONG  WidthDevMM;       /* Width of reference device in millimeters */
    LONG  HeightDevMM;      /* Height of reference device in millimeters */
} ENHANCEDMETAHEADER;

RecordType identifies the type of EMF record. For the EMF header record this value is always 00000001h.

RecordSize is the size of the header in bytes.

BoundsLeft, BoundsRight, BoundsTop, and BoundsBottom specify the size of the metafile drawing using X, Y, width, and length coordinate system. BoundsTop and BoundsBottom must have greater values than BoundsLeft and BoundsRight.

FrameLeft, FrameRight, FrameTop, and FrameBottom specify the size of the frame or border that encloses the metafile using X, Y, width, and length coordinate system. FrameTop and FrameBottom must have greater values than FrameLeft and FrameRight.

Signature is a file identification value and is always set to the value of 0x464D4520.

Version is the version number of the EMF file format. The current version is 1.0 and is stored as the value 0x00000100.

Size is the size of the entire metafile in bytes.

NumOfRecords is the total number of records in the metafile, including the header record.

NumOfHandles is the number of handles currently stored in the memory handle table. This value is always 0 for metafile data stored to disk.

Reserved is not used and is always zero.

SizeOfDescrip is the number of 16-bit Unicode characters contained in the description string, including all NULL characters. If this value is 0 then no description string is present in the file.

OffsOfDescrip is the location of the description string calculated as the number of bytes from the beginning of the file. If this value is 0 then no description string is present in the file.

NumPalEntries indicates the number of entries in the color palette. The color palette, if present, will be located in the End-Of-File records. If this value is 0 then no color palette is present.

WidthDevPixels and HeightDevPixels are the width and height of the display device in pixels.

WidthDevMM and HeightDevMM are the width and height of the display device in millimeters.

EMF Description String

A Unicode description string may be stored in an EMF file. If the SizeOfDescrip and OffsOfDescrip header fields are not zero, then a description string is present in the file. It will be located OffsOfDescrip bytes from the beginning of the file and will contain SizeOfDescrip Unicode characters.

Although not limited in practical size (unless you want a description longer than two billion characters), the description string is expected to have a specific format. The format is the name of the application that created the picture, a NULL, the name or description of the picture, and finally two NULLs. A typical EMF creator/title Unicode description string may therefore appear as such:

"Pain Paint 1.5\0Eating at Polly's\0\0"

Adhering to this "double NULL-terminated format" guarantees that standard information may be obtained form an EMF file and also allows the description string to be easily read using Windows GDI function calls.

Standard Metafile Records

Following the standard header in all WMF metafiles is a series of data records. This record is defined by the METARECORD data type definition in WINDOWS.H and has the following format:

typedef struct _StandardMetaRecord
{
    DWORD Size;          /* Total size of the record in WORDs */
    WORD  Function;      /* Function number (defined in WINDOWS.H) */
    WORD  Parameters[];  /* Parameter values passed to function */
} WMFRECORD;

Size is the total size of the records in 16-bit WORDs, including the Size field itself. The minimum possible size for a record is 3.

Function is the GDI number of the function called to playback this record. The low-byte of this value identifies the specific GDI function to call. The high-byte is the number of WORDs passed to this function, and is also the number of elements in the Parameters array. For example, a value of 0x0213 indicates the LineTo() function (0x13) and that this function is passed two WORD values.

Parameters is an array of the parameters used by the GDI function specified by this record. The parameters are stored in the reverse order in which they are passed to the function. For example, the two parameter values of the LineTo record are passed to the LineTo() function in the order of X and Y, but store in the record as Y and X.

Although each record parameter is stored as a WORD, the exact data type of the parameter is determined by the function it is passed to. Parameter values that change, such as device context handles, are never stored in metafile records.

The last record in every metafile always has a function number of 0000h, a Size of 0003h, and no Parameters array. This record is used to indicate the end of the record data in the metafile. The use of this terminator record is missing from the original WMF description found in the Windows SDK and is now documented in article Q99334 of the Microsoft Knowledge Base.

When a Windows Metafile format file is played back in the Windows environment, each record is read and the function call it contains is executed in the sequence in which it is stored in the file. Windows creates a table of object handles used by the functions called in the metafile records. The maximum size of this object handle table is indicated by the value of the NumOfObjects field in the header. Windows inserts new objects into the table using the SelectObject() API call. The object handle table is only created and used during the access of the metafile in memory and is never stored in a WMF file.

There are several important considerations that must be observed when reading metafile record data.

Not all of the records in a Windows Metafile have the above format, although most do. The metafile records that do follow this basic record format are the following:

Record Name Function Number
AbortDoc 0x0052
Arc 0x0817
Chord 0x0830
DeleteObject 0x01f0
Ellipse 0x0418
EndDoc 0x005E
EndPage 0x0050
ExcludeClipRect 0x0415
ExtFloodFill 0x0548
FillRegion 0x0228
FloodFill 0x0419
FrameRegion 0x0429
IntersectClipRect 0x0416
InvertRegion 0x012A
LineTo 0x0213
MoveTo 0x0214
OffsetClipRgn 0x0220
OffsetViewportOrg 0x0211
OffsetWindowOrg 0x020F
PaintRegion 0x012B
PatBlt 0x061D
Pie 0x081A
RealizePalette 0x0035
Rectangle 0x041B
ResetDc 0x014C
ResizePalette 0x0139
RestoreDC 0x0127
RoundRect 0x061C
SaveDC 0x001E
ScaleViewportExt 0x0412
ScaleWindowExt 0x0410
SelectClipRegion 0x012C
SelectObject 0x012D
SelectPalette 0x0234
SetTextAlign 0x012E
SetBkColor 0x0201
SetBkMode 0x0102
SetDibToDev 0x0d33
SetMapMode 0x0103
SetMapperFlags 0x0231
SetPalEntries 0x0037
SetPixel 0x041F
SetPolyFillMode 0x0106
SetRelabs 0x0105
SetROP2 0x0104
SetStretchBltMode 0x0107
SetTextAlign 0x012E
SetTextCharExtra 0x0108
SetTextColor 0x0209
SetTextJustification 0x020A
SetViewportExt 0x020E
SetViewportOrg 0x020D
SetWindowExt 0x020C
SetWindowOrg 0x020B
StartDoc 0x014D
StartPage 0x004F

For example, the LineTo record stores information that is passed to the LineTo() GDI function. The LineTo() function draws a line from the current point to the coordinates specified in the record data. Assuming the line is to be drawn to location 100,50, the data in the LineTo record would appear as follows:

Size           5        /* Five WORDs in the file */
Function       0x0213   /* LineTo function number */
Parameters[0]  50       /* Y Coordinate */
Parameters[1]  100      /* X Coordinate */

This data would be read from the metafile and passed to the LineTo() GDI functions as such (the hDC handle is not stored in the metafile):

LineTo(hDC, 100, 5);    

Several record formats deviate from the basic record format by containing a data structure, rather than a data array, in the Parameters field. These records are:

Record Name Function Number
AnimatePalette 0x0436
BitBlt 0x0922
CreateBitmap 0x06FE
CreateBitmapIndirect 0x02FD
CreateBrush 0x00F8
CreateBrushIndirect 0x02FC
CreateFontIndirect 0x02FB
CreatePalette 0x00F7
CreatePatternBrush 0x01F9
CreatePenIndirect 0x02FA
CreateRegion 0x06FF
DeleteObject 0x01F0
DibBitblt 0x0940
DibCreatePatternBrush 0x0142
DibStretchBlt 0x0B41
DrawText 0x062F
Escape 0x0626
ExtTextOut 0x0A32
Polygon 0x0324
PolyPolygon 0x0538
Polyline 0x0325
TextOut 0x0521
StretchBlt 0x0B23
StretchDIBits 0x0F43

For example, the BitBlt record is used to store bitmap data in a metafile. The BitBlt record stores a Device Dependent Bitmap (DDB) in its Parameters field. A DDB is a simple header followed by uncompressed bitmap data. The entire BitBlt record in a Windows 2.x metafile will have the following format:

typedef struct _BitBltRecord
{
    DWORD     Size;             /* Total size of the record in WORDs */
    WORD      Function;         /* Function number (0x0922) */
    WORD      RasterOp;         /* High-order word for the raster operation */
    WORD      YSrcOrigin;       /* Y-coordinate of the source origin */
    WORD      XSrcOrigin;       /* X-coordinate of the source origin */
    WORD      YDest;            /* Destination width */
    WORD      XDest;            /* Destination height */
    WORD      YDestOrigin;      /* Y-coordinate of the destination origin */
    WORD      XDestOrigin;      /* X-coordinate of the destination origin */
    /* DDB Bitmap */
    DWORD     Width;            /* Width of bitmap in pixels */
    DWORD     Height;           /* Height of bitmap in scan lines */
    DWORD     BytesPerLine;     /* Number of bytes in each scan line */
    WORD      NumColorPlanes;   /* Number of color planes in the bitmap */
    WORD      BitsPerPixel;     /* Number of bits in each pixel */
    RGBTRIPLE Bitmap[];         /* Bitmap data */
} BITBLTRECORD;

The bitmap data itself is stored as an array of RGBTRIPLE structures:

typedef struct _RGBTriple
{
    BYTE Red;
    BYTE Green;
    BYTE Blue;
} RGBTRIPLE;

Note that DDB bitmap found in Windows 2.x WMF BitBlt records is not compatible with Windows 3.0 and later. Windows 3.0 created the DibBitBlt record to store a Device Independent Bitmap (DIB) rather than a DDB. A DibBitBlt record has the following format:

typedef struct _DibBitBltRecord
{
    DWORD   Size;             /* Total size of the record in WORDs */
    WORD    Function;         /* Function number (0x0940) */
    WORD    RasterOp;         /* High-order word for the raster operation */
    WORD    YSrcOrigin;       /* Y-coordinate of the source origin */
    WORD    XSrcOrigin;       /* X-coordinate of the source origin */
    WORD    YDest;            /* Destination width */
    WORD    XDest;            /* Destination height */
    WORD    YDestOrigin;      /* Y-coordinate of the destination origin */
    WORD    XDestOrigin;      /* X-coordinate of the destination origin */
    /* DIB Bitmap */
    DWORD   Width;            /* Width of bitmap in pixels */
    DWORD   Height;           /* Height of bitmap in scan lines */
    DWORD   BytesPerLine;     /* Number of bytes in each scan line */
    WORD    NumColorPlanes;   /* Number of color planes in the bitmap */
    WORD    BitsPerPixel;     /* Number of bits in each pixel */
    DWORD   Compression;      /* Compression type */
    DWORD   SizeImage;        /* Size of bitmap in bytes */
    LONG    XPelsPerMeter;    /* Width of image in pixels per meter */
    LONG    YPelsPerMeter;    /* Height of image in pixels per meter */
    DWORD   ClrUsed;          /* Number of colors used */
    DWORD   ClrImportant;     /* Number of important colors */
    RGBQUAD Bitmap[];         /* Bitmap data */
} DIBBITBLTRECORD;

The bitmap data itself is stored as an array of RGBQUAD structures:

typedef struct _RGBQuad
{
    BYTE Red;
    BYTE Green;
    BYTE Blue;
    BYTE Reserved;
} RGBQUAD;

One other function-specific metafile record that deserves attention is Escape. The Windows 3.x API supports 64 different printer escape sequences that may be embedded into a WMF metafile. The actual sequences available will vary depending upon the printer driver(s) currently installed it the Windows environment. The use of printer escapes is discouraged, as including one or more Escape records in the WMF file makes the metafile data device-dependent.

One of the most common Escape records is MFCOMMENT. The WMF format does not directly support the insertion of human-readable text. The MFCOMMENT printer sequence is therefore used insert a string (or other private data) up to 32K in size into a metafile. There may be multiple Escape records stored in a metafile.

Consult the Microsoft Windows Programmer's Reference, Volume 2, for the internal structure of each function-specific metafile records.

Several GDI function calls were added or had their parameters changed with the release of Microsoft Windows 3.0. GDI function calls in this category include:

AnimatePalette
BitBlt
CreatePalette
CreatePatternBrush
DeleteObject
DibBitBlt
DibCreatePatternBrush
DibStretchBlt
RealizePalette
ResizePalette
StretchBlt

Note that not all GDI function calls can appear in a metafile. The only calls that are valid are those that take a handle to a device context as their first parameter. A complete list of all of the GDI function calls is documented in Microsoft Windows Programmer's Reference, Volume 2. They are also found in the WINDOWS.H header file. These GDI function calls are the directives that begin with the characters META. There are more than 70 different GDI function calls defined for Windows 3.x.

Enhanced Metafile Records

Enhanced metafiles also have an enhanced metafile record structure. When compared to standard metafile records you will see that all three fields are now 32-bit DWORDs and the positions of the Size and Function fields are exchanged:

typedef struct _EnhancedMetaRecord
{
    DWORD Function;      /* Function number (defined in WINGDI.H) */
    DWORD Size;          /* Total size of the record in WORDs */
    DWORD Parameters[];   /* Parameter values passed to GDI function */
} EMFRECORD;

Function is the GDI number of the function called to playback this record. In the Win32 SDK these values identified by the EMR_* definitions in the WINDOWS.H header file.

Size is the total size of the records in BYTEs, including the Size and Function fields. The minimum possible size for a record is 8.

Parameters is an array of the parameters used by the GDI function specified by this record. The parameters are stored in the reverse order in which they are passed to the function. For example, the two parameter values of the LineTo record are passed to the LineTo() function in the order of X and Y, but stored in the record as Y and X.

An EMF file is composed entirely of EMF records. Of the 97 record types presently defined for EMF files, at least two records must be present in every file. These are the header record (record type 1) and the End Of File record (record type 14).

Here are the function identifiers for all 97 EMF records. If you need to add EMF file capability to your software, then you must obtain a copy of the Microsoft documents that describe these Win32 API functions.

Record Value Record Value
EMR_ABORTPATH 68 EMR_POLYLINE 4
EMR_ANGLEARC 41 EMR_POLYLINE16 87
EMR_ARC 45 EMR_POLYLINETO 6
EMR_ARCTO 55 EMR_POLYLINETO16 89
EMR_BEGINPATH 59 EMR_POLYPOLYGON 8
EMR_BITBLT 76 EMR_POLYPOLYGON16 91
EMR_CHORD 46 EMR_POLYPOLYLINE 7
EMR_CLOSEFIGURE 61 EMR_POLYPOLYLINE16 90
EMR_CREATEBRUSHINDIRECT 39 EMR_POLYTEXTOUTA 96
EMR_CREATEDIBPATTERNBRUSHPT 94 EMR_POLYTEXTOUTW 97
EMR_CREATEMONOBRUSH 93 EMR_REALIZEPALETTE 52
EMR_CREATEPALETTE 49 EMR_RECTANGLE 43
EMR_CREATEPEN 38 EMR_RESIZEPALETTE 51
EMR_DELETEOBJECT 40 EMR_RESTOREDC 34
EMR_ELLIPSE 42 EMR_ROUNDRECT 44
EMR_ENDPATH 60 EMR_SAVEDC 33
EMR_EOF 14 EMR_SCALEVIEWPORTEXTEX 31
EMR_EXCLUDECLIPRECT 29 EMR_SCALEWINDOWEXTEX 32
EMR_EXTCREATEFONTINDIRECTW 82 EMR_SELECTCLIPPATH 67
EMR_EXTCREATEPEN 95 EMR_SELECTOBJECT 37
EMR_EXTFLOODFILL 53 EMR_SELECTPALETTE 48
EMR_EXTSELECTCLIPRGN 75 EMR_SETARCDIRECTION 57
EMR_EXTTEXTOUTA 83 EMR_SETBKCOLOR 25
EMR_EXTTEXTOUTW 84 EMR_SETBKMODE 18
EMR_FILLPATH 62 EMR_SETBRUSHORGEX 13
EMR_FILLRGN 71 EMR_SETCOLORADJUSTMENT 23
EMR_FLATTENPATH 65 EMR_SETDIBITSTODEVICE 80
EMR_FRAMERGN 72 EMR_SETMAPMODE 17
EMR_GDICOMMENT 70 EMR_SETMAPPERFLAGS 16
EMR_HEADER 1 EMR_SETMETARGN 28
EMR_INTERSECTCLIPRECT 30 EMR_SETMITERLIMIT 58
EMR_INVERTRGN 73 EMR_SETPALETTEENTRIES 50
EMR_LINETO 54 EMR_SETPIXELV 15
EMR_MASKBLT 78 EMR_SETPOLYFILLMODE 19
EMR_MODIFYWORLDTRANSFORM 36 EMR_SETROP2 20
EMR_MOVETOEX 27 EMR_SETSTRETCHBLTMODE 21
EMR_OFFSETCLIPRGN 26 EMR_SETTEXTALIGN 22
EMR_PAINTRGN 74 EMR_SETTEXTCOLOR 24
EMR_PIE 47 EMR_SETVIEWPORTEXTEX 11
EMR_PLGBLT 79 EMR_SETVIEWPORTORGEX 12
EMR_POLYBEZIER 2 EMR_SETWINDOWEXTEX 9
EMR_POLYBEZIER16 85 EMR_SETWINDOWORGEX 10
EMR_POLYBEZIERTO 5 EMR_SETWORLDTRANSFORM 35
EMR_POLYBEZIERTO16 88 EMR_STRETCHBLT 77
EMR_POLYDRAW 56 EMR_STRETCHDIBITS 81
EMR_POLYDRAW16 92 EMR_STROKEANDFILLPATH 63
EMR_POLYGON 3 EMR_STROKEPATH 64
EMR_POLYGON16 86 EMR_WIDENPATH 66

Color Palette

EMF files may also contain an optional color palette used to render the EMF drawing. By comparison, WMF files do not store a color palette and instead use the default Windows foreground palette.

The NumPalEntries field in the EMF header will indicate the number of entries in the palette and will have a value of zero if no palette is present. The color palette, if present, will be stored in the End Of File record. The EOF record is always the last record stores in an EMF file and has the following format:

typedef struct _EndOfRecord
{
    DWORD  Function;        /* End Of Record ID (14) */
    DWORD  Size;            /* Total size of the record in WORDs */
    DWORD  NumPalEntries;   /* Number of color palette entries */
    DWORD  OffPalEntries;   /* Offset of color palette entries */
    PALENT Palette[];       /* The color palette data */
    DWORD  OffToEOF;        /* Offset to beginning of this record */
} ENDOFRECORD;

Function is the function number of this record. For EOF records this value is always 14.

Size is the total size of this record in bytes. For an EOF record that does not contain a color palette this value will be 20.

NumPalEntries is the number of color palette entries. This value will correspond the value of the NumPalEntries field in the EMF header. A value of zero indicates no color palette is present.

OffPalEntries indicates the position of the first color palette entry. The offset is measured from the beginning of the EOF record.

Palette is the color palette data stored as an array of PALENT structures. This field is not present in the EOF record if a color palette is not present.

OffToEOF indicates the byte offset back to the beginning of the EOF record. This field is located after the color palette data (if any) and always contains the same value as the Size field.

Each entry in the color palette is four bytes in size and has the following format:

typedef struct _PaletteEntry
{
    BYTE Red;       /* Red component value */
    BYTE Green;     /* Green component value */
    BYTE Blue;      /* Blue component value */
    BYTE Flags;     /* Flag values */
} PALENT;

Red, Green, and Blue contain the color component values for the 24-bit color palette entry.

Flags contains a bitfield of flags use to indicate the usage of the palette entry. Values for this field are:
0x01 Palette index used for animation
0x02 Palette index is explicit to device
0x04 Do not match color to system palette

GDI Comment

One very nice feature of the EMF format is the ability to embed private data within an EMF file. Unlike the WMF printer escape comment, the GDI comment may contain any type of data and is completely device independent.

The GDICOMMENT record has the following format:

typedef struct _GdiCommentRecord
{
    DWORD   Function;      /* GDI Comment ID (70) */
    DWORD   Size;          /* Total size of the record in WORDs */
    DWORD   SizeOfData;    /* Size of comment data in bytes */
    BYTE    Data[];        /* Comment data */        
} GDICOMMENTRECORD;

Function is the function number of this record. For GDI Comment records this value is always 70.

Size is the total size of this record in bytes. For an GDI comment record that does not contain any data this value will be 12.

SizeOfData is the number of bytes in the Data field.

Data is the GDI Comment data. The data may be strings, Encapsulated PostScipt, or an enhanced metafile.

Each GDI Comment record may store one or more types of comment data. The Metafile comment stores a single metafile. The BeginGroup and EndGroup comments store a collection of enhanced metafile objects and description strings. And the Multiformats comment stores multiple enhanced metafiles and Encapsulated PostScript data.

GDI Comments should never contain any application-specific data, as this would make the enhanced metafile device dependent. Comment data should also not store the offset position of any other data in the file. It is possible that records will be added or removed to the metafile causing the offset values to then be invalid.

The Metafile comment is a header followed by an enhanced metafile. The header has the following format:

typedef struct _GdiCommentMetafile
{
    DWORD Identifier;       /* Comment ID (0x43494447) */
    DWORD Comment;          /* Metafile ID (0x80000001) */
    DWORD Version;          /* Version of the metafile */
    DWORD Checksum;         /* Checksum value of the metafile */
    DWORD Flags;            /* Flags (always 0) */
    DWORD Size;             /* Size of the metafile data in bytes */
} GDICOMMENTMETAFILE;

Identifier contains a value of 0x43494447 identifying this structure as a GDI public comment.

Comment contains a value of 0x80000001 identifying this structure as a metafile comment.

Version is the version of the metafile. This value is typically 0x00000001.

Checksum is the checksum value of the metafile data.

Flags is not presently used and is always 0.

Size is the number of bytes in the metafile data.

The BeginGroup and EndGroup comments contain one or more EMF drawing objects. The BeginGroup comment starts the list, followed by all EMF records, and is completed by the EndGroup comment. Such groups may be nested. The format of the BeginGroup header is as follows:

typedef struct _GdiCommentBeginGroup
{
    DWORD Identifier;       /* Comment ID (0x43494447) */
    DWORD Comment;          /* BeginGroup ID (0x00000002) */
    LONG  BoundsLeft;       /* Left side of bounding rectangle */
    LONG  BoundsRight;      /* Right side of bounding rectangle */
    LONG  BoundsTop;        /* Top side of bounding rectangle */
    LONG  BoundsBottom;     /* Bottom side of bounding rectangle */
    DWORD SizeOfDescrip;    /* Number of characters in the description */     
} GDICOMMENTBEGINGROUP;

Identifier contains a value of 0x43494447 identifying this structure as a GDI public comment.

Comment contains a value of 0x00000002 identifying this structure as a BeginGroup comment.

BoundsLeft, BoundsRight, BoundsTop, and BoundsBottom define the bounding rectangle of the picture.

SizeOfDescrip is the number of Unicode characters in the description string. This string, if present, will always immediately follow this header. If this value is zero then there is no description string present.

The EndGroup comment contains only a header and no data. The header has the following format:

typedef struct _GdiCommentEndGroup
{
    DWORD Identifier;       /* Comment ID (0x43494447) */
    DWORD Comment;          /* EndGroup ID (0x00000003) */
} GDICOMMENTENDGROUP;

Identifier contains a value of 0x43494447 identifying this structure as a GDI public comment.

Comment contains a value of 0x00000003 identifying this structure as a EndGroup comment.

The Multiformats comment is used to store metafile and Encapsulated PostScript (EPS) picture data. This comment begins with a header followed by one or more pictures. The format of a Multiformats comments header is as follows:

typedef struct _GdiCommentMultiFormats
{
    DWORD Identifier;       /* Comment ID (0x43494447) */
    DWORD Comment;          /* Multiformats ID (0x40000004) */
    LONG  BoundsLeft;       /* Left side of bounding rectangle */
    LONG  BoundsRight;      /* Right side of bounding rectangle */
    LONG  BoundsTop;        /* Top side of bounding rectangle */
    LONG  BoundsBottom;     /* Bottom side of bounding rectangle */
    DWORD NumFormats;       /* Number of formats in comment */
    EMRFORMAT Data[];       /* Array of comment data */
} GDICOMMENTMULTIFORMATS

Identifier contains a value of 0x43494447 identifying this structure as a GDI public comment.

Comment contains a value of 0x40000004 identifying this structure as a Multiformats comment.

BoundsLeft, BoundsRight, BoundsTop, and BoundsBottom define the bounding rectangle of the picture.

NumFormats is the number of EMRFORMAT structures in the data.

Data contains one or more EMRFORMAT structures followed their associated data. Each structure identifies the type of comment data, its size and location in the record.

typedef struct _EmrFormat
{
    DWORD Signature;    /* Format signature */
    DWORD Version;      /* Format version number */
    DWORD Data;         /* Size of data in bytes */
    DWORD OffsetToData; /* Offset to data */
} EMRFORMAT;

Signature is the data format identifier. A value of 0x464D4520 indicates an enhanced metafile, and a value of 0x46535045 indicates an Encapsulated PostScript file.

Version is the version level of the data. For EPS data this field will hold the EPS version number. For an enhanced metafile this value of this field will be 0x00000001.

Data is the size of the data associated with this structure in bytes.

OffsetToData is the byte offset of the beginning of the data. The offset is measured from the beginning of the Comments field in the GDICOMMENTMULTIFORMATS record structure.

For Further Information

For further information about the Microsoft Windows Metafile and Enhanced Metafile formats, see the specification included on the CD-ROM that accompanies this book. You may also obtain information by contacting Microsoft at:

Microsoft Corporation
One Microsoft Way
Redmond, WA 98052-6399
Voice: 206-882-8080
FAX: 206-936-7329
BBS: 206-637-9009
WWW: http://www.microsoft.com/
FTP: ftp://ftp.microsoft.com/

Additional information about the Windows Metafile and Enhanced Metafile Format and the Microsoft Windows Graphics Device Interface can also be found in the following references:

Swan, Tom, Inside Windows File Formats, Sams Publishing, Indianapolis, IN, 1993.

Microsoft Corporation, Microsoft Windows: A Guide to Programming, Microsoft Windows Programmer's Reference Library, Microsoft Press, Redmond, WA, 1990.

Microsoft Corporation, Microsoft Windows: Programmer's Reference, Volume 4: Resources, Microsoft Windows Programmer's Reference Library, Microsoft Press, Redmond, WA, 1990.

Microsoft Corporation, Microsoft Windows: Programming Tools, Microsoft Windows Programmer's Reference Library, Microsoft Press, Redmond, WA, 1990.

The Microsoft Windows Programmer's Reference Library is the master reference for programmers working with all aspects of Microsoft Windows. The books in this library are supplied with the Microsoft Windows Software Development Kit (SDK). The manuals supplied with the Visual C++ 4.0 Professional Development Systems are also very helpful. You can get information about obtaining these products from:

Microsoft Information Center
Voice: 800-426-9400

The Microsoft Developers Network (MSDN) distributes several files containing information on the WMF and EMF formats. These files may be found on the MSDN CD, or on the Microsoft Web site at:

http://www.microsoft.com/Softlib/MSLFILES/ENMETA.EXE

This archive contains sample Windows code to manipulate EMF files. Two sample EMF files are included.

http://www.microsoft.com/Softlib/MSLFILES/METAFILE.EXE

This archive contains the METAFILE.HLP help file that describes the WMF file format.

http://www.microsoft.com/Softlib/MSLFILES/PLAYMETA.EXE

This archive contains sample Windows code to manipulate WMF files

http://www.microsoft.com/developr/MSDN/OctCD/EMFDCO.ZIP

This archive contains the Windows source code for the EMF decoding utility.

http://www.microsoft.com/developr/MSDN/OctCD/ENHMET.ZIP

This archive contains the ENHMETA.HLP help file that describes the EMF file format.

http://www.microsoft.com/developr/MSDN/OctCD/METAFI.ZIP

This archive contains the METAFI.HLP help file that describes the WMF file format.


Copyright © 1996, 1994 O'Reilly & Associates, Inc. All Rights Reserved.

libwmf-0.2.8.4/doc/caolan/rop.html0000644000077100007710000000212307260330370016171 0ustar fjffjf00000000000000 ROP Support

ROP Support

ROP CODE SUPPORTED
X version gd (gif) version
SRCCOPYXX
MERGECOPYX-
SRCANDX-
NOTSRCCOPYX-
SRCERASEX-
SRCINVERTX-
SRCPAINTX-
NOTSRCERASEX-
MERGEPAINTX-
PATPAINTX-
PATCOPYXX
DSTINVERTXX
PATINVERTXX
BLACKNESSXX
WHITENESSXX

back libwmf-0.2.8.4/doc/caolan/support.html0000644000077100007710000002657207260330370017123 0ustar fjffjf00000000000000 Window Metafile (wmf) Reference.

Window Metafile (wmf) Reference

METAFILE OPERAND SUPPORTED
X version gd (gif) version
#define META_SETBKCOLOR 0x0201
X X
#define META_SETBKMODE 0x0102 X X
#define META_SETMAPMODE 0x0103 X X
#define META_SETROP2 0x0104 X -
#define META_SETPOLYFILLMODE 0x0106 X4 -
#define META_SETSTRETCHBLTMODE 0x0107 -3 -3
#define META_SETTEXTCOLOR 0x0209 X X
#define META_SETTEXTCHAREXTRA 0x0108 X4 -
#define META_SETWINDOWORG 0x020B X X
#define META_SETWINDOWEXT 0x020C X X
#define META_SETVIEWPORTORG 0x020D X4 X4
#define META_SETVIEWPORTEXT 0x020E X4 X4
#define META_OFFSETWINDOWORG 0x020F X4 X4
#define META_SCALEWINDOWEXT 0x0410 X4 X4
#define META_OFFSETVIEWPORTORG 0x0211 X4 X4
#define META_SCALEVIEWPORTEXT 0x0412 X4 X4
#define META_LINETO 0x0213 X X
#define META_MOVETO 0x0214 X X
#define META_EXCLUDECLIPRECT 0x0415 X -
#define META_INTERSECTCLIPRECT 0x0416 X -
#define META_ARC 0x0817 X X
#define META_ELLIPSE 0x0418 X X
#define META_FLOODFILL 0x0419 X4 X4
#define META_PIE 0x081A X X
#define META_RECTANGLE 0x041B X X
#define META_ROUNDRECT 0x061C X X
#define META_PATBLT 0x061D X46 X46
#define META_SAVEDC 0x001E X X
#define META_SETPIXEL 0x041F X X
#define META_OFFSETCLIPRGN 0x0220 X -
#define META_POLYGON 0x0324 X X
#define META_POLYLINE 0x0325 X X
#define META_ESCAPE 0x0626 -5 -5
#define META_RESTOREDC 0x0127 X X
#define META_FILLREGION 0x0228 X X
#define META_FRAMEREGION 0x0429 X -
#define META_INVERTREGION 0x012A X4 -
#define META_PAINTREGION 0x012B X4 X
#define META_SELECTCLIPREGION 0x012C X4 -
#define META_SELECTOBJECT 0x012D X X
#define META_SETTEXTALIGN 0x012E X _
#define META_CHORD 0x0830 X X
#define META_SETMAPPERFLAGS 0x0231 -3 -3
#define META_TEXTOUT 0x0521
#define META_EXTTEXTOUT 0x0a32 X
#define META_SETDIBTODEV 0x0d33 X4 X4
#define META_POLYPOLYGON 0x0538 X X
#define META_DIBBITBLT 0x0940 X7 -
#define META_DIBSTRETCHBLT 0x0b41 X7 -
#define META_EXTFLOODFILL 0x0548 X4 X4
#define META_DELETEOBJECT 0x01f0 X X
#define META_CREATEPENINDIRECT 0x02FA X X
#define META_CREATEFONTINDIRECT 0x02FB
#define META_CREATEBRUSHINDIRECT 0x02FC X X
#define META_CREATEREGION 0x06FF X4 X4
#define META_STRETCHDIB 0x0f43 X X
#define META_SETTEXTJUSTIFICATION 0x020A X4 -

These opcodes are not seen in the wild, so realworld instances of these are welcome, they all appear to get translated into the equivalent that is prefixed with DIB

#define META_BITBLT 0x0922
#define META_STRETCHBLT 0x0B23 X7 -
#define META_CREATEPATTERNBRUSH 0x01F9

These opcodes are all related to palettes, and i dont think they matter at all, information to the contrary is welcome, these are only implemented to the degree that they dont mess up object counting

#define META_SELECTPALETTE 0x0234
#define META_REALIZEPALETTE 0x0035
#define META_ANIMATEPALETTE 0x0436
#define META_SETPALENTRIES 0x0037
#define META_RESIZEPALETTE 0x0139
#define META_CREATEPALETTE 0x00f7

These opcodes are unimplemented, for the reason that i dont know what they are, no known documentation

#define META_SETRELABS 0x0105 ?2 ?2

2 What on earth is this ?
3 Personally considered unimportant, to be dealt with at my leisure.
4 Untested
5 Has no effect on the output of the wmf file.
6 Full support pending palette handling.
7 Uses ROP, see ROP SUPPORT.


Caolan.McNamara@ul.ie
libwmf home
libwmf-0.2.8.4/doc/caolan/support2.html0000644000077100007710000000646607260330370017205 0ustar fjffjf00000000000000 META_SETBKCOLOR
META_SETBKMODE
META_SETMAPMODE
META_SETROP2
META_SETRELABS
META_SETPOLYFILLMODE
META_SETSTRETCHBLTMODE
META_SETTEXTCHAREXTRA

META_SETTEXTCOLOR

U32 color

META_SETTEXTJUSTIFICATION
META_SETWINDOWORG
META_SETWINDOWEXT
META_SETVIEWPORTORG
META_SETVIEWPORTEXT
META_OFFSETWINDOWORG
META_SCALEWINDOWEXT
META_OFFSETVIEWPORTORG
META_SCALEVIEWPORTEXT
META_LINETO
META_MOVETO
META_EXCLUDECLIPRECT
META_INTERSECTCLIPRECT


META_ARC

U16 array noValue
0 U16 yend, y of endpoint
1 U16 xend, x of endpoint
2 U16 ystart, y of endpoint
3 U16 xstart, x of endpoint
4 U16 bottom, bottom of bounding box
5 U16 right, right of bounding box
6 U16 top, top of bounding box
7 U16 left, left of bounding box
left, right, top and bottom are the extents of the ellipse of which the arc is a part
xstart,ystart define a point from which you draw an imaginary line between it and the center of the ellipse, where that line intersects the ellipse is the starting part of the arc
xend,yend similiarly define the end of the arc.

Arc


META_ELLIPSE
META_FLOODFILL
META_PIE
META_RECTANGLE
META_ROUNDRECT
META_PATBLT
META_SAVEDC
META_SETPIXEL
META_OFFSETCLIPRGN
META_TEXTOUT
META_BITBLT
META_STRETCHBLT
META_POLYGON
META_POLYLINE
META_ESCAPE
META_RESTOREDC
META_FILLREGION
META_FRAMEREGION
META_INVERTREGION
META_PAINTREGION
META_SELECTCLIPREGION
META_SELECTOBJECT
META_SETTEXTALIGN
META_CHORD
META_SETMAPPERFLAGS
META_EXTTEXTOUT
META_SETDIBTODEV
META_SELECTPALETTE
META_REALIZEPALETTE
META_ANIMATEPALETTE
META_SETPALENTRIES
META_POLYPOLYGON
META_RESIZEPALETTE
META_DIBBITBLT
META_DIBSTRETCHBLT
META_DIBCREATEPATTERNBRUSH
META_STRETCHDIB
META_EXTFLOODFILL
META_DELETEOBJECT
META_CREATEPALETTE
META_CREATEPATTERNBRUSH
META_CREATEPENINDIRECT
META_CREATEFONTINDIRECT
META_CREATEBRUSHINDIRECT
META_CREATEREGION
libwmf-0.2.8.4/doc/caolan/template.html0000644000077100007710000000046407260330370017212 0ustar fjffjf00000000000000

NAME

META_SETBKCOLOR

NEAREST API CALL

#include <windows.h>

DESCRIPTION

back

libwmf-0.2.8.4/doc/caolan/unknown.html0000644000077100007710000000060607260330370017074 0ustar fjffjf00000000000000 Unknown Op

NAME

Unknown Op

DESCRIPTION

I dont know what this does at all, noone appears to know, please if you know get in contact with me.

back libwmf-0.2.8.4/doc/caolan/msmeta01.gif0000644000077100007710000000763307260330370016634 0ustar fjffjf00000000000000GIF87a  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJuoXjʵׯ`ÊKWj]˒pʝKݻx׮/\i mÈ+^|)#Kh˘3u8ϠVL鼜;^͚跒jԐDM'Us )$']ŇNr]wƜTC`+>/oAM=ˍ{uGW~e'`dE||W}5tAM \ MBJ Bמzl@݆bb}a Qyd(1(޸aj1A bh`7RS4 x5H wOR#eOu@K@5Wl  pvp xxxzzU䑈RZmO6xIPW^K:IgyŇyI)  nw+]f{m>&rDuk(5rIi|k"kqjҧyw|*Zߌm*ny*Ke!rE"(%;u$ B!wq[/5Px1Q ٪ݒeQs2޴3szێ -9*5Gx3˼+GMԢDr[w\Z|Ce\ض]JmomRէOwl:E7$x7>G6Ungw砇9}KnzL;:㐟I.ޭnHϮ;i{G.ܥnb 4!k~/*щ"E1l#8! (egX$-IOҔdJK;:2 hRS¥8ajxRsz=f5(ød) ؐEldƬKIJS\<UM GOmMX߳cwYcH,wD&6qc6%^4v*pgb0̻ar̜0߅(63|~N^Hʃro"0QȜ0Ϸ>K=v f(wuzJNȄ߮Ͻճ Dqcwc0;}s0^yLfyWtDW{d"`gO55fA#aO>Es@CЏ=[ϾG]|~wGpvgF/m`~Ͽ@Z!wgYW 4 Xq 8P8XAH xnw X(@ ip؁0Yq r ЂN"r?2EhHjPSkKȄE!Hhg.Y;JDž7_7`'=(=z!Vh#>iee e thq&tTa4 2eH%cXX͢XsG?v&6u85sbPR"#B'%H'`2Gh$"!$jr ك*P BZ4E=B0$T Fʼnu .0s+> (D2GK4$ 1D{"b0$ VEb%bgP Fhj$(3Q)b3"]Ec0 2P/42h'ObR.V3V<jЌzREIR$G$V$* c+*(11.)E#GX҈~w.rK !F*0D/„ ]@j!9! duE%#3a+&eu'P-9TYkfJN!r0QB\Qd\)Ld!&)(G gz9uV@ aPx5! Voqp=ewp5P`u w8$yWeQuС_b4hhE8eT[H՝ހd! >>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`Ê5IٳhӪ]˶۷pʝؼx ,K߿_ ^̸zFLyǘ3kYʠ^LtΒC:txYןֺpk5ieJ+5|_[oq/FkumjgeVקtnf)lV5gVs<^fxEu* m(5nE'Vnw&k*n'.!.; Y>k-yL ;Z˕eeQmpݡP{&"kjmx(p\Eªr8+%a wx(J:.s xKWw]7=QKAK~ .NpLR_Huw""+lNԠ$ _ikI(T! ]+Ƃ61tьAlejD$vͭ#"+GnVҒWCc݊bchc(I9so#?"4!22J$:NM!9an貗Q"0TRFV4ieIkiF}!/:P)&$iLm MrzhΛ$:UiNslK}@y&0i~^$3(S%u&uv^3KKlE1ZlpK )IIz4iݙ^ΤM;kOX#p涊-_sHmR*vQTUW9n_ Xϳ2+NSx#`@R(JCъvxe)`a؍l'+^Xlg?Dzu `j+؋(JwCy+y! /lNzNx,>y;s]{qj,g^|ySF{Mnray(2HXЦwb 7{L; H2Ƶ Y5q7ijld.<oᒯnO_E_3PcI @@Slq[DgM u1PINudSvtkvdpr| ~;;l4N4J%c?q@)tlF&RA7JZZX_GЀWC^} N1z8€א JT Ozz溮ڮ/Pi(;\w Ԇ ;?;$eSI7VFLY@cZгWAT7y;Uk(}ƾٷGS 'ewdX6 |PVNWh[F\mUDud4Z LXDZFZ@GJGuJA5u(Du |ucJ0TPfk\HXDlWW ?.@>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`Ê5IٳhӪ]˶۷pʝؼx ,K߿_ ^̸zFLyǘ3kYʠ^LtΒC:ZPSZjKO%邽h%5PsniǕu؝^v! =y>O]85]tQ1sYFMg1kf9hցrY݅J]mP8Ԡ[ylP _5$5B n$&(54lM0"]beQxt!]Ѐqf lB|`e *EI'"j6rHMX60gm%Ε喜%z`ܥ :tj(svVgZ fYx~}ҦVa˲ulO]aJҜnaV썺'qն{^kڢs(HF@X,Ҝ>NF'pPp]0:mn KłF~9L3[q/w64vLj]PSn](x-1ec]t(ɷ4v!mBJ@14@a>6lϯu jok=,xԚ[im+VRxi8YG.y[?nyHOߕ_9G|!褗n騧ꬷRAa`|;D/o# +23{WoS $۬чٗo=' D~oCJC/ `^ 8YA  #0`@/aЄ{.#@ڰL,ؼaG؋R8" t?Y"4sD.KC| .&*\4h C`3^ԈQ/:`"18bp_HMу"+G:Pa3Y@:$~x<4:OkGYIFzGX   1iC FNT`+HbbXxc 4#Vϔ *ue) 0;@T: #PEy(1t2!L#>f CDg ^ 8/rl#DJPv! :v0}%9A|;`@BS:”ʴ8Q09#/XD09적SWkJEG~:W U |u'=^4M]9y^( ^t @Cd) C h"S:hƦD-0 fV_ ;pe(6ֶJkr=p1J7Ѝn_-:>ͮvշ\ZrݮxT}rzWr.S-/BI_~NlYVK]>f  H%Ux+M;D j a&y/k% sj/ kX3/b=1FATNDrufR1z̒r͂dfaƛ1Ajlc-mԍp Na;oO!s/TU>biGZ4q֥K{~A4&2j>7p1^j8Mݤt.T |;i\m(QNxZ~TsA?X?c p4E<$:u=ֻ,@(KΛHYe<oKD=&HGKsT~k$J5V1AvPVHEdZXŴZFZIhKG@v 8KB>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣHԗӧPJJիXjNׯ`ѣFٳhӪ]˶۷pMf-ݻA˷߿{az+^̸qZK2˘3"-Sӥu-NMե?t; FvZ>vZ1^@+_Q'}0uaY5_F j՚u#gN>DGQ9 +F PÊ5ytw ݂֠ Ranwxpx \%gߍ8_B5(vve"+wxvq cBpJ*IuY. l'~2'5D9hibJ&iy(ҙlJ+V+u(4iH/JZp] .ɭ>נz4ĔrCI4 F<[Ĩ[+v,a0{,%dωZ9yˇ.H%14Mm´WHSGM +ۑ% md1.Ruox"js*YZ]ת6mbUI'h5e{*.R?n|E>EU砫9y訇>z9n&ȗpfݱpz#փl_ʄ6+ڶ}lhRs.q#1ŏo+ 4ja7c]31. s(Ϡ ;)a\N(L 3ƭ٬{H Y0Ӄ # ynp !QtNf w;!"q.5&) 6Q pr{ـ?GD#zq#`p¥,cNkRT"50[\HGO[(9i.v$"3GD:2!\$EGZr!&Kz2d'=iImL*WV򕰌e,PIRR $GyCRe/K`Räc1Gd&Ӌ4-Bm vҙ,b4k(!}JcYj0,aʂ) #Z[^/B7_QnŪv_jPKoh\il9k`göO 9a'[rMj[[ڴKlf7^Np4&w~}ɥ['vv'&eULnBz4dی۴Kov =Fft,uo /S<YTSEKߊ]´+KYJHQ"Pphlɞ/K  Zzj ) uYiq ` P @ "  ) 0#Z6z6J  ` )٢DFZ5pL:ڠ ?k,*;A8 p 0`` Х5Eڤ7 * P9ПUj:5/Api l7j |:0 R @P pک Nf7*ZZzh ٪tV]z l 쀫 P 1Aea*t ^ϊ ڍ`^p: 亅^ ZPXhhZЭ :`׀.ڰ;`[G@ ձM߰ + @E+{ +@6+^u +{PAx1{;(a0ij+KP1!Oq/ 0HVXik;oqKAu[wpN3[{۸{k먓{}[KK3S|qLC6MCjq6tc|!kT@Xlj1|\1Du73!MrQ[[K4O#r%5$6(V -X$S-sl)M g"$<[jL36\S2[ʽ1cӗ,,bS H0%Gi,Ӿ=2Su"$GUO223B@0qV ٫D"WQAu%)i2t¾#Eـ,Y.ORdi1_!G) %("u9*uRE4Jַwݱ8g"'X0&)C=Y~ #h_?L0RKy2Oȁbƽ!{-c'Q>&c$*%XOEzCU2>$wb%D|K#n ʡ~CS6T ]Хa3Q|462͡\È%㼻(#[# P@ QA{oViK+XHAkR6[m[l= |bTz I"8 M ݄)Shl4xDhr(L;Uk8-~Wuܼ=Q]>cVnE k7T+ ZR2EuhT0%H•U  sS=B W0UL(W2dx=bAU+#)fa)P5cr127}Q`uLقuX~~ne-c%(?UCS]G-m$aBR$]wסό"ˈ,q޵ d,k $]7L69Z$]-Q9MEeUa$bmޡ\9c$cZc&,!,vP > eQfgj$25TȤ&B`3#4 BA\$cg=!n#Ht7.j F!&2$sd}8hB0cAv<%=p/eB"#zlΪWgc3P ݦ ~o 8un跊 & :zꨞꪾ[ 뺾6: 0爎>^lz엞 ^.>^~>>};libwmf-0.2.8.4/doc/html/0000755000077100007710000000000010272000330014177 5ustar fjffjf00000000000000libwmf-0.2.8.4/doc/html/Makefile.am0000644000077100007710000001017207575443417016271 0ustar fjffjf00000000000000wmfdocdir = @WMF_DOCDIR@ htmldocdir = $(wmfdocdir)/html install-data-local: @echo "Installing doxymentation"; \ cd $(srcdir) && \ $(mkinstalldirs) $(DESTDIR)$(htmldocdir); \ (for i in *.html doxygen.*; do \ $(INSTALL_DATA) $$i $(DESTDIR)$(htmldocdir)/$$i; \ done) DOCUMENTATION = \ doxygen.gif \ doxygen.png \ index.html \ files.html \ api_8c.html \ api_8h.html \ bbuf_8c.html \ xml_8c.html \ xml_8h.html \ eps_2bmp_8h.html \ fig_2bmp_8h.html \ ipa_2bmp_8h.html \ magick_2bmp_8h.html \ plot_2bmp_8h.html \ svg_2bmp_8h.html \ x_2bmp_8h.html \ xgd_2bmp_8h.html \ clip_8h.html \ include_2libwmf_2color_8h.html \ src_2ipa_2fig_2color_8h.html \ src_2ipa_2ipa_2color_8h.html \ src_2ipa_2x_2color_8h.html \ src_2player_2color_8h.html \ coord_8h.html \ dc_8h.html \ defaults_8h.html \ defs_8h.html \ eps_2device_8h.html \ fig_2device_8h.html \ magick_2device_8h.html \ plot_2device_8h.html \ svg_2device_8h.html \ x_2device_8h.html \ xgd_2device_8h.html \ eps_2draw_8h.html \ fig_2draw_8h.html \ magick_2draw_8h.html \ plot_2draw_8h.html \ svg_2draw_8h.html \ x_2draw_8h.html \ xgd_2draw_8h.html \ eps_8c.html \ eps_8h.html \ fig_8c.html \ fig_8h.html \ font_8c.html \ include_2libwmf_2font_8h.html \ src_2font_8h.html \ src_2ipa_2fig_2font_8h.html \ src_2ipa_2ipa_2font_8h.html \ src_2ipa_2x_2font_8h.html \ src_2ipa_2xgd_2font_8h.html \ foreign_8c.html \ foreign_8h.html \ fund_8h.html \ gd_8h.html \ ipa_8c.html \ ipa_8h.html \ macro_8h.html \ magick_8c.html \ magick_8h.html \ meta_8c.html \ meta_8h.html \ player_8c.html \ plot_8c.html \ plot_8h.html \ record_8h.html \ ipa_2eps_2region_8h.html \ ipa_2fig_2region_8h.html \ ipa_2magick_2region_8h.html \ ipa_2plot_2region_8h.html \ ipa_2svg_2region_8h.html \ ipa_2x_2region_8h.html \ ipa_2xgd_2region_8h.html \ player_2region_8h.html \ stream_8c.html \ svg_8c.html \ svg_8h.html \ template_8c.html \ template_8h.html \ types_8h.html \ wmf_8c.html \ x_8c.html \ x_8h.html \ xgd_8c.html \ annotated.html \ classes.html \ functions.html \ struct__wmf__eps__t.html \ struct__wmf__fig__t.html \ struct__wmf__fig__t_1_1__wmf__fig__image.html \ struct__wmf__foreign__t.html \ struct__wmf__gd__t.html \ struct__wmf__gd__t_1_1__wmf__gd__sink.html \ struct__wmf__magick__t.html \ struct__wmf__magick__t_1_1__wmf__magick__image.html \ struct__wmf__plot__t.html \ struct__wmf__svg__t.html \ struct__wmf__svg__t_1_1__wmf__svg__image.html \ struct__wmf__template__t.html \ struct__wmf__x__t.html \ struct__wmfAPI.html \ struct__wmfAPI__Options.html \ struct__wmfBMP.html \ struct__wmfBMP__Draw__t.html \ struct__wmfBMP__Read__t.html \ struct__wmfBrush.html \ struct__wmfColorData.html \ struct__wmfD__Coord.html \ struct__wmfD__Rect.html \ struct__wmfDC.html \ struct__wmfDrawArc__t.html \ struct__wmfDrawLine__t.html \ struct__wmfDrawPixel__t.html \ struct__wmfDrawRectangle__t.html \ struct__wmfDrawText__t.html \ struct__wmfFlood__t.html \ struct__wmfFont.html \ struct__wmfFontData.html \ struct__wmfFontMap.html \ struct__wmfFontmapData.html \ struct__wmfFT__CacheEntry.html \ struct__wmfFT__Mapping.html \ struct__wmfFunctionReference.html \ struct__wmfGS__FontData.html \ struct__wmfGS__FontInfo.html \ struct__wmfHead.html \ struct__wmfImage.html \ struct__wmfIPAFont.html \ struct__wmfMapping.html \ struct__wmfMetaHeader.html \ struct__wmfPen.html \ struct__wmfPlaceableMetaHeader.html \ struct__wmfPolyLine__t.html \ struct__wmfPolyPoly__t.html \ struct__wmfPolyRectangle__t.html \ struct__wmfRGB.html \ struct__wmfROP__Draw__t.html \ globals.html \ struct__wmfStream.html \ struct__wmfUserData__t.html \ struct__wmfXML__FontData.html \ struct__wmfXML__FontInfo.html \ struct__wmfXML__InputData.html \ struct__wmfWriteFileInfo.html \ struct__wmfAttributeStore.html \ struct__wmfAttributes.html \ canvas_8h.html \ recorder_8c.html \ recorder_8h.html \ metadefs_8h.html \ struct__wmfCanvasBrush.html \ struct__wmfCanvasPen.html \ struct__wmfCanvasFont.html \ struct__wmfConstruct.html \ struct__wmfRecordBox.html \ doxygen.css \ io-wmf_8c.html \ structWmfContext.html EXTRA_DIST = $(DOCUMENTATION) libwmf-0.2.8.4/doc/html/Makefile.in0000664000077100007710000003447410272000330016262 0ustar fjffjf00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/html DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/wmfconfig.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FREETYPE_CONFIG = @FREETYPE_CONFIG@ GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ GDK_PIXBUF_DIR = @GDK_PIXBUF_DIR@ GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ GD_DEFS = @GD_DEFS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWMF_BUILDSTYLE = @LIBWMF_BUILDSTYLE@ LIBWMF_BUILD_ALL_FALSE = @LIBWMF_BUILD_ALL_FALSE@ LIBWMF_BUILD_ALL_TRUE = @LIBWMF_BUILD_ALL_TRUE@ LIBWMF_GDK_PIXBUF_FALSE = @LIBWMF_GDK_PIXBUF_FALSE@ LIBWMF_GDK_PIXBUF_TRUE = @LIBWMF_GDK_PIXBUF_TRUE@ LIBWMF_OPT_GD_FALSE = @LIBWMF_OPT_GD_FALSE@ LIBWMF_OPT_GD_TRUE = @LIBWMF_OPT_GD_TRUE@ LIBWMF_OPT_LAYERS_FALSE = @LIBWMF_OPT_LAYERS_FALSE@ LIBWMF_OPT_LAYERS_TRUE = @LIBWMF_OPT_LAYERS_TRUE@ LIBWMF_OPT_MODULES_FALSE = @LIBWMF_OPT_MODULES_FALSE@ LIBWMF_OPT_MODULES_TRUE = @LIBWMF_OPT_MODULES_TRUE@ LIBWMF_OPT_PLOT_FALSE = @LIBWMF_OPT_PLOT_FALSE@ LIBWMF_OPT_PLOT_TRUE = @LIBWMF_OPT_PLOT_TRUE@ LIBWMF_OPT_SYS_GD_FALSE = @LIBWMF_OPT_SYS_GD_FALSE@ LIBWMF_OPT_SYS_GD_TRUE = @LIBWMF_OPT_SYS_GD_TRUE@ LIBWMF_OPT_TRIO_FALSE = @LIBWMF_OPT_TRIO_FALSE@ LIBWMF_OPT_TRIO_TRUE = @LIBWMF_OPT_TRIO_TRUE@ LIBWMF_OPT_X_FALSE = @LIBWMF_OPT_X_FALSE@ LIBWMF_OPT_X_TRUE = @LIBWMF_OPT_X_TRUE@ LIBWMF_PACKAGE = @LIBWMF_PACKAGE@ LIBWMF_RELEASE = @LIBWMF_RELEASE@ LIBWMF_VERSION = @LIBWMF_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_LITE_AGE = @LT_LITE_AGE@ LT_LITE_CURRENT = @LT_LITE_CURRENT@ LT_LITE_REVISION = @LT_LITE_REVISION@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SYS_LIBM = @SYS_LIBM@ VERSION = @VERSION@ WMF_CFLAGS = @WMF_CFLAGS@ WMF_CONFIG_CFLAGS = @WMF_CONFIG_CFLAGS@ WMF_DEFS = @WMF_DEFS@ WMF_DOCDIR = @WMF_DOCDIR@ WMF_FONTDIR = @WMF_FONTDIR@ WMF_GS_FONTDIR = @WMF_GS_FONTDIR@ WMF_GS_FONTMAP = @WMF_GS_FONTMAP@ WMF_LIBFLAGS = @WMF_LIBFLAGS@ WMF_SYS_FONTMAP = @WMF_SYS_FONTMAP@ WMF_XTRA_FONTMAP = @WMF_XTRA_FONTMAP@ XML2_CONFIG = @XML2_CONFIG@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ ac_ct_F77 = @ac_ct_F77@ ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ wmfdocdir = @WMF_DOCDIR@ htmldocdir = $(wmfdocdir)/html DOCUMENTATION = \ doxygen.gif \ doxygen.png \ index.html \ files.html \ api_8c.html \ api_8h.html \ bbuf_8c.html \ xml_8c.html \ xml_8h.html \ eps_2bmp_8h.html \ fig_2bmp_8h.html \ ipa_2bmp_8h.html \ magick_2bmp_8h.html \ plot_2bmp_8h.html \ svg_2bmp_8h.html \ x_2bmp_8h.html \ xgd_2bmp_8h.html \ clip_8h.html \ include_2libwmf_2color_8h.html \ src_2ipa_2fig_2color_8h.html \ src_2ipa_2ipa_2color_8h.html \ src_2ipa_2x_2color_8h.html \ src_2player_2color_8h.html \ coord_8h.html \ dc_8h.html \ defaults_8h.html \ defs_8h.html \ eps_2device_8h.html \ fig_2device_8h.html \ magick_2device_8h.html \ plot_2device_8h.html \ svg_2device_8h.html \ x_2device_8h.html \ xgd_2device_8h.html \ eps_2draw_8h.html \ fig_2draw_8h.html \ magick_2draw_8h.html \ plot_2draw_8h.html \ svg_2draw_8h.html \ x_2draw_8h.html \ xgd_2draw_8h.html \ eps_8c.html \ eps_8h.html \ fig_8c.html \ fig_8h.html \ font_8c.html \ include_2libwmf_2font_8h.html \ src_2font_8h.html \ src_2ipa_2fig_2font_8h.html \ src_2ipa_2ipa_2font_8h.html \ src_2ipa_2x_2font_8h.html \ src_2ipa_2xgd_2font_8h.html \ foreign_8c.html \ foreign_8h.html \ fund_8h.html \ gd_8h.html \ ipa_8c.html \ ipa_8h.html \ macro_8h.html \ magick_8c.html \ magick_8h.html \ meta_8c.html \ meta_8h.html \ player_8c.html \ plot_8c.html \ plot_8h.html \ record_8h.html \ ipa_2eps_2region_8h.html \ ipa_2fig_2region_8h.html \ ipa_2magick_2region_8h.html \ ipa_2plot_2region_8h.html \ ipa_2svg_2region_8h.html \ ipa_2x_2region_8h.html \ ipa_2xgd_2region_8h.html \ player_2region_8h.html \ stream_8c.html \ svg_8c.html \ svg_8h.html \ template_8c.html \ template_8h.html \ types_8h.html \ wmf_8c.html \ x_8c.html \ x_8h.html \ xgd_8c.html \ annotated.html \ classes.html \ functions.html \ struct__wmf__eps__t.html \ struct__wmf__fig__t.html \ struct__wmf__fig__t_1_1__wmf__fig__image.html \ struct__wmf__foreign__t.html \ struct__wmf__gd__t.html \ struct__wmf__gd__t_1_1__wmf__gd__sink.html \ struct__wmf__magick__t.html \ struct__wmf__magick__t_1_1__wmf__magick__image.html \ struct__wmf__plot__t.html \ struct__wmf__svg__t.html \ struct__wmf__svg__t_1_1__wmf__svg__image.html \ struct__wmf__template__t.html \ struct__wmf__x__t.html \ struct__wmfAPI.html \ struct__wmfAPI__Options.html \ struct__wmfBMP.html \ struct__wmfBMP__Draw__t.html \ struct__wmfBMP__Read__t.html \ struct__wmfBrush.html \ struct__wmfColorData.html \ struct__wmfD__Coord.html \ struct__wmfD__Rect.html \ struct__wmfDC.html \ struct__wmfDrawArc__t.html \ struct__wmfDrawLine__t.html \ struct__wmfDrawPixel__t.html \ struct__wmfDrawRectangle__t.html \ struct__wmfDrawText__t.html \ struct__wmfFlood__t.html \ struct__wmfFont.html \ struct__wmfFontData.html \ struct__wmfFontMap.html \ struct__wmfFontmapData.html \ struct__wmfFT__CacheEntry.html \ struct__wmfFT__Mapping.html \ struct__wmfFunctionReference.html \ struct__wmfGS__FontData.html \ struct__wmfGS__FontInfo.html \ struct__wmfHead.html \ struct__wmfImage.html \ struct__wmfIPAFont.html \ struct__wmfMapping.html \ struct__wmfMetaHeader.html \ struct__wmfPen.html \ struct__wmfPlaceableMetaHeader.html \ struct__wmfPolyLine__t.html \ struct__wmfPolyPoly__t.html \ struct__wmfPolyRectangle__t.html \ struct__wmfRGB.html \ struct__wmfROP__Draw__t.html \ globals.html \ struct__wmfStream.html \ struct__wmfUserData__t.html \ struct__wmfXML__FontData.html \ struct__wmfXML__FontInfo.html \ struct__wmfXML__InputData.html \ struct__wmfWriteFileInfo.html \ struct__wmfAttributeStore.html \ struct__wmfAttributes.html \ canvas_8h.html \ recorder_8c.html \ recorder_8h.html \ metadefs_8h.html \ struct__wmfCanvasBrush.html \ struct__wmfCanvasPen.html \ struct__wmfCanvasFont.html \ struct__wmfConstruct.html \ struct__wmfRecordBox.html \ doxygen.css \ io-wmf_8c.html \ structWmfContext.html EXTRA_DIST = $(DOCUMENTATION) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/html/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/html/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-data-local install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-info-am install-data-local: @echo "Installing doxymentation"; \ cd $(srcdir) && \ $(mkinstalldirs) $(DESTDIR)$(htmldocdir); \ (for i in *.html doxygen.*; do \ $(INSTALL_DATA) $$i $(DESTDIR)$(htmldocdir)/$$i; \ done) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libwmf-0.2.8.4/doc/html/doxygen.gif0000644000077100007710000000451207506025430016363 0ustar fjffjf00000000000000GIF89an5 %%߲ӿvܹ,dջWɁᆿd=6 ٰ!դ?<,Xu ۿЫ&R΍@?5ե>;(@@9@@7ҙxgڰ\Q&n4Bd v[Q&گ?=/=gҙռWɀ?>2>:%Ό u=7Ⱦuј  @@8ܹeɁBuufBҲ:C@/tX͍dy^ZB``Uqm4uDD: dѭ-¿>9"_\G5vaaT``T>8"?;( ֤_^L^X< ٰٟұ:ƙMⶸd͌﮿b\?R^X=`_P(&nqc.͍tԘc`^L·~ B>+љ=4>J4'%Є``R>9!>8!`_ODD;5 vҘ>ҘmЭ.|(4<4ٯDC800)5HG<!,n5 H*\ȰÇ#JHŋ3VDZc= CZ8E\ɰ^0dI@0 ȴɓ%Θ3{ SgСH)ݙĥGJ]uՖ *כ>| פ;>Aʴƽ\w޵^9&(`(.† 8 *HШ^ZqC >}:ːQ~踀Ÿo+Vޏc~Qx5uWqFPƮ;{ }ǽ=+̞z7 Xy^[|06n1LD(!,Zl1aJ=30ȡ]kr`;)>ȑ|c b :VKy xx E P@ $2x0F=r;x D M&Bd&PeB!$yԓɒPzML6i\i (PFPI0(G:D(i=idʨ7**2JϣnHzJiĈ)AΡ*s @TYQpB ! ъpB=І1mG1X"S'@H0 hHÑŠ& Ao`k aGaE " d (L0 $tP@P$ ( *L*`(A$sD$L1ͫ`Q'>S@K(l2*d\#WJ*L,S@*TlW'`CA [ Aԃ#l192# ,,gmX%yc`j=B,Ax׏7ۆ,j=M/#0oKgvH % D*S WpE SC 4K6Qv EpQv.M\԰{Z>P%!޽Ep+$ Bԓ2b<-E 8/C=A^0 1X H!" @Ad@ q l`g'lx:gt4HF=p#ҠG8*/X7QxB=05k *J<130eG BHA x:<:p (b ahA "`-h --@'a@I#t{#Iփ{PByI*,R\AR! !B. l"Ui*! QЦ4z!@2M"#B)͎ӛAV(],Ƕv#?JBQO;3=nwJfv73|{{53?JMYJO,- @eĎؕm:RBA#vdst\)3WJ̕1st\)iK٥J6=)ضEލؕ- 1&ZA>͎XKb6,'ixt@ ZV3]e`=ˎz `Ch ZT^3Pi4ϠA@0E##KV޸͉SRVM C)^XMGhϗ+ tS#Jw`eOUb VV+ؤjN*15r[ұ7+Q|A͐L}[G;!\㝖IBJҟqOd^iYM&;4M|:TTEZJc w$޸;8mYZI Lb RZiuT=B,s%=fL0#,5i6ZQ;.2գ+Mo"}D*AoWtr'ka )XI*씜iUNFHJ>yː̙X&2q#O`6Veۘf!q8G}Jݭ#xl&wa6gz #ݞ4@' ybz夤꨹2regqnjySxCAԛ yK pG͘$sS*MZk 49FM| Xt>wBJFWKG'F0侄6)/_~:YKzB'zHRj*F p㓽Wwkq`b$18ϣ"c?2c4';δoɸ3v|&d6Ν}z :YY)JџdòyYb罹-0Q3Ǿ~?\sFsѯŗ4&?X2 CUPT!FiK,rѹ%%R&ᖭaG*d̬ASi%U<ӢMLiPX㯲,%,mލIm2W5-\)3WJ̕1st\)3WJ̕1st\)3WJ̕1st\)3WJ̕1stc*:MCtEXtSoftware@(#)ImageMagick 4.2.7 99/07/01 cristy@mystic.es.dupont.comk*tEXtSignature5463a785bb11d367022701c77ebe81abctEXtPage110x53+0+0EBIENDB`libwmf-0.2.8.4/doc/html/index.html0000644000077100007710000000175307575443112016227 0ustar fjffjf00000000000000 Main Page

Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

libwmf Documentation

0.2.8


Generated on Tue Dec 10 19:53:46 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/files.html0000644000077100007710000002573407575443112016227 0ustar fjffjf00000000000000 File Index
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

libwmf File List

Here is a list of all files with brief descriptions:
api.c
api.h
bbuf.c
eps/bmp.h
fig/bmp.h
ipa/bmp.h
magick/bmp.h
plot/bmp.h
svg/bmp.h
x/bmp.h
xgd/bmp.h
canvas.h
clip.h
include/libwmf/color.h
src/ipa/fig/color.h
src/ipa/ipa/color.h
src/ipa/x/color.h
src/player/color.h
coord.h
dc.h
defaults.h
defs.h
eps/device.h
fig/device.h
magick/device.h
plot/device.h
svg/device.h
x/device.h
xgd/device.h
eps/draw.h
fig/draw.h
magick/draw.h
plot/draw.h
svg/draw.h
x/draw.h
xgd/draw.h
eps.c
eps.h
fig.c
fig.h
font.c
include/libwmf/font.h
src/font.h
src/ipa/fig/font.h
src/ipa/ipa/font.h
src/ipa/x/font.h
src/ipa/xgd/font.h
foreign.c
foreign.h
fund.h
gd.h
io-wmf.c
ipa.c
ipa.h
macro.h
magick.c
magick.h
meta.c
meta.h
metadefs.h
player.c
plot.c
plot.h
record.h
recorder.c
recorder.h
ipa/eps/region.h
ipa/fig/region.h
ipa/magick/region.h
ipa/plot/region.h
ipa/svg/region.h
ipa/x/region.h
ipa/xgd/region.h
player/region.h
stream.c
svg.c
svg.h
template.c
template.h
types.h
wmf.c
x.c
x.h
xgd.c
xml.c
xml.h

Generated on Tue Dec 10 19:53:46 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/api_8c.html0000644000077100007710000010151607575443113016262 0ustar fjffjf00000000000000 api.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

api.c File Reference


Functions

wmf_error_t wmf_lite_create (wmfAPI **API_return, unsigned long flags, wmfAPI_Options *options)
wmf_error_t wmf_lite_destroy (wmfAPI *API)
void wmf_assert (wmfAPI *API, char *file, int line)
void wmf_error (wmfAPI *API, char *file, int line, char *msg)
void wmf_debug (wmfAPI *API, char *file, int line, char *msg)
void wmf_printf (wmfAPI *API, char *msg,...)
void * wmf_malloc (wmfAPI *API, size_t size)
void * wmf_calloc (wmfAPI *API, size_t number, size_t size)
void * wmf_realloc (wmfAPI *API, void *mem, size_t size)
void wmf_free (wmfAPI *API, void *mem)
void wmf_detach (wmfAPI *API, void *mem)
char * wmf_strdup (wmfAPI *API, const char *str)
char * wmf_str_append (wmfAPI *API, char *pre, char *post)
char * wmf_strstr (const char *haystack, const char *needle)
void wmf_status_function (wmfAPI *API, void *context, wmfStatus function)
unsigned long wmf_strbuf_grow (wmfAPI *API)

Function Documentation

void wmf_assert wmfAPI   API,
char *    file,
int    line
 

Set the error state of the library to wmf_E_Assert.

Parameters:
API  the API handle
file  file name
line  line number
This should only be called via the macro WMF_ASSERT(API,<expr>) which is defined (for debug builds only) as:
#define WMF_ASSERT(Z,M) if (!(M)) wmf_assert (Z,__FILE__,__LINE__)
i.e., if <expr> evaluates to 0 then call wmf_assert() with current file name and line number.

void* wmf_calloc wmfAPI   API,
size_t    number,
size_t    size
 

Allocate memory of specified size and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
number  number or elements
size  size in bytes of memory required by one element
With syntax similar to calloc(), wmf_calloc() allocates number * size bytes of memory and adds a reference to it in the memory manager's list. To free the memory, use wmf_free().

Returns:
Pointer to new memory, or zero on failure. Sets error state wmf_E_InsMem on failure.

void wmf_debug wmfAPI   API,
char *    file,
int    line,
char *    msg
 

Print message to debug stream.

Parameters:
API  the API handle
file  file name
line  line number
msg  message to print
This should only be called via the macro WMF_DEBUG(API,msg) which (in debug builds only) calls wmf_debug() with the current file name and line number.

void wmf_detach wmfAPI   API,
void *    mem
 

Detach memory attached to the API's memory manager's internal list.

Parameters:
API  the API handle
mem  pointer to memory previously allocated via the API
This removes the reference in the API's memory manager's internal list, and the memory will not, therefore, be released by wmf_api_destroy(). To free subsequently, use free().

void wmf_error wmfAPI   API,
char *    file,
int    line,
char *    msg
 

Print message to error stream.

Parameters:
API  the API handle
file  file name
line  line number
msg  message to print
This should only be called via the macro WMF_ERROR(API,msg) which calls wmf_error() with the current file name and line number.

void wmf_free wmfAPI   API,
void *    mem
 

Frees memory attached to the API's memory manager's internal list.

Parameters:
API  the API handle
mem  pointer to memory previously allocated via the API
Syntax is similar to free().

wmf_error_t wmf_lite_create wmfAPI **    API_return,
unsigned long    flags,
wmfAPI_Options   options
 

Creates and initializes an instance of the libwmf library (lite interface) for a specified device layer.

Parameters:
API_return  pointer to a wmfAPI* (the API handle use henceforth)
flags  bitwise OR of WMF_OPT_ options
options  pointer to wmfAPI_Options structure
This is the first and necessary step when using libwmf. Options are passed via the wmfAPI_Options structure and flags. wmf_api_create allocates the wmfAPI structure and initializes the color tables, the metafile player, and the device layer. If successful then the pointer to the wmfAPI structure is returned via API_return, otherwise all allocated memory is released and the library exits with an appropriate error.

wmf_lite_create () ignores command line arguments, if any are given, and does not attempt to set up font mapping.

The library should be closed using the corresponding wmf_lite_destroy () function.

Returns:
The error state of the library: wmf_E_None indicates successful creation and initialization of the library, and *API_return will be non-zero. For any other error value *API_return will be zero.

wmf_error_t wmf_lite_destroy wmfAPI   API
 

Close the device layer, if open, and release all allocated memory attached to the memory manager.

Parameters:
API  the API handle
Returns:
The final error state of the library.

void* wmf_malloc wmfAPI   API,
size_t    size
 

Allocate memory of specified size and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
size  size in bytes of memory required
With syntax similar to malloc(), wmf_malloc() allocates size bytes of memory and adds a reference to it in the memory manager's list. To free the memory, use wmf_free().

Returns:
Pointer to new memory, or zero on failure. Sets error state wmf_E_InsMem on failure.

void wmf_printf wmfAPI   API,
char *    msg,
...   
 

Print formatted message to debug stream.

Parameters:
API  the API handle
msg  message to print
With syntax similar to printf(), wmf_printf() prints formatted output to the debug stream.

void* wmf_realloc wmfAPI   API,
void *    mem,
size_t    size
 

(Re)Allocate memory of specified size and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
mem  pointer to memory previously allocated via the API
size  new size in bytes of memory required
With syntax similar to realloc(), wmf_realloc() allocates size bytes of memory and adds a reference to it in the memory manager's list. To free the memory, use wmf_free(). If mem is zero, this is equivalent to a call to wmf_malloc(). If size is zero, the memory is released via wmf_free().

Returns:
Pointer to new memory, or zero on failure. Sets error state wmf_E_InsMem on failure.

void wmf_status_function wmfAPI   API,
void *    context,
wmfStatus    function
 

Set a status call-back function.

Parameters:
API  the API handle
context  handle for user data
function  call-back function
The metafile player calls the status function after each record.

char* wmf_str_append wmfAPI   API,
char *    pre,
char *    post
 

Create concatenatation of two strings and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
pre  a string
post  a string
wmf_str_append() allocates the necessary memory via wmf_malloc(), copies pre into the string and appends post. Use wmf_free() to free the string.

Returns:
Pointer to new string, or zero on failure. Sets error state wmf_E_InsMem on failure, or wmf_E_Glitch if str is zero.

unsigned long wmf_strbuf_grow wmfAPI   API
 

Increase the size of the internal string buffer.

Parameters:
API  the API handle
libwmf maintains an internal buffer for string operations. wmf_strbuf_grow() increases the size by 64.

Returns:
Returns the new size of the buffer. Uses wmf_realloc(), so may set wmf_E_InsMem on failure.

char* wmf_strdup wmfAPI   API,
const char *    str
 

Duplicate string and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
str  a string
With syntax similar to strdup(), wmf_strdup() allocates the necessary memory via wmf_malloc() and copies the string. Use wmf_free() to free the string.

Returns:
Pointer to new string, or zero on failure. Sets error state wmf_E_InsMem on failure, or wmf_E_Glitch if str is zero.

char* wmf_strstr const char *    haystack,
const char *    needle
 

Substring search.

Parameters:
haystack  a string
needle  a substring to search for in haystack
With syntax identical to strstr(), wmf_strstr() searches for string needle in string haystack.

Returns:
Pointer to substring needle found in haystack, or zero if not found.


Generated on Tue Dec 10 19:53:47 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/api_8h.html0000644000077100007710000035661207575443113016300 0ustar fjffjf00000000000000 api.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

api.h File Reference


Defines

#define WMF_ERROR(Z, M)   wmf_error (Z,__FILE__,__LINE__,M)
#define WMF_DEBUG(Z, M)
#define WMF_ASSERT(Z, M)
#define WMF_OPT_ALLOC   (1<<0)
#define WMF_OPT_ARGS   (1<<1)
#define WMF_OPT_FONTDIRS   (1<<2)
#define WMF_OPT_FONTMAP   (1<<3)
#define WMF_OPT_SYS_FONTS   (1<<4)
#define WMF_OPT_SYS_FONTMAP   (1<<5)
#define WMF_OPT_XTRA_FONTS   (1<<6)
#define WMF_OPT_XTRA_FONTMAP   (1<<7)
#define WMF_OPT_GS_FONTMAP   (1<<8)
#define WMF_OPT_WRITE   (1<<9)
#define WMF_OPT_FUNCTION   (1<<10)
#define WMF_OPT_MODULE   (1<<11)
#define WMF_OPT_MODULE_DIRS   (1<<12)
#define WMF_OPT_IGNORE_NONFATAL   (1<<14)
#define WMF_OPT_NO_ERROR   (1<<15)
#define WMF_OPT_NO_DEBUG   (1<<16)
#define WMF_OPT_LOG_ERROR   (1<<17)
#define WMF_OPT_LOG_DEBUG   (1<<18)
#define WMF_OPT_DIAGNOSTICS   (1<<19)

Functions

wmf_error_t wmf_api_create (wmfAPI **, unsigned long, wmfAPI_Options *)
wmf_error_t wmf_api_destroy (wmfAPI *)
wmf_error_t wmf_lite_create (wmfAPI **, unsigned long, wmfAPI_Options *)
wmf_error_t wmf_lite_destroy (wmfAPI *)
wmf_error_t wmf_header_read (wmfAPI *)
wmf_error_t wmf_scan (wmfAPI *, unsigned long, wmfD_Rect *)
wmf_error_t wmf_play (wmfAPI *, unsigned long, wmfD_Rect *)
wmf_error_t wmf_size (wmfAPI *, float *, float *)
wmf_error_t wmf_display_size (wmfAPI *, unsigned int *, unsigned int *, double, double)
wmf_error_t wmf_bbuf_input (wmfAPI *, wmfRead, wmfSeek, wmfTell, void *)
wmf_error_t wmf_file_open (wmfAPI *, const char *)
wmf_error_t wmf_file_close (wmfAPI *)
wmf_error_t wmf_mem_open (wmfAPI *, unsigned char *, long)
wmf_error_t wmf_mem_close (wmfAPI *)
wmfStreamwmf_ztream_create (wmfAPI *, gzFile)
wmfStreamwmf_stream_create (wmfAPI *, FILE *)
void wmf_ztream_destroy (wmfAPI *, wmfStream *, char **, unsigned long *)
void wmf_stream_destroy (wmfAPI *, wmfStream *, char **, unsigned long *)
int wmf_stream_printf (wmfAPI *, wmfStream *, char *,...)
void * wmf_malloc (wmfAPI *, size_t)
void * wmf_calloc (wmfAPI *, size_t, size_t)
void * wmf_realloc (wmfAPI *, void *, size_t)
void wmf_free (wmfAPI *, void *)
void wmf_detach (wmfAPI *, void *)
char * wmf_strdup (wmfAPI *, const char *)
char * wmf_str_append (wmfAPI *, char *, char *)
char * wmf_strstr (const char *, const char *)
unsigned long wmf_strbuf_grow (wmfAPI *)
wmf_error_t wmf_player_init (wmfAPI *)
U16 wmf_aldus_checksum (wmfAPI *)
U16 wmf_read_16 (wmfAPI *)
U32 wmf_read_32 (wmfAPI *, U16 *, U16 *)
int wmf_file_read (void *)
int wmf_file_seek (void *, long)
long wmf_file_tell (void *)
int wmf_mem_read (void *)
int wmf_mem_seek (void *, long)
long wmf_mem_tell (void *)
int wmf_stream_zputs (char *, void *)
int wmf_stream_rezet (void *)
int wmf_stream_sputs (char *, void *)
int wmf_stream_reset (void *)
void wmf_error (wmfAPI *, char *, int, char *)
void wmf_debug (wmfAPI *, char *, int, char *)
void wmf_printf (wmfAPI *, char *,...)
void wmf_assert (wmfAPI *, char *, int)
char * wmf_help (void)
void wmf_set_viewport_origin (wmfAPI *, wmfD_Coord)
void wmf_status_function (wmfAPI *, void *, wmfStatus)
void wmf_write (wmfAPI *, unsigned long, unsigned int, const char *, char **, const unsigned char *, unsigned long)
void wmf_write_begin (wmfAPI *, const char *)
void wmf_write_end (wmfAPI *)
void wmf_attr_new (wmfAPI *, wmfAttributes *)
void wmf_attr_clear (wmfAPI *, wmfAttributes *)
void wmf_attr_free (wmfAPI *, wmfAttributes *)
const char * wmf_attr_add (wmfAPI *, wmfAttributes *, const char *, const char *)
const char * wmf_attr_query (wmfAPI *, wmfAttributes *, const char *)
wmf_error_t wmf_wmfxml_import (wmfAPI *, const char *)

Define Documentation

#define WMF_ASSERT Z,
 
 

Parameters:
Z  the API handle
M  an <expr>, if zero then call wmf_assert()
(debug build only)

#define WMF_DEBUG Z,
 
 

Parameters:
Z  the API handle
M  string to send to the debug stream via wmf_debug()
(debug build only)

#define WMF_ERROR Z,
     wmf_error (Z,__FILE__,__LINE__,M)
 

Parameters:
Z  the API handle
M  string to send to the error stream via wmf_error()

#define WMF_OPT_ALLOC   (1<<0)
 

Option to wmf_api_create()

use provided [*]alloc/free functions

#define WMF_OPT_ARGS   (1<<1)
 

Option to wmf_api_create()

check provided command line for --wmf-<option>

#define WMF_OPT_DIAGNOSTICS   (1<<19)
 

Option to wmf_api_create()

emit diagnostic information --wmf-diagnostics

#define WMF_OPT_FONTDIRS   (1<<2)
 

Option to wmf_api_create()

font directories specified

#define WMF_OPT_FONTMAP   (1<<3)
 

Option to wmf_api_create()

font mappings specified

#define WMF_OPT_FUNCTION   (1<<10)
 

Option to wmf_api_create()

initialize device-layer with supplied function

#define WMF_OPT_GS_FONTMAP   (1<<8)
 

Option to wmf_api_create()

use specified ghostscript fontmap file

#define WMF_OPT_IGNORE_NONFATAL   (1<<14)
 

Option to wmf_api_create()

ignore (some) non-fatal errors --wmf-ignore-nonfatal

#define WMF_OPT_LOG_DEBUG   (1<<18)
 

Option to wmf_api_create()

divert debug reports to specified stream

#define WMF_OPT_LOG_ERROR   (1<<17)
 

Option to wmf_api_create()

divert error reports to specified stream

#define WMF_OPT_MODULE   (1<<11)
 

Option to wmf_api_create()

initialize device-layer with specified module

#define WMF_OPT_MODULE_DIRS   (1<<12)
 

Option to wmf_api_create()

check for module also in specified directories

#define WMF_OPT_NO_DEBUG   (1<<16)
 

Option to wmf_api_create()

suppress all debug reports --wmf-debug

#define WMF_OPT_NO_ERROR   (1<<15)
 

Option to wmf_api_create()

suppress all error reports --wmf-error

#define WMF_OPT_SYS_FONTMAP   (1<<5)
 

Option to wmf_api_create()

use specified XML system fontmap file

#define WMF_OPT_SYS_FONTS   (1<<4)
 

Option to wmf_api_create()

use system fonts, if found

#define WMF_OPT_WRITE   (1<<9)
 

Option to wmf_api_create()

write metafile to specified file

#define WMF_OPT_XTRA_FONTMAP   (1<<7)
 

Option to wmf_api_create()

use specified XML non-system fontmap file

#define WMF_OPT_XTRA_FONTS   (1<<6)
 

Option to wmf_api_create()

use non-system fonts, if found


Function Documentation

U16 wmf_aldus_checksum wmfAPI   API
 

Compute the Aldus checksum of the metafile's header.

Parameters:
API  the API handle
(Must read the header first, either via wmf_scan() or by calling wmf_header_read() directly.)

Returns:
Returns the checksum.

wmf_error_t wmf_api_create wmfAPI **    API_return,
unsigned long    flags,
wmfAPI_Options   options
 

Creates and initializes an instance of the libwmf library for a specified device layer.

Parameters:
API_return  pointer to a wmfAPI* (the API handle use henceforth)
flags  bitwise OR of WMF_OPT_ options
options  pointer to wmfAPI_Options structure
This is the first and necessary step when using libwmf. Options are passed via the wmfAPI_Options structure and flags. wmf_api_create allocates the wmfAPI structure and initializes the color and font tables, the metafile player, and the device layer. If successful then the pointer to the wmfAPI structure is returned via API_return, otherwise all allocated memory is released and the library exits with an appropriate error.

Returns:
The error state of the library: wmf_E_None indicates successful creation and initialization of the library, and *API_return will be non-zero. For any other error value *API_return will be zero.

wmf_error_t wmf_api_destroy wmfAPI   API
 

Close the device layer, if open, and release all allocated memory attached to the memory manager.

Parameters:
API  the API handle
Returns:
The final error state of the library.

void wmf_assert wmfAPI   API,
char *    file,
int    line
 

Set the error state of the library to wmf_E_Assert.

Parameters:
API  the API handle
file  file name
line  line number
This should only be called via the macro WMF_ASSERT(API,<expr>) which is defined (for debug builds only) as:
#define WMF_ASSERT(Z,M) if (!(M)) wmf_assert (Z,__FILE__,__LINE__)
i.e., if <expr> evaluates to 0 then call wmf_assert() with current file name and line number.

const char* wmf_attr_add wmfAPI  ,
wmfAttributes  ,
const char *   ,
const char *   
 

Add an name&value to a wmfAttributes structure; returns ptr to value-in-list

void wmf_attr_clear wmfAPI  ,
wmfAttributes  
 

Clear/Empty a wmfAttributes structure

void wmf_attr_free wmfAPI  ,
wmfAttributes  
 

Free memory associated with a wmfAttributes structure

void wmf_attr_new wmfAPI  ,
wmfAttributes  
 

Initialize a wmfAttributes structure

const char* wmf_attr_query wmfAPI  ,
wmfAttributes  ,
const char *   
 

Return value of name in a wmfAttributes structure; returns 0 if name not found

wmf_error_t wmf_bbuf_input wmfAPI   API,
wmfRead    fp_read,
wmfSeek    fp_seek,
wmfTell    fp_tell,
void *    user_data
 

Set custom metafile input-stream handler functions.

Parameters:
API  the API handle
fp_read  function to read a byte
fp_seek  function to set position
fp_tell  function to get position
user_data  handle for user data
libwmf has simple methods for reading either from file or from memory, but many applications will want to use customized variants of these. wmf_bbuf_input() enables this.

typedef int  (*wmfRead) (void* user_data);
typedef int  (*wmfSeek) (void* user_data,long position);
typedef long (*wmfTell) (void* user_data);

wmfRead returns unsigned char cast to int, or EOF (cf. fgetc())

wmfSeek returns (-1) on error, otherwise 0 (cf. fseek())

wmfTell returns (-1) on error, otherwise current position (cf. ftell())

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch, if any of the three functions is zero.

void* wmf_calloc wmfAPI   API,
size_t    number,
size_t    size
 

Allocate memory of specified size and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
number  number or elements
size  size in bytes of memory required by one element
With syntax similar to calloc(), wmf_calloc() allocates number * size bytes of memory and adds a reference to it in the memory manager's list. To free the memory, use wmf_free().

Returns:
Pointer to new memory, or zero on failure. Sets error state wmf_E_InsMem on failure.

void wmf_debug wmfAPI   API,
char *    file,
int    line,
char *    msg
 

Print message to debug stream.

Parameters:
API  the API handle
file  file name
line  line number
msg  message to print
This should only be called via the macro WMF_DEBUG(API,msg) which (in debug builds only) calls wmf_debug() with the current file name and line number.

void wmf_detach wmfAPI   API,
void *    mem
 

Detach memory attached to the API's memory manager's internal list.

Parameters:
API  the API handle
mem  pointer to memory previously allocated via the API
This removes the reference in the API's memory manager's internal list, and the memory will not, therefore, be released by wmf_api_destroy(). To free subsequently, use free().

wmf_error_t wmf_display_size wmfAPI   API,
unsigned int *    width,
unsigned int *    height,
double    res_x,
double    res_y
 

Get estimate of image display size.

Parameters:
API  the API handle
width  width return
height  height return
res_x  x-resolution of display
res_y  y-resolution of display
wmf_display_size() returns image width in *width and image height in *height. wmf_size() is used to get the calculated/estimate width and height of the image, and these values are converted to integer width and height estimates for display.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch (the metafile has not been scanned).

void wmf_error wmfAPI   API,
char *    file,
int    line,
char *    msg
 

Print message to error stream.

Parameters:
API  the API handle
file  file name
line  line number
msg  message to print
This should only be called via the macro WMF_ERROR(API,msg) which calls wmf_error() with the current file name and line number.

wmf_error_t wmf_file_close wmfAPI   API
 

Close metafile input file stream.

Parameters:
API  the API handle
Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch.

wmf_error_t wmf_file_open wmfAPI   API,
const char *    file
 

Open file as metafile.

Parameters:
API  the API handle
file  file name
Simple method for reading from file.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error states of wmf_E_Glitch or wmf_E_BadFile.

int wmf_file_read void *   
 

file input (wmf_file_open): fgetc()

int wmf_file_seek void *   ,
long   
 

file input (wmf_file_open): fseek()

long wmf_file_tell void *   
 

file input (wmf_file_open): ftell()

void wmf_free wmfAPI   API,
void *    mem
 

Frees memory attached to the API's memory manager's internal list.

Parameters:
API  the API handle
mem  pointer to memory previously allocated via the API
Syntax is similar to free().

wmf_error_t wmf_header_read wmfAPI   API
 

Read the metafile's header.

Parameters:
API  the API handle
(Must read the header first, either via wmf_scan() or by calling wmf_header_read() directly.)

Returns:
Returns the library error state (wmf_E_None on success). Possible library error states of wmf_E_Glitch, wmf_E_BadFormat (bad header), wmf_E_BadFile (no open input stream) and wmf_E_EOF (premature end-of-file).

char* wmf_help void   
 

 
Additional wmf-related options:

  --wmf-error[=yes|no]            switch for error reports.
  --wmf-debug[=yes|no]            switch for debug reports, if any.
  --wmf-ignore-nonfatal[=yes|no]  switch to ignore (some) non-fatal errors.
  --wmf-diagnostics               emit diagnostic information.
  --wmf-fontdir=<path>            add <path> to list of font directories.
  --wmf-sys-fonts                 use system fonts, if any found.
  --wmf-sys-fontmap=<file>        use system xml-fontmap file <file>.
  --wmf-xtra-fonts                use non-system fonts, if any found.
  --wmf-xtra-fontmap=<file>       use non-system xml-fontmap file <file>.
  --wmf-gs-fontmap=<file>         use ghostscript file <file>.
  --wmf-write=<file>              write metafile to <file>.

Report bugs to <http://www.wvware.com/>.

Returns:
Returns the above as a string.

wmf_error_t wmf_lite_create wmfAPI **    API_return,
unsigned long    flags,
wmfAPI_Options   options
 

Creates and initializes an instance of the libwmf library (lite interface) for a specified device layer.

Parameters:
API_return  pointer to a wmfAPI* (the API handle use henceforth)
flags  bitwise OR of WMF_OPT_ options
options  pointer to wmfAPI_Options structure
This is the first and necessary step when using libwmf. Options are passed via the wmfAPI_Options structure and flags. wmf_api_create allocates the wmfAPI structure and initializes the color tables, the metafile player, and the device layer. If successful then the pointer to the wmfAPI structure is returned via API_return, otherwise all allocated memory is released and the library exits with an appropriate error.

wmf_lite_create () ignores command line arguments, if any are given, and does not attempt to set up font mapping.

The library should be closed using the corresponding wmf_lite_destroy () function.

Returns:
The error state of the library: wmf_E_None indicates successful creation and initialization of the library, and *API_return will be non-zero. For any other error value *API_return will be zero.

wmf_error_t wmf_lite_destroy wmfAPI   API
 

Close the device layer, if open, and release all allocated memory attached to the memory manager.

Parameters:
API  the API handle
Returns:
The final error state of the library.

void* wmf_malloc wmfAPI   API,
size_t    size
 

Allocate memory of specified size and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
size  size in bytes of memory required
With syntax similar to malloc(), wmf_malloc() allocates size bytes of memory and adds a reference to it in the memory manager's list. To free the memory, use wmf_free().

Returns:
Pointer to new memory, or zero on failure. Sets error state wmf_E_InsMem on failure.

wmf_error_t wmf_mem_close wmfAPI   API
 

Close metafile input memory stream.

Parameters:
API  the API handle
Returns:
Returns the library error state (wmf_E_None on success).

wmf_error_t wmf_mem_open wmfAPI   API,
unsigned char *    mem,
long    length
 

Open metafile in memory.

Parameters:
API  the API handle
mem  the metafile in memory
length  the length in bytes of metafile data
Simple method for reading from memory as array of unsigned char.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch.

int wmf_mem_read void *   
 

memory input (wmf_mem_open): fgetc() equiv.

int wmf_mem_seek void *   ,
long   
 

memory input (wmf_mem_open): fseek() equiv.

long wmf_mem_tell void *   
 

memory input (wmf_mem_open): ftell() equiv.

wmf_error_t wmf_play wmfAPI   API,
unsigned long    flags,
wmfD_Rect   d_r
 

Play the metafile.

Parameters:
API  the API handle
flags  (unused)
d_r  for bounding-box return
Before the metafile can be played, it must be scanned - see wmf_scan().

The first time (and only the first time) the metafile is played, it first calls device_open() for the device layer specified (and initialized) in wmf_api_create(). Then, and also each subsequent time the metafile is played, it calls device_begin(), plays the metafile (with calls to various other device layer functions), and finally it calls device_end(). device_close() is only ever called via wmf_api_destroy().

d_r is recomputed, but should not change.

Returns:
Returns the library error state (wmf_E_None on success).

wmf_error_t wmf_player_init wmfAPI  
 

Initializes the metafile player (called by wmf_api_create())

void wmf_printf wmfAPI   API,
char *    msg,
...   
 

Print formatted message to debug stream.

Parameters:
API  the API handle
msg  message to print
With syntax similar to printf(), wmf_printf() prints formatted output to the debug stream.

U16 wmf_read_16 wmfAPI  
 

Reads a two-byte sequence from the current metafile, returns U16

U32 wmf_read_32 wmfAPI  ,
U16 *   ,
U16 *   
 

Reads a four-byte sequence from the current metafile, returns U32

void* wmf_realloc wmfAPI   API,
void *    mem,
size_t    size
 

(Re)Allocate memory of specified size and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
mem  pointer to memory previously allocated via the API
size  new size in bytes of memory required
With syntax similar to realloc(), wmf_realloc() allocates size bytes of memory and adds a reference to it in the memory manager's list. To free the memory, use wmf_free(). If mem is zero, this is equivalent to a call to wmf_malloc(). If size is zero, the memory is released via wmf_free().

Returns:
Pointer to new memory, or zero on failure. Sets error state wmf_E_InsMem on failure.

wmf_error_t wmf_scan wmfAPI   API,
unsigned long    flags,
wmfD_Rect   d_r
 

Scan the metafile.

Parameters:
API  the API handle
flags  (unused)
d_r  for bounding-box return
Before the metafile can be played, it must be scanned. This is because metafile headers do not always provide image size information. Although the device layer (the graphics exporter) is initialized in wmf_api_create(), the output device is not opened until after the metafile is scanned. By scanning, therefore, the device layer can be provided on opening not only with size information but also a list of colors to expect (not including those in raster images) and of other required resources, if necessary. Finally, if scanning fails, then there's certainly no point in playing the metafile.

The bounding box, in device coordinates, is returned in *d_r.

Returns:
Returns the library error state (wmf_E_None on success).

void wmf_set_viewport_origin wmfAPI   API,
wmfD_Coord    d_pt
 

Set the device origin coordinate.

Parameters:
API  the API handle
d_pt  origin in device coordinates
Not really recommended.

wmf_error_t wmf_size wmfAPI   API,
float *    width,
float *    height
 

Get image size.

Parameters:
API  the API handle
width  width return
height  height return
wmf_size() returns image width in *width and image height in *height. If supplied, the metafile header values are used, otherwise the width and height found by wmf_scan() are used.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch (the metafile has not been scanned).

void wmf_status_function wmfAPI   API,
void *    context,
wmfStatus    function
 

Set a status call-back function.

Parameters:
API  the API handle
context  handle for user data
function  call-back function
The metafile player calls the status function after each record.

char* wmf_str_append wmfAPI   API,
char *    pre,
char *    post
 

Create concatenatation of two strings and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
pre  a string
post  a string
wmf_str_append() allocates the necessary memory via wmf_malloc(), copies pre into the string and appends post. Use wmf_free() to free the string.

Returns:
Pointer to new string, or zero on failure. Sets error state wmf_E_InsMem on failure, or wmf_E_Glitch if str is zero.

unsigned long wmf_strbuf_grow wmfAPI   API
 

Increase the size of the internal string buffer.

Parameters:
API  the API handle
libwmf maintains an internal buffer for string operations. wmf_strbuf_grow() increases the size by 64.

Returns:
Returns the new size of the buffer. Uses wmf_realloc(), so may set wmf_E_InsMem on failure.

char* wmf_strdup wmfAPI   API,
const char *    str
 

Duplicate string and attach to the API's memory manager's internal list.

Parameters:
API  the API handle
str  a string
With syntax similar to strdup(), wmf_strdup() allocates the necessary memory via wmf_malloc() and copies the string. Use wmf_free() to free the string.

Returns:
Pointer to new string, or zero on failure. Sets error state wmf_E_InsMem on failure, or wmf_E_Glitch if str is zero.

wmfStream* wmf_stream_create wmfAPI   API,
FILE *    out
 

Open an uncompressed character output stream.

Parameters:
API  the API handle
out  descriptor for a file stream; or zero to write to memory
wmf_stream_create() creates a wmfStream (a character-based output stream) for output to a file or, if out is zero, to memory.

Returns:
Returns a wmfStream pointer, or zero on failure. Possible library error states of wmf_E_InsMem or wmf_E_BadFile.

void wmf_stream_destroy wmfAPI   API,
wmfStream   stream,
char **    buffer,
unsigned long *    length
 

Close an uncompressed character output stream.

Parameters:
API  the API handle
stream  stream handle
buffer  for memory return
length  for length return
In the case of write-to-memory, on return *buffer is an array of length length.

int wmf_stream_printf wmfAPI   API,
wmfStream   stream,
char *    format,
...   
 

Formatted print to character output stream.

Parameters:
API  the API handle
stream  stream handle
format  print format
With syntax similar to printf(), wmf_stream_printf() prints a formatted message to a wmfStream character stream.

Returns:
Returns the number of characters written, or zero on failure. Possible library error state of wmf_E_InsMem.

int wmf_stream_reset void *   
 

uncompressed char output (wmf_stream_create): rewind()

int wmf_stream_rezet void *   
 

compressed char output (wmf_ztream_create): rewind()

int wmf_stream_sputs char *   ,
void *   
 

uncompressed char output (wmf_stream_create): fputs()

int wmf_stream_zputs char *   ,
void *   
 

compressed char output (wmf_ztream_create): fputs()

char* wmf_strstr const char *    haystack,
const char *    needle
 

Substring search.

Parameters:
haystack  a string
needle  a substring to search for in haystack
With syntax identical to strstr(), wmf_strstr() searches for string needle in string haystack.

Returns:
Pointer to substring needle found in haystack, or zero if not found.

wmf_error_t wmf_wmfxml_import wmfAPI  ,
const char *   
 

Load wmfxml file and wmf_mem_open() it

void wmf_write wmfAPI  ,
unsigned    long,
unsigned    int,
const char *   ,
char **   ,
const unsigned char *   ,
unsigned    long
 

Writes to --wmf-write file (which may be WMF or home-made wmfxml)

void wmf_write_begin wmfAPI  ,
const char *   
 

Open --wmf-write file (which may be WMF or home-made wmfxml)

void wmf_write_end wmfAPI  
 

Close --wmf-write file (which may be WMF or home-made wmfxml)

wmfStream* wmf_ztream_create wmfAPI   API,
gzFile    out
 

Open a compressed character output stream.

Parameters:
API  the API handle
out  descriptor for a zlib compressed file stream
wmf_ztream_create() creates a wmfStream (a character-based output stream) for output to a file opened via zlib. (Writing compressed data to memory is not currently supported.)

Returns:
Returns a wmfStream pointer, or zero on failure. Possible library error state of wmf_E_InsMem.

void wmf_ztream_destroy wmfAPI   API,
wmfStream   stream,
char **    buffer,
unsigned long *    length
 

Close a compressed character output stream.

Parameters:
API  the API handle
stream  stream handle
buffer  (unused)
length  (unused)


Generated on Tue Dec 10 19:53:47 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/bbuf_8c.html0000644000077100007710000004235007575443113016427 0ustar fjffjf00000000000000 bbuf.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bbuf.c File Reference


Functions

wmf_error_t wmf_bbuf_input (wmfAPI *API, wmfRead fp_read, wmfSeek fp_seek, wmfTell fp_tell, void *user_data)
wmf_error_t wmf_file_open (wmfAPI *API, const char *file)
wmf_error_t wmf_file_close (wmfAPI *API)
int wmf_file_read (void *user_data)
int wmf_file_seek (void *user_data, long pos)
long wmf_file_tell (void *user_data)
wmf_error_t wmf_mem_open (wmfAPI *API, unsigned char *mem, long length)
wmf_error_t wmf_mem_close (wmfAPI *API)
int wmf_mem_read (void *user_data)
int wmf_mem_seek (void *user_data, long pos)
long wmf_mem_tell (void *user_data)

Function Documentation

wmf_error_t wmf_bbuf_input wmfAPI   API,
wmfRead    fp_read,
wmfSeek    fp_seek,
wmfTell    fp_tell,
void *    user_data
 

Set custom metafile input-stream handler functions.

Parameters:
API  the API handle
fp_read  function to read a byte
fp_seek  function to set position
fp_tell  function to get position
user_data  handle for user data
libwmf has simple methods for reading either from file or from memory, but many applications will want to use customized variants of these. wmf_bbuf_input() enables this.

typedef int  (*wmfRead) (void* user_data);
typedef int  (*wmfSeek) (void* user_data,long position);
typedef long (*wmfTell) (void* user_data);

wmfRead returns unsigned char cast to int, or EOF (cf. fgetc())

wmfSeek returns (-1) on error, otherwise 0 (cf. fseek())

wmfTell returns (-1) on error, otherwise current position (cf. ftell())

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch, if any of the three functions is zero.

wmf_error_t wmf_file_close wmfAPI   API
 

Close metafile input file stream.

Parameters:
API  the API handle
Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch.

wmf_error_t wmf_file_open wmfAPI   API,
const char *    file
 

Open file as metafile.

Parameters:
API  the API handle
file  file name
Simple method for reading from file.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error states of wmf_E_Glitch or wmf_E_BadFile.

int wmf_file_read void *   
 

file input (wmf_file_open): fgetc()

int wmf_file_seek void *   ,
long   
 

file input (wmf_file_open): fseek()

long wmf_file_tell void *   
 

file input (wmf_file_open): ftell()

wmf_error_t wmf_mem_close wmfAPI   API
 

Close metafile input memory stream.

Parameters:
API  the API handle
Returns:
Returns the library error state (wmf_E_None on success).

wmf_error_t wmf_mem_open wmfAPI   API,
unsigned char *    mem,
long    length
 

Open metafile in memory.

Parameters:
API  the API handle
mem  the metafile in memory
length  the length in bytes of metafile data
Simple method for reading from memory as array of unsigned char.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch.

int wmf_mem_read void *   
 

memory input (wmf_mem_open): fgetc() equiv.

int wmf_mem_seek void *   ,
long   
 

memory input (wmf_mem_open): fseek() equiv.

long wmf_mem_tell void *   
 

memory input (wmf_mem_open): ftell() equiv.


Generated on Tue Dec 10 19:53:47 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/xml_8c.html0000644000077100007710000000203507575443120016303 0ustar fjffjf00000000000000 xml.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

xml.c File Reference


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/xml_8h.html0000644000077100007710000000406707575443120016317 0ustar fjffjf00000000000000 xml.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

xml.h File Reference


Data Structures

struct  _wmfXML_InputData

Typedefs

typedef _wmfXML_InputData wmfXML_InputData

Typedef Documentation

typedef struct _wmfXML_InputData wmfXML_InputData
 


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/eps_2bmp_8h.html0000644000077100007710000000204107575443113017216 0ustar fjffjf00000000000000 eps/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Generated on Tue Dec 10 19:53:47 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/fig_2bmp_8h.html0000644000077100007710000000204107575443113017174 0ustar fjffjf00000000000000 fig/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Generated on Tue Dec 10 19:53:47 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2bmp_8h.html0000644000077100007710000004271107575443114017211 0ustar fjffjf00000000000000 ipa/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Functions

void wmf_ipa_bmp_b64 (wmfAPI *API, wmfBMP_Draw_t *bmp_draw, wmfStream *out)
void wmf_ipa_bmp_png (wmfAPI *API, wmfBMP_Draw_t *bmp_draw, char *name)
void wmf_ipa_bmp_jpg (wmfAPI *API, wmfBMP_Draw_t *bmp_draw, char *name)
void wmf_ipa_bmp_eps (wmfAPI *API, wmfBMP_Draw_t *bmp_draw, char *name)
void wmf_ipa_bmp_read (wmfAPI *API, wmfBMP_Read_t *bmp_read)
void wmf_ipa_bmp_free (wmfAPI *API, wmfBMP *bmp)
wmfBMP wmf_ipa_bmp_copy (wmfAPI *API, wmfBMP *bmp, unsigned int width, unsigned int height)
int wmf_ipa_bmp_color (wmfAPI *API, wmfBMP *bmp, wmfRGB *rgb, unsigned int x, unsigned int y)
int wmf_ipa_bmp_interpolate (wmfAPI *API, wmfBMP *bmp, wmfRGB *rgb, float x, float y)
void wmf_ipa_bmp_setcolor (wmfAPI *API, wmfBMP *bmp, wmfRGB *rgb, unsigned char opacity, unsigned int x, unsigned int y)

Function Documentation

void wmf_ipa_bmp_b64 wmfAPI   API,
wmfBMP_Draw_t   bmp_draw,
wmfStream   out
 

int wmf_ipa_bmp_color wmfAPI   API,
wmfBMP   bmp,
wmfRGB   rgb,
unsigned int    x,
unsigned int    y
 

wmfBMP wmf_ipa_bmp_copy wmfAPI   API,
wmfBMP   bmp,
unsigned int    width,
unsigned int    height
 

void wmf_ipa_bmp_eps wmfAPI   API,
wmfBMP_Draw_t   bmp_draw,
char *    name
 

void wmf_ipa_bmp_free wmfAPI   API,
wmfBMP   bmp
 

int wmf_ipa_bmp_interpolate wmfAPI   API,
wmfBMP   bmp,
wmfRGB   rgb,
float    x,
float    y
 

void wmf_ipa_bmp_jpg wmfAPI   API,
wmfBMP_Draw_t   bmp_draw,
char *    name
 

void wmf_ipa_bmp_png wmfAPI   API,
wmfBMP_Draw_t   bmp_draw,
char *    name
 

void wmf_ipa_bmp_read wmfAPI   API,
wmfBMP_Read_t   bmp_read
 

void wmf_ipa_bmp_setcolor wmfAPI   API,
wmfBMP   bmp,
wmfRGB   rgb,
unsigned char    opacity,
unsigned int    x,
unsigned int    y
 


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/magick_2bmp_8h.html0000644000077100007710000000204407575443114017666 0ustar fjffjf00000000000000 magick/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/plot_2bmp_8h.html0000644000077100007710000000204207575443114017407 0ustar fjffjf00000000000000 plot/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/svg_2bmp_8h.html0000644000077100007710000000204107575443114017227 0ustar fjffjf00000000000000 svg/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/x_2bmp_8h.html0000644000077100007710000000203707575443114016704 0ustar fjffjf00000000000000 x/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/xgd_2bmp_8h.html0000644000077100007710000000204107575443114017212 0ustar fjffjf00000000000000 xgd/bmp.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

bmp.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/clip_8h.html0000644000077100007710000000203707575443114016444 0ustar fjffjf00000000000000 clip.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

clip.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/include_2libwmf_2color_8h.html0000644000077100007710000031370107575443114022045 0ustar fjffjf00000000000000 include/libwmf/color.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

color.h File Reference


Variables

wmfRGB wmf_aliceblue
wmfRGB wmf_antiquewhite
wmfRGB wmf_aqua
wmfRGB wmf_aquamarine
wmfRGB wmf_azure
wmfRGB wmf_beige
wmfRGB wmf_bisque
wmfRGB wmf_black
wmfRGB wmf_blanchedalmond
wmfRGB wmf_blue
wmfRGB wmf_blueviolet
wmfRGB wmf_brown
wmfRGB wmf_burlywood
wmfRGB wmf_cadetblue
wmfRGB wmf_chartreuse
wmfRGB wmf_chocolate
wmfRGB wmf_coral
wmfRGB wmf_cornflowerblue
wmfRGB wmf_cornsilk
wmfRGB wmf_crimson
wmfRGB wmf_cyan
wmfRGB wmf_darkblue
wmfRGB wmf_darkcyan
wmfRGB wmf_darkgoldenrod
wmfRGB wmf_darkgray
wmfRGB wmf_darkgreen
wmfRGB wmf_darkgrey
wmfRGB wmf_darkkhaki
wmfRGB wmf_darkmagenta
wmfRGB wmf_darkolivegreen
wmfRGB wmf_darkorange
wmfRGB wmf_darkorchid
wmfRGB wmf_darkred
wmfRGB wmf_darksalmon
wmfRGB wmf_darkseagreen
wmfRGB wmf_darkslateblue
wmfRGB wmf_darkslategray
wmfRGB wmf_darkslategrey
wmfRGB wmf_darkturquoise
wmfRGB wmf_darkviolet
wmfRGB wmf_deeppink
wmfRGB wmf_deepskyblue
wmfRGB wmf_dimgray
wmfRGB wmf_dimgrey
wmfRGB wmf_dodgerblue
wmfRGB wmf_firebrick
wmfRGB wmf_floralwhite
wmfRGB wmf_forestgreen
wmfRGB wmf_fuchsia
wmfRGB wmf_gainsboro
wmfRGB wmf_ghostwhite
wmfRGB wmf_gold
wmfRGB wmf_goldenrod
wmfRGB wmf_gray
wmfRGB wmf_grey
wmfRGB wmf_green
wmfRGB wmf_greenyellow
wmfRGB wmf_honeydew
wmfRGB wmf_hotpink
wmfRGB wmf_indianred
wmfRGB wmf_indigo
wmfRGB wmf_ivory
wmfRGB wmf_khaki
wmfRGB wmf_lavender
wmfRGB wmf_lavenderblush
wmfRGB wmf_lawngreen
wmfRGB wmf_lemonchiffon
wmfRGB wmf_lightblue
wmfRGB wmf_lightcoral
wmfRGB wmf_lightcyan
wmfRGB wmf_lightgoldenrodyellow
wmfRGB wmf_lightgray
wmfRGB wmf_lightgreen
wmfRGB wmf_lightgrey
wmfRGB wmf_lightpink
wmfRGB wmf_lightsalmon
wmfRGB wmf_lightseagreen
wmfRGB wmf_lightskyblue
wmfRGB wmf_lightslategray
wmfRGB wmf_lightslategrey
wmfRGB wmf_lightsteelblue
wmfRGB wmf_lightyellow
wmfRGB wmf_lime
wmfRGB wmf_limegreen
wmfRGB wmf_linen
wmfRGB wmf_magenta
wmfRGB wmf_maroon
wmfRGB wmf_mediumaquamarine
wmfRGB wmf_mediumblue
wmfRGB wmf_mediumorchid
wmfRGB wmf_mediumpurple
wmfRGB wmf_mediumseagreen
wmfRGB wmf_mediumslateblue
wmfRGB wmf_mediumspringgreen
wmfRGB wmf_mediumturquoise
wmfRGB wmf_mediumvioletred
wmfRGB wmf_midnightblue
wmfRGB wmf_mintcream
wmfRGB wmf_mistyrose
wmfRGB wmf_moccasin
wmfRGB wmf_navajowhite
wmfRGB wmf_navy
wmfRGB wmf_oldlace
wmfRGB wmf_olive
wmfRGB wmf_olivedrab
wmfRGB wmf_orange
wmfRGB wmf_orangered
wmfRGB wmf_orchid
wmfRGB wmf_palegoldenrod
wmfRGB wmf_palegreen
wmfRGB wmf_paleturquoise
wmfRGB wmf_palevioletred
wmfRGB wmf_papayawhip
wmfRGB wmf_peachpuff
wmfRGB wmf_peru
wmfRGB wmf_pink
wmfRGB wmf_plum
wmfRGB wmf_powderblue
wmfRGB wmf_purple
wmfRGB wmf_red
wmfRGB wmf_rosybrown
wmfRGB wmf_royalblue
wmfRGB wmf_saddlebrown
wmfRGB wmf_salmon
wmfRGB wmf_sandybrown
wmfRGB wmf_seagreen
wmfRGB wmf_seashell
wmfRGB wmf_sienna
wmfRGB wmf_silver
wmfRGB wmf_skyblue
wmfRGB wmf_slateblue
wmfRGB wmf_slategray
wmfRGB wmf_slategrey
wmfRGB wmf_snow
wmfRGB wmf_springgreen
wmfRGB wmf_steelblue
wmfRGB wmf_tan
wmfRGB wmf_teal
wmfRGB wmf_thistle
wmfRGB wmf_tomato
wmfRGB wmf_turquoise
wmfRGB wmf_violet
wmfRGB wmf_wheat
wmfRGB wmf_white
wmfRGB wmf_whitesmoke
wmfRGB wmf_yellow
wmfRGB wmf_yellowgreen

Variable Documentation

wmfRGB wmf_aliceblue
 

wmfRGB wmf_antiquewhite
 

wmfRGB wmf_aqua
 

wmfRGB wmf_aquamarine
 

wmfRGB wmf_azure
 

wmfRGB wmf_beige
 

wmfRGB wmf_bisque
 

wmfRGB wmf_black
 

wmfRGB wmf_blanchedalmond
 

wmfRGB wmf_blue
 

wmfRGB wmf_blueviolet
 

wmfRGB wmf_brown
 

wmfRGB wmf_burlywood
 

wmfRGB wmf_cadetblue
 

wmfRGB wmf_chartreuse
 

wmfRGB wmf_chocolate
 

wmfRGB wmf_coral
 

wmfRGB wmf_cornflowerblue
 

wmfRGB wmf_cornsilk
 

wmfRGB wmf_crimson
 

wmfRGB wmf_cyan
 

wmfRGB wmf_darkblue
 

wmfRGB wmf_darkcyan
 

wmfRGB wmf_darkgoldenrod
 

wmfRGB wmf_darkgray
 

wmfRGB wmf_darkgreen
 

wmfRGB wmf_darkgrey
 

wmfRGB wmf_darkkhaki
 

wmfRGB wmf_darkmagenta
 

wmfRGB wmf_darkolivegreen
 

wmfRGB wmf_darkorange
 

wmfRGB wmf_darkorchid
 

wmfRGB wmf_darkred
 

wmfRGB wmf_darksalmon
 

wmfRGB wmf_darkseagreen
 

wmfRGB wmf_darkslateblue
 

wmfRGB wmf_darkslategray
 

wmfRGB wmf_darkslategrey
 

wmfRGB wmf_darkturquoise
 

wmfRGB wmf_darkviolet
 

wmfRGB wmf_deeppink
 

wmfRGB wmf_deepskyblue
 

wmfRGB wmf_dimgray
 

wmfRGB wmf_dimgrey
 

wmfRGB wmf_dodgerblue
 

wmfRGB wmf_firebrick
 

wmfRGB wmf_floralwhite
 

wmfRGB wmf_forestgreen
 

wmfRGB wmf_fuchsia
 

wmfRGB wmf_gainsboro
 

wmfRGB wmf_ghostwhite
 

wmfRGB wmf_gold
 

wmfRGB wmf_goldenrod
 

wmfRGB wmf_gray
 

wmfRGB wmf_green
 

wmfRGB wmf_greenyellow
 

wmfRGB wmf_grey
 

wmfRGB wmf_honeydew
 

wmfRGB wmf_hotpink
 

wmfRGB wmf_indianred
 

wmfRGB wmf_indigo
 

wmfRGB wmf_ivory
 

wmfRGB wmf_khaki
 

wmfRGB wmf_lavender
 

wmfRGB wmf_lavenderblush
 

wmfRGB wmf_lawngreen
 

wmfRGB wmf_lemonchiffon
 

wmfRGB wmf_lightblue
 

wmfRGB wmf_lightcoral
 

wmfRGB wmf_lightcyan
 

wmfRGB wmf_lightgoldenrodyellow
 

wmfRGB wmf_lightgray
 

wmfRGB wmf_lightgreen
 

wmfRGB wmf_lightgrey
 

wmfRGB wmf_lightpink
 

wmfRGB wmf_lightsalmon
 

wmfRGB wmf_lightseagreen
 

wmfRGB wmf_lightskyblue
 

wmfRGB wmf_lightslategray
 

wmfRGB wmf_lightslategrey
 

wmfRGB wmf_lightsteelblue
 

wmfRGB wmf_lightyellow
 

wmfRGB wmf_lime
 

wmfRGB wmf_limegreen
 

wmfRGB wmf_linen
 

wmfRGB wmf_magenta
 

wmfRGB wmf_maroon
 

wmfRGB wmf_mediumaquamarine
 

wmfRGB wmf_mediumblue
 

wmfRGB wmf_mediumorchid
 

wmfRGB wmf_mediumpurple
 

wmfRGB wmf_mediumseagreen
 

wmfRGB wmf_mediumslateblue
 

wmfRGB wmf_mediumspringgreen
 

wmfRGB wmf_mediumturquoise
 

wmfRGB wmf_mediumvioletred
 

wmfRGB wmf_midnightblue
 

wmfRGB wmf_mintcream
 

wmfRGB wmf_mistyrose
 

wmfRGB wmf_moccasin
 

wmfRGB wmf_navajowhite
 

wmfRGB wmf_navy
 

wmfRGB wmf_oldlace
 

wmfRGB wmf_olive
 

wmfRGB wmf_olivedrab
 

wmfRGB wmf_orange
 

wmfRGB wmf_orangered
 

wmfRGB wmf_orchid
 

wmfRGB wmf_palegoldenrod
 

wmfRGB wmf_palegreen
 

wmfRGB wmf_paleturquoise
 

wmfRGB wmf_palevioletred
 

wmfRGB wmf_papayawhip
 

wmfRGB wmf_peachpuff
 

wmfRGB wmf_peru
 

wmfRGB wmf_pink
 

wmfRGB wmf_plum
 

wmfRGB wmf_powderblue
 

wmfRGB wmf_purple
 

wmfRGB wmf_red
 

wmfRGB wmf_rosybrown
 

wmfRGB wmf_royalblue
 

wmfRGB wmf_saddlebrown
 

wmfRGB wmf_salmon
 

wmfRGB wmf_sandybrown
 

wmfRGB wmf_seagreen
 

wmfRGB wmf_seashell
 

wmfRGB wmf_sienna
 

wmfRGB wmf_silver
 

wmfRGB wmf_skyblue
 

wmfRGB wmf_slateblue
 

wmfRGB wmf_slategray
 

wmfRGB wmf_slategrey
 

wmfRGB wmf_snow
 

wmfRGB wmf_springgreen
 

wmfRGB wmf_steelblue
 

wmfRGB wmf_tan
 

wmfRGB wmf_teal
 

wmfRGB wmf_thistle
 

wmfRGB wmf_tomato
 

wmfRGB wmf_turquoise
 

wmfRGB wmf_violet
 

wmfRGB wmf_wheat
 

wmfRGB wmf_white
 

wmfRGB wmf_whitesmoke
 

wmfRGB wmf_yellow
 

wmfRGB wmf_yellowgreen
 


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2ipa_2fig_2color_8h.html0000644000077100007710000000205507575443114021406 0ustar fjffjf00000000000000 src/ipa/fig/color.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

color.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2ipa_2ipa_2color_8h.html0000644000077100007710000000205507575443114021412 0ustar fjffjf00000000000000 src/ipa/ipa/color.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

color.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2ipa_2x_2color_8h.html0000644000077100007710000000205307575443114021106 0ustar fjffjf00000000000000 src/ipa/x/color.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

color.h File Reference


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2player_2color_8h.html0000644000077100007710000035617607575443115021243 0ustar fjffjf00000000000000 src/player/color.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

color.h File Reference


Functions

void wmf_ipa_color_init (wmfAPI *API)
void wmf_ipa_color_add (wmfAPI *API, wmfRGB *rgb)
unsigned long wmf_ipa_color_index (wmfAPI *API, wmfRGB *rgb)
unsigned long wmf_ipa_color_count (wmfAPI *API)
wmfRGBwmf_ipa_color (wmfAPI *API, unsigned long index)
wmfRGB wmf_rgb_white (wmfAPI *API)
wmfRGB wmf_rgb_black (wmfAPI *API)
wmfRGB wmf_rgb_color (wmfAPI *API, float red, float green, float blue)

Variables

wmfRGB wmf_aliceblue = { 240, 248, 255 }
wmfRGB wmf_antiquewhite = { 250, 235, 215 }
wmfRGB wmf_aqua = { 0, 255, 255 }
wmfRGB wmf_aquamarine = { 127, 255, 212 }
wmfRGB wmf_azure = { 240, 255, 255 }
wmfRGB wmf_beige = { 245, 245, 220 }
wmfRGB wmf_bisque = { 255, 228, 196 }
wmfRGB wmf_black = { 0, 0, 0 }
wmfRGB wmf_blanchedalmond = { 255, 235, 205 }
wmfRGB wmf_blue = { 0, 0, 255 }
wmfRGB wmf_blueviolet = { 138, 43, 226 }
wmfRGB wmf_brown = { 165, 42, 42 }
wmfRGB wmf_burlywood = { 222, 184, 135 }
wmfRGB wmf_cadetblue = { 95, 158, 160 }
wmfRGB wmf_chartreuse = { 127, 255, 0 }
wmfRGB wmf_chocolate = { 210, 105, 30 }
wmfRGB wmf_coral = { 255, 127, 80 }
wmfRGB wmf_cornflowerblue = { 100, 149, 237 }
wmfRGB wmf_cornsilk = { 255, 248, 220 }
wmfRGB wmf_crimson = { 220, 20, 60 }
wmfRGB wmf_cyan = { 0, 255, 255 }
wmfRGB wmf_darkblue = { 0, 0, 139 }
wmfRGB wmf_darkcyan = { 0, 139, 139 }
wmfRGB wmf_darkgoldenrod = { 184, 134, 11 }
wmfRGB wmf_darkgray = { 169, 169, 169 }
wmfRGB wmf_darkgreen = { 0, 100, 0 }
wmfRGB wmf_darkgrey = { 169, 169, 169 }
wmfRGB wmf_darkkhaki = { 189, 183, 107 }
wmfRGB wmf_darkmagenta = { 139, 0, 139 }
wmfRGB wmf_darkolivegreen = { 85, 107, 47 }
wmfRGB wmf_darkorange = { 255, 140, 0 }
wmfRGB wmf_darkorchid = { 153, 50, 204 }
wmfRGB wmf_darkred = { 139, 0, 0 }
wmfRGB wmf_darksalmon = { 233, 150, 122 }
wmfRGB wmf_darkseagreen = { 143, 188, 143 }
wmfRGB wmf_darkslateblue = { 72, 61, 139 }
wmfRGB wmf_darkslategray = { 47, 79, 79 }
wmfRGB wmf_darkslategrey = { 47, 79, 79 }
wmfRGB wmf_darkturquoise = { 0, 206, 209 }
wmfRGB wmf_darkviolet = { 148, 0, 211 }
wmfRGB wmf_deeppink = { 255, 20, 147 }
wmfRGB wmf_deepskyblue = { 0, 191, 255 }
wmfRGB wmf_dimgray = { 105, 105, 105 }
wmfRGB wmf_dimgrey = { 105, 105, 105 }
wmfRGB wmf_dodgerblue = { 30, 144, 255 }
wmfRGB wmf_firebrick = { 178, 34, 34 }
wmfRGB wmf_floralwhite = { 255, 250, 240 }
wmfRGB wmf_forestgreen = { 34, 139, 34 }
wmfRGB wmf_fuchsia = { 255, 0, 255 }
wmfRGB wmf_gainsboro = { 220, 220, 220 }
wmfRGB wmf_ghostwhite = { 248, 248, 255 }
wmfRGB wmf_gold = { 255, 215, 0 }
wmfRGB wmf_goldenrod = { 218, 165, 32 }
wmfRGB wmf_gray = { 128, 128, 128 }
wmfRGB wmf_grey = { 128, 128, 128 }
wmfRGB wmf_green = { 0, 128, 0 }
wmfRGB wmf_greenyellow = { 173, 255, 47 }
wmfRGB wmf_honeydew = { 240, 255, 240 }
wmfRGB wmf_hotpink = { 255, 105, 180 }
wmfRGB wmf_indianred = { 205, 92, 92 }
wmfRGB wmf_indigo = { 75, 0, 130 }
wmfRGB wmf_ivory = { 255, 255, 240 }
wmfRGB wmf_khaki = { 240, 230, 140 }
wmfRGB wmf_lavender = { 230, 230, 250 }
wmfRGB wmf_lavenderblush = { 255, 240, 245 }
wmfRGB wmf_lawngreen = { 124, 252, 0 }
wmfRGB wmf_lemonchiffon = { 255, 250, 205 }
wmfRGB wmf_lightblue = { 173, 216, 230 }
wmfRGB wmf_lightcoral = { 240, 128, 128 }
wmfRGB wmf_lightcyan = { 224, 255, 255 }
wmfRGB wmf_lightgoldenrodyellow = { 250, 250, 210 }
wmfRGB wmf_lightgray = { 211, 211, 211 }
wmfRGB wmf_lightgreen = { 144, 238, 144 }
wmfRGB wmf_lightgrey = { 211, 211, 211 }
wmfRGB wmf_lightpink = { 255, 182, 193 }
wmfRGB wmf_lightsalmon = { 255, 160, 122 }
wmfRGB wmf_lightseagreen = { 32, 178, 170 }
wmfRGB wmf_lightskyblue = { 135, 206, 250 }
wmfRGB wmf_lightslategray = { 119, 136, 153 }
wmfRGB wmf_lightslategrey = { 119, 136, 153 }
wmfRGB wmf_lightsteelblue = { 176, 196, 222 }
wmfRGB wmf_lightyellow = { 255, 255, 224 }
wmfRGB wmf_lime = { 0, 255, 0 }
wmfRGB wmf_limegreen = { 50, 205, 50 }
wmfRGB wmf_linen = { 250, 240, 230 }
wmfRGB wmf_magenta = { 255, 0, 255 }
wmfRGB wmf_maroon = { 128, 0, 0 }
wmfRGB wmf_mediumaquamarine = { 102, 205, 170 }
wmfRGB wmf_mediumblue = { 0, 0, 205 }
wmfRGB wmf_mediumorchid = { 186, 85, 211 }
wmfRGB wmf_mediumpurple = { 147, 112, 219 }
wmfRGB wmf_mediumseagreen = { 60, 179, 113 }
wmfRGB wmf_mediumslateblue = { 123, 104, 238 }
wmfRGB wmf_mediumspringgreen = { 0, 250, 154 }
wmfRGB wmf_mediumturquoise = { 72, 209, 204 }
wmfRGB wmf_mediumvioletred = { 199, 21, 133 }
wmfRGB wmf_midnightblue = { 25, 25, 112 }
wmfRGB wmf_mintcream = { 245, 255, 250 }
wmfRGB wmf_mistyrose = { 255, 228, 225 }
wmfRGB wmf_moccasin = { 255, 228, 181 }
wmfRGB wmf_navajowhite = { 255, 222, 173 }
wmfRGB wmf_navy = { 0, 0, 128 }
wmfRGB wmf_oldlace = { 253, 245, 230 }
wmfRGB wmf_olive = { 128, 128, 0 }
wmfRGB wmf_olivedrab = { 107, 142, 35 }
wmfRGB wmf_orange = { 255, 165, 0 }
wmfRGB wmf_orangered = { 255, 69, 0 }
wmfRGB wmf_orchid = { 218, 112, 214 }
wmfRGB wmf_palegoldenrod = { 238, 232, 170 }
wmfRGB wmf_palegreen = { 152, 251, 152 }
wmfRGB wmf_paleturquoise = { 175, 238, 238 }
wmfRGB wmf_palevioletred = { 219, 112, 147 }
wmfRGB wmf_papayawhip = { 255, 239, 213 }
wmfRGB wmf_peachpuff = { 255, 218, 185 }
wmfRGB wmf_peru = { 205, 133, 63 }
wmfRGB wmf_pink = { 255, 192, 203 }
wmfRGB wmf_plum = { 221, 160, 221 }
wmfRGB wmf_powderblue = { 176, 224, 230 }
wmfRGB wmf_purple = { 128, 0, 128 }
wmfRGB wmf_red = { 255, 0, 0 }
wmfRGB wmf_rosybrown = { 188, 143, 143 }
wmfRGB wmf_royalblue = { 65, 105, 225 }
wmfRGB wmf_saddlebrown = { 139, 69, 19 }
wmfRGB wmf_salmon = { 250, 128, 114 }
wmfRGB wmf_sandybrown = { 244, 164, 96 }
wmfRGB wmf_seagreen = { 46, 139, 87 }
wmfRGB wmf_seashell = { 255, 245, 238 }
wmfRGB wmf_sienna = { 160, 82, 45 }
wmfRGB wmf_silver = { 192, 192, 192 }
wmfRGB wmf_skyblue = { 135, 206, 235 }
wmfRGB wmf_slateblue = { 106, 90, 205 }
wmfRGB wmf_slategray = { 112, 128, 144 }
wmfRGB wmf_slategrey = { 112, 128, 144 }
wmfRGB wmf_snow = { 255, 250, 250 }
wmfRGB wmf_springgreen = { 0, 255, 127 }
wmfRGB wmf_steelblue = { 70, 130, 180 }
wmfRGB wmf_tan = { 210, 180, 140 }
wmfRGB wmf_teal = { 0, 128, 128 }
wmfRGB wmf_thistle = { 216, 191, 216 }
wmfRGB wmf_tomato = { 255, 99, 71 }
wmfRGB wmf_turquoise = { 64, 224, 208 }
wmfRGB wmf_violet = { 238, 130, 238 }
wmfRGB wmf_wheat = { 245, 222, 179 }
wmfRGB wmf_white = { 255, 255, 255 }
wmfRGB wmf_whitesmoke = { 245, 245, 245 }
wmfRGB wmf_yellow = { 255, 255, 0 }
wmfRGB wmf_yellowgreen = { 154, 205, 50 }

Function Documentation

wmfRGB* wmf_ipa_color wmfAPI   API,
unsigned long    index
 

Get indexed color.

Parameters:
API  the API handle
index  the index of the color
Returns:
Returns pointer to the indexed color.

void wmf_ipa_color_add wmfAPI   API,
wmfRGB   rgb
 

Add a color to the internal table.

Parameters:
API  the API handle
rgb  pointer to the color to be added

unsigned long wmf_ipa_color_count wmfAPI   API
 

Get the number of indexed colors.

Parameters:
API  the API handle
Returns:
Returns the number of indexed colors.

unsigned long wmf_ipa_color_index wmfAPI   API,
wmfRGB   rgb
 

Find closest matching color in internal table and return its index.

Parameters:
API  the API handle
rgb  pointer to the color to be matched
Returns:
Returns the index of the closest matching color.

void wmf_ipa_color_init wmfAPI   API
 

Initialize internal color table

Parameters:
API  the API handle

wmfRGB wmf_rgb_black wmfAPI   API
 

The color black.

Parameters:
API  the API handle
Returns:
Returns wmf_black.

wmfRGB wmf_rgb_color wmfAPI   API,
float    red,
float    green,
float    blue
 

Create a color with specified fractions of red, green and blue.

Parameters:
API  the API handle
red  fraction (0 to 1 inclusive) of color red
green  fraction (0 to 1 inclusive) of color green
blue  fraction (0 to 1 inclusive) of color blue
wmf_rgb_color (API,1,1,1) returns wmf_white.

wmf_rgb_color (API,0,0,0) returns wmf_black.

Returns:
Returns the color.

wmfRGB wmf_rgb_white wmfAPI   API
 

The color white.

Parameters:
API  the API handle
Returns:
Returns wmf_white.


Variable Documentation

wmfRGB wmf_aliceblue = { 240, 248, 255 }
 

wmfRGB wmf_antiquewhite = { 250, 235, 215 }
 

wmfRGB wmf_aqua = { 0, 255, 255 }
 

wmfRGB wmf_aquamarine = { 127, 255, 212 }
 

wmfRGB wmf_azure = { 240, 255, 255 }
 

wmfRGB wmf_beige = { 245, 245, 220 }
 

wmfRGB wmf_bisque = { 255, 228, 196 }
 

wmfRGB wmf_black = { 0, 0, 0 }
 

wmfRGB wmf_blanchedalmond = { 255, 235, 205 }
 

wmfRGB wmf_blue = { 0, 0, 255 }
 

wmfRGB wmf_blueviolet = { 138, 43, 226 }
 

wmfRGB wmf_brown = { 165, 42, 42 }
 

wmfRGB wmf_burlywood = { 222, 184, 135 }
 

wmfRGB wmf_cadetblue = { 95, 158, 160 }
 

wmfRGB wmf_chartreuse = { 127, 255, 0 }
 

wmfRGB wmf_chocolate = { 210, 105, 30 }
 

wmfRGB wmf_coral = { 255, 127, 80 }
 

wmfRGB wmf_cornflowerblue = { 100, 149, 237 }
 

wmfRGB wmf_cornsilk = { 255, 248, 220 }
 

wmfRGB wmf_crimson = { 220, 20, 60 }
 

wmfRGB wmf_cyan = { 0, 255, 255 }
 

wmfRGB wmf_darkblue = { 0, 0, 139 }
 

wmfRGB wmf_darkcyan = { 0, 139, 139 }
 

wmfRGB wmf_darkgoldenrod = { 184, 134, 11 }
 

wmfRGB wmf_darkgray = { 169, 169, 169 }
 

wmfRGB wmf_darkgreen = { 0, 100, 0 }
 

wmfRGB wmf_darkgrey = { 169, 169, 169 }
 

wmfRGB wmf_darkkhaki = { 189, 183, 107 }
 

wmfRGB wmf_darkmagenta = { 139, 0, 139 }
 

wmfRGB wmf_darkolivegreen = { 85, 107, 47 }
 

wmfRGB wmf_darkorange = { 255, 140, 0 }
 

wmfRGB wmf_darkorchid = { 153, 50, 204 }
 

wmfRGB wmf_darkred = { 139, 0, 0 }
 

wmfRGB wmf_darksalmon = { 233, 150, 122 }
 

wmfRGB wmf_darkseagreen = { 143, 188, 143 }
 

wmfRGB wmf_darkslateblue = { 72, 61, 139 }
 

wmfRGB wmf_darkslategray = { 47, 79, 79 }
 

wmfRGB wmf_darkslategrey = { 47, 79, 79 }
 

wmfRGB wmf_darkturquoise = { 0, 206, 209 }
 

wmfRGB wmf_darkviolet = { 148, 0, 211 }
 

wmfRGB wmf_deeppink = { 255, 20, 147 }
 

wmfRGB wmf_deepskyblue = { 0, 191, 255 }
 

wmfRGB wmf_dimgray = { 105, 105, 105 }
 

wmfRGB wmf_dimgrey = { 105, 105, 105 }
 

wmfRGB wmf_dodgerblue = { 30, 144, 255 }
 

wmfRGB wmf_firebrick = { 178, 34, 34 }
 

wmfRGB wmf_floralwhite = { 255, 250, 240 }
 

wmfRGB wmf_forestgreen = { 34, 139, 34 }
 

wmfRGB wmf_fuchsia = { 255, 0, 255 }
 

wmfRGB wmf_gainsboro = { 220, 220, 220 }
 

wmfRGB wmf_ghostwhite = { 248, 248, 255 }
 

wmfRGB wmf_gold = { 255, 215, 0 }
 

wmfRGB wmf_goldenrod = { 218, 165, 32 }
 

wmfRGB wmf_gray = { 128, 128, 128 }
 

wmfRGB wmf_green = { 0, 128, 0 }
 

wmfRGB wmf_greenyellow = { 173, 255, 47 }
 

wmfRGB wmf_grey = { 128, 128, 128 }
 

wmfRGB wmf_honeydew = { 240, 255, 240 }
 

wmfRGB wmf_hotpink = { 255, 105, 180 }
 

wmfRGB wmf_indianred = { 205, 92, 92 }
 

wmfRGB wmf_indigo = { 75, 0, 130 }
 

wmfRGB wmf_ivory = { 255, 255, 240 }
 

wmfRGB wmf_khaki = { 240, 230, 140 }
 

wmfRGB wmf_lavender = { 230, 230, 250 }
 

wmfRGB wmf_lavenderblush = { 255, 240, 245 }
 

wmfRGB wmf_lawngreen = { 124, 252, 0 }
 

wmfRGB wmf_lemonchiffon = { 255, 250, 205 }
 

wmfRGB wmf_lightblue = { 173, 216, 230 }
 

wmfRGB wmf_lightcoral = { 240, 128, 128 }
 

wmfRGB wmf_lightcyan = { 224, 255, 255 }
 

wmfRGB wmf_lightgoldenrodyellow = { 250, 250, 210 }
 

wmfRGB wmf_lightgray = { 211, 211, 211 }
 

wmfRGB wmf_lightgreen = { 144, 238, 144 }
 

wmfRGB wmf_lightgrey = { 211, 211, 211 }
 

wmfRGB wmf_lightpink = { 255, 182, 193 }
 

wmfRGB wmf_lightsalmon = { 255, 160, 122 }
 

wmfRGB wmf_lightseagreen = { 32, 178, 170 }
 

wmfRGB wmf_lightskyblue = { 135, 206, 250 }
 

wmfRGB wmf_lightslategray = { 119, 136, 153 }
 

wmfRGB wmf_lightslategrey = { 119, 136, 153 }
 

wmfRGB wmf_lightsteelblue = { 176, 196, 222 }
 

wmfRGB wmf_lightyellow = { 255, 255, 224 }
 

wmfRGB wmf_lime = { 0, 255, 0 }
 

wmfRGB wmf_limegreen = { 50, 205, 50 }
 

wmfRGB wmf_linen = { 250, 240, 230 }
 

wmfRGB wmf_magenta = { 255, 0, 255 }
 

wmfRGB wmf_maroon = { 128, 0, 0 }
 

wmfRGB wmf_mediumaquamarine = { 102, 205, 170 }
 

wmfRGB wmf_mediumblue = { 0, 0, 205 }
 

wmfRGB wmf_mediumorchid = { 186, 85, 211 }
 

wmfRGB wmf_mediumpurple = { 147, 112, 219 }
 

wmfRGB wmf_mediumseagreen = { 60, 179, 113 }
 

wmfRGB wmf_mediumslateblue = { 123, 104, 238 }
 

wmfRGB wmf_mediumspringgreen = { 0, 250, 154 }
 

wmfRGB wmf_mediumturquoise = { 72, 209, 204 }
 

wmfRGB wmf_mediumvioletred = { 199, 21, 133 }
 

wmfRGB wmf_midnightblue = { 25, 25, 112 }
 

wmfRGB wmf_mintcream = { 245, 255, 250 }
 

wmfRGB wmf_mistyrose = { 255, 228, 225 }
 

wmfRGB wmf_moccasin = { 255, 228, 181 }
 

wmfRGB wmf_navajowhite = { 255, 222, 173 }
 

wmfRGB wmf_navy = { 0, 0, 128 }
 

wmfRGB wmf_oldlace = { 253, 245, 230 }
 

wmfRGB wmf_olive = { 128, 128, 0 }
 

wmfRGB wmf_olivedrab = { 107, 142, 35 }
 

wmfRGB wmf_orange = { 255, 165, 0 }
 

wmfRGB wmf_orangered = { 255, 69, 0 }
 

wmfRGB wmf_orchid = { 218, 112, 214 }
 

wmfRGB wmf_palegoldenrod = { 238, 232, 170 }
 

wmfRGB wmf_palegreen = { 152, 251, 152 }
 

wmfRGB wmf_paleturquoise = { 175, 238, 238 }
 

wmfRGB wmf_palevioletred = { 219, 112, 147 }
 

wmfRGB wmf_papayawhip = { 255, 239, 213 }
 

wmfRGB wmf_peachpuff = { 255, 218, 185 }
 

wmfRGB wmf_peru = { 205, 133, 63 }
 

wmfRGB wmf_pink = { 255, 192, 203 }
 

wmfRGB wmf_plum = { 221, 160, 221 }
 

wmfRGB wmf_powderblue = { 176, 224, 230 }
 

wmfRGB wmf_purple = { 128, 0, 128 }
 

wmfRGB wmf_red = { 255, 0, 0 }
 

wmfRGB wmf_rosybrown = { 188, 143, 143 }
 

wmfRGB wmf_royalblue = { 65, 105, 225 }
 

wmfRGB wmf_saddlebrown = { 139, 69, 19 }
 

wmfRGB wmf_salmon = { 250, 128, 114 }
 

wmfRGB wmf_sandybrown = { 244, 164, 96 }
 

wmfRGB wmf_seagreen = { 46, 139, 87 }
 

wmfRGB wmf_seashell = { 255, 245, 238 }
 

wmfRGB wmf_sienna = { 160, 82, 45 }
 

wmfRGB wmf_silver = { 192, 192, 192 }
 

wmfRGB wmf_skyblue = { 135, 206, 235 }
 

wmfRGB wmf_slateblue = { 106, 90, 205 }
 

wmfRGB wmf_slategray = { 112, 128, 144 }
 

wmfRGB wmf_slategrey = { 112, 128, 144 }
 

wmfRGB wmf_snow = { 255, 250, 250 }
 

wmfRGB wmf_springgreen = { 0, 255, 127 }
 

wmfRGB wmf_steelblue = { 70, 130, 180 }
 

wmfRGB wmf_tan = { 210, 180, 140 }
 

wmfRGB wmf_teal = { 0, 128, 128 }
 

wmfRGB wmf_thistle = { 216, 191, 216 }
 

wmfRGB wmf_tomato = { 255, 99, 71 }
 

wmfRGB wmf_turquoise = { 64, 224, 208 }
 

wmfRGB wmf_violet = { 238, 130, 238 }
 

wmfRGB wmf_wheat = { 245, 222, 179 }
 

wmfRGB wmf_white = { 255, 255, 255 }
 

wmfRGB wmf_whitesmoke = { 245, 245, 245 }
 

wmfRGB wmf_yellow = { 255, 255, 0 }
 

wmfRGB wmf_yellowgreen = { 154, 205, 50 }
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/coord_8h.html0000644000077100007710000000535107575443115016626 0ustar fjffjf00000000000000 coord.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

coord.h File Reference


Functions

void wmf_set_viewport_origin (wmfAPI *API, wmfD_Coord d_pt)

Function Documentation

void wmf_set_viewport_origin wmfAPI   API,
wmfD_Coord    d_pt
 

Set the device origin coordinate.

Parameters:
API  the API handle
d_pt  origin in device coordinates
Not really recommended.


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/dc_8h.html0000644000077100007710000000203307575443115016100 0ustar fjffjf00000000000000 dc.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

dc.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/defaults_8h.html0000644000077100007710000000204707575443115017326 0ustar fjffjf00000000000000 defaults.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

defaults.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/defs_8h.html0000644000077100007710000021002707575443115016437 0ustar fjffjf00000000000000 defs.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

defs.h File Reference


Defines

#define ALTERNATE   1
#define WINDING   2
#define POLYFILL_LAST   2
#define BS_SOLID   0
#define BS_NULL   1
#define BS_HOLLOW   BS_NULL
#define BS_HATCHED   2
#define BS_PATTERN   3
#define BS_INDEXED   4
#define BS_DIBPATTERN   5
#define BS_DIBPATTERNPT   6
#define BS_PATTERN8X8   7
#define BS_DIBPATTERN8X8   8
#define TO_FILL(Z)   ((Z)->dc->brush->lbStyle != BS_NULL)
#define HS_HORIZONTAL   0
#define HS_VERTICAL   1
#define HS_FDIAGONAL   2
#define HS_BDIAGONAL   3
#define HS_CROSS   4
#define HS_DIAGCROSS   5
#define PS_SOLID   0
#define PS_DASH   1
#define PS_DOT   2
#define PS_DASHDOT   3
#define PS_DASHDOTDOT   4
#define PS_NULL   5
#define PS_INSIDEFRAME   6
#define PS_USERSTYLE   7
#define PS_ALTERNATE   8
#define PS_STYLE_MASK   0x0000000F
#define TO_DRAW(Z)   (((Z)->dc->pen->lopnStyle & PS_STYLE_MASK) != PS_NULL)
#define PS_ENDCAP_ROUND   0x00000000
#define PS_ENDCAP_SQUARE   0x00000100
#define PS_ENDCAP_FLAT   0x00000200
#define PS_ENDCAP_MASK   0x00000F00
#define PS_JOIN_ROUND   0x00000000
#define PS_JOIN_BEVEL   0x00001000
#define PS_JOIN_MITER   0x00002000
#define PS_JOIN_MASK   0x0000F000
#define PS_COSMETIC   0x00000000
#define PS_GEOMETRIC   0x00010000
#define PS_TYPE_MASK   0x000F0000
#define OBJ_PEN   1
#define OBJ_BRUSH   2
#define OBJ_DC   3
#define OBJ_METADC   4
#define OBJ_PAL   5
#define OBJ_FONT   6
#define OBJ_BITMAP   7
#define OBJ_REGION   8
#define OBJ_METAFILE   9
#define OBJ_MEMDC   10
#define OBJ_EXTPEN   11
#define OBJ_ENHMETADC   12
#define OBJ_ENHMETAFILE   13
#define TA_NOUPDATECP   0
#define TA_UPDATECP   1
#define TA_LEFT   0
#define TA_RIGHT   2
#define TA_CENTER   6
#define TA_TOP   0
#define TA_BOTTOM   8
#define TA_BASELINE   24
#define TA_MASK   (TA_BASELINE+TA_CENTER+TA_UPDATECP)
#define R2_BLACK   1
#define R2_NOTMERGEPEN   2
#define R2_MASKNOTPEN   3
#define R2_NOTCOPYPEN   4
#define R2_MASKPENNOT   5
#define R2_NOT   6
#define R2_XORPEN   7
#define R2_NOTMASKPEN   8
#define R2_MASKPEN   9
#define R2_NOTXORPEN   10
#define R2_NOP   11
#define R2_MERGENOTPEN   12
#define R2_COPYPEN   13
#define R2_MERGEPENNOT   14
#define R2_MERGEPEN   15
#define R2_WHITE   16
#define R2_LAST   16
#define SRCCOPY   (U32)0x00CC0020
#define SRCPAINT   (U32)0x00EE0086
#define SRCAND   (U32)0x008800C6
#define SRCINVERT   (U32)0x00660046
#define SRCERASE   (U32)0x00440328
#define NOTSRCCOPY   (U32)0x00330008
#define NOTSRCERASE   (U32)0x001100A6
#define MERGECOPY   (U32)0x00C000CA
#define MERGEPAINT   (U32)0x00BB0226
#define PATCOPY   (U32)0x00F00021
#define PATPAINT   (U32)0x00FB0A09
#define PATINVERT   (U32)0x005A0049
#define DSTINVERT   (U32)0x00550009
#define BLACKNESS   (U32)0x00000042
#define WHITENESS   (U32)0x00FF0062
#define BLACKONWHITE   1
#define WHITEONBLACK   2
#define COLORONCOLOR   3
#define HALFTONE   4
#define MAXSTRETCHBLTMODE   4
#define TRANSPARENT   1
#define OPAQUE   2
#define BKMODE_LAST   2
#define ETO_OPAQUE   0x0002
#define ETO_CLIPPED   0x0004
#define FLOODFILLBORDER   0
#define FLOODFILLSURFACE   1

Define Documentation

#define ALTERNATE   1
 

#define BKMODE_LAST   2
 

#define BLACKNESS   (U32)0x00000042
 

#define BLACKONWHITE   1
 

#define BS_DIBPATTERN   5
 

#define BS_DIBPATTERN8X8   8
 

#define BS_DIBPATTERNPT   6
 

#define BS_HATCHED   2
 

#define BS_HOLLOW   BS_NULL
 

#define BS_INDEXED   4
 

#define BS_NULL   1
 

#define BS_PATTERN   3
 

#define BS_PATTERN8X8   7
 

#define BS_SOLID   0
 

#define COLORONCOLOR   3
 

#define DSTINVERT   (U32)0x00550009
 

#define ETO_CLIPPED   0x0004
 

#define ETO_OPAQUE   0x0002
 

#define FLOODFILLBORDER   0
 

#define FLOODFILLSURFACE   1
 

#define HALFTONE   4
 

#define HS_BDIAGONAL   3
 

#define HS_CROSS   4
 

#define HS_DIAGCROSS   5
 

#define HS_FDIAGONAL   2
 

#define HS_HORIZONTAL   0
 

#define HS_VERTICAL   1
 

#define MAXSTRETCHBLTMODE   4
 

#define MERGECOPY   (U32)0x00C000CA
 

#define MERGEPAINT   (U32)0x00BB0226
 

#define NOTSRCCOPY   (U32)0x00330008
 

#define NOTSRCERASE   (U32)0x001100A6
 

#define OBJ_BITMAP   7
 

#define OBJ_BRUSH   2
 

#define OBJ_DC   3
 

#define OBJ_ENHMETADC   12
 

#define OBJ_ENHMETAFILE   13
 

#define OBJ_EXTPEN   11
 

#define OBJ_FONT   6
 

#define OBJ_MEMDC   10
 

#define OBJ_METADC   4
 

#define OBJ_METAFILE   9
 

#define OBJ_PAL   5
 

#define OBJ_PEN   1
 

#define OBJ_REGION   8
 

#define OPAQUE   2
 

#define PATCOPY   (U32)0x00F00021
 

#define PATINVERT   (U32)0x005A0049
 

#define PATPAINT   (U32)0x00FB0A09
 

#define POLYFILL_LAST   2
 

#define PS_ALTERNATE   8
 

#define PS_COSMETIC   0x00000000
 

#define PS_DASH   1
 

#define PS_DASHDOT   3
 

#define PS_DASHDOTDOT   4
 

#define PS_DOT   2
 

#define PS_ENDCAP_FLAT   0x00000200
 

#define PS_ENDCAP_MASK   0x00000F00
 

#define PS_ENDCAP_ROUND   0x00000000
 

#define PS_ENDCAP_SQUARE   0x00000100
 

#define PS_GEOMETRIC   0x00010000
 

#define PS_INSIDEFRAME   6
 

#define PS_JOIN_BEVEL   0x00001000
 

#define PS_JOIN_MASK   0x0000F000
 

#define PS_JOIN_MITER   0x00002000
 

#define PS_JOIN_ROUND   0x00000000
 

#define PS_NULL   5
 

#define PS_SOLID   0
 

#define PS_STYLE_MASK   0x0000000F
 

#define PS_TYPE_MASK   0x000F0000
 

#define PS_USERSTYLE   7
 

#define R2_BLACK   1
 

#define R2_COPYPEN   13
 

#define R2_LAST   16
 

#define R2_MASKNOTPEN   3
 

#define R2_MASKPEN   9
 

#define R2_MASKPENNOT   5
 

#define R2_MERGENOTPEN   12
 

#define R2_MERGEPEN   15
 

#define R2_MERGEPENNOT   14
 

#define R2_NOP   11
 

#define R2_NOT   6
 

#define R2_NOTCOPYPEN   4
 

#define R2_NOTMASKPEN   8
 

#define R2_NOTMERGEPEN   2
 

#define R2_NOTXORPEN   10
 

#define R2_WHITE   16
 

#define R2_XORPEN   7
 

#define SRCAND   (U32)0x008800C6
 

#define SRCCOPY   (U32)0x00CC0020
 

#define SRCERASE   (U32)0x00440328
 

#define SRCINVERT   (U32)0x00660046
 

#define SRCPAINT   (U32)0x00EE0086
 

#define TA_BASELINE   24
 

#define TA_BOTTOM   8
 

#define TA_CENTER   6
 

#define TA_LEFT   0
 

#define TA_MASK   (TA_BASELINE+TA_CENTER+TA_UPDATECP)
 

#define TA_NOUPDATECP   0
 

#define TA_RIGHT   2
 

#define TA_TOP   0
 

#define TA_UPDATECP   1
 

#define TO_DRAW      (((Z)->dc->pen->lopnStyle & PS_STYLE_MASK) != PS_NULL)
 

#define TO_FILL      ((Z)->dc->brush->lbStyle != BS_NULL)
 

#define TRANSPARENT   1
 

#define WHITENESS   (U32)0x00FF0062
 

#define WHITEONBLACK   2
 

#define WINDING   2
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/eps_2device_8h.html0000644000077100007710000000204707575443115017707 0ustar fjffjf00000000000000 eps/device.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

device.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/fig_2device_8h.html0000644000077100007710000000204707575443115017665 0ustar fjffjf00000000000000 fig/device.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

device.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/magick_2device_8h.html0000644000077100007710000000205207575443115020347 0ustar fjffjf00000000000000 magick/device.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

device.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/plot_2device_8h.html0000644000077100007710000000205007575443115020070 0ustar fjffjf00000000000000 plot/device.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

device.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/svg_2device_8h.html0000644000077100007710000000204707575443115017717 0ustar fjffjf00000000000000 svg/device.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

device.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/x_2device_8h.html0000644000077100007710000000204507575443115017365 0ustar fjffjf00000000000000 x/device.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

device.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/xgd_2device_8h.html0000644000077100007710000000204707575443115017702 0ustar fjffjf00000000000000 xgd/device.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

device.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/eps_2draw_8h.html0000644000077100007710000000204307575443115017401 0ustar fjffjf00000000000000 eps/draw.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

draw.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/fig_2draw_8h.html0000644000077100007710000000204307575443115017357 0ustar fjffjf00000000000000 fig/draw.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

draw.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/magick_2draw_8h.html0000644000077100007710000000204607575443115020050 0ustar fjffjf00000000000000 magick/draw.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

draw.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/plot_2draw_8h.html0000644000077100007710000000204407575443115017571 0ustar fjffjf00000000000000 plot/draw.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

draw.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/svg_2draw_8h.html0000644000077100007710000000204307575443115017411 0ustar fjffjf00000000000000 svg/draw.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

draw.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/x_2draw_8h.html0000644000077100007710000000204107575443115017057 0ustar fjffjf00000000000000 x/draw.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

draw.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/xgd_2draw_8h.html0000644000077100007710000000204307575443115017374 0ustar fjffjf00000000000000 xgd/draw.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

draw.h File Reference


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/eps_8c.html0000644000077100007710000000413607575443115016302 0ustar fjffjf00000000000000 eps.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

eps.c File Reference


Functions

void wmf_eps_function (wmfAPI *API)

Function Documentation

void wmf_eps_function wmfAPI   API
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/eps_8h.html0000644000077100007710000001270107575443115016304 0ustar fjffjf00000000000000 eps.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

eps.h File Reference


Data Structures

struct  _wmf_eps_t

Defines

#define WMF_EPS_STYLE_PS   (1 << 0)
#define WMF_EPS_LANDSCAPE   (1 << 1)
#define WMF_EPS_GetData(Z)   ((wmf_eps_t*)((Z)->device_data))

Typedefs

typedef _wmf_eps_t wmf_eps_t

Functions

void wmf_eps_function (wmfAPI *)

Define Documentation

#define WMF_EPS_GetData      ((wmf_eps_t*)((Z)->device_data))
 

#define WMF_EPS_LANDSCAPE   (1 << 1)
 

#define WMF_EPS_STYLE_PS   (1 << 0)
 


Typedef Documentation

typedef struct _wmf_eps_t wmf_eps_t
 


Function Documentation

void wmf_eps_function wmfAPI  
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/fig_8c.html0000644000077100007710000000413607575443115016260 0ustar fjffjf00000000000000 fig.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

fig.c File Reference


Functions

void wmf_fig_function (wmfAPI *API)

Function Documentation

void wmf_fig_function wmfAPI   API
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/fig_8h.html0000644000077100007710000002752507575443115016274 0ustar fjffjf00000000000000 fig.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

fig.h File Reference


Data Structures

struct  _wmf_fig_image
struct  _wmf_fig_t

Defines

#define WMF_FIG_LANDSCAPE   (1 << 0)
#define WMF_FIG_IMAGE_PNG   (2)
#define WMF_FIG_IMAGE_JPEG   (6)
#define WMF_FIG_ImageIsEPS(Z)   (((Z)->flags & WMF_FIG_IMAGE_JPEG) == 0)
#define WMF_FIG_ImageIsPNG(Z)   (((Z)->flags & WMF_FIG_IMAGE_JPEG) == WMF_FIG_IMAGE_PNG )
#define WMF_FIG_ImageIsJPG(Z)   (((Z)->flags & WMF_FIG_IMAGE_JPEG) == WMF_FIG_IMAGE_JPEG)
#define WMF_FIG_SUPPORTS_PNG   (1 << 3)
#define WMF_FIG_SUPPORTS_JPEG   (1 << 4)
#define WMF_FIG_MAXPECT   (1 << 5)
#define WMF_FIG_NO_MARGINS   (1 << 6)
#define WMF_FIG_GetData(Z)   ((wmf_fig_t*)((Z)->device_data))

Typedefs

typedef _wmf_fig_t wmf_fig_t

Functions

void wmf_fig_function (wmfAPI *)

Define Documentation

#define WMF_FIG_GetData      ((wmf_fig_t*)((Z)->device_data))
 

#define WMF_FIG_IMAGE_JPEG   (6)
 

#define WMF_FIG_IMAGE_PNG   (2)
 

#define WMF_FIG_ImageIsEPS      (((Z)->flags & WMF_FIG_IMAGE_JPEG) == 0)
 

#define WMF_FIG_ImageIsJPG      (((Z)->flags & WMF_FIG_IMAGE_JPEG) == WMF_FIG_IMAGE_JPEG)
 

#define WMF_FIG_ImageIsPNG      (((Z)->flags & WMF_FIG_IMAGE_JPEG) == WMF_FIG_IMAGE_PNG )
 

#define WMF_FIG_LANDSCAPE   (1 << 0)
 

#define WMF_FIG_MAXPECT   (1 << 5)
 

#define WMF_FIG_NO_MARGINS   (1 << 6)
 

#define WMF_FIG_SUPPORTS_JPEG   (1 << 4)
 

#define WMF_FIG_SUPPORTS_PNG   (1 << 3)
 


Typedef Documentation

typedef struct _wmf_fig_t wmf_fig_t
 


Function Documentation

void wmf_fig_function wmfAPI  
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/font_8c.html0000644000077100007710000003466707575443115016475 0ustar fjffjf00000000000000 font.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

font.c File Reference


Functions

char * wmf_ipa_font_lookup (wmfAPI *API, char *ps_name)
void wmf_ipa_font_init (wmfAPI *API, wmfAPI_Options *options)
void wmf_ipa_font_map_set (wmfAPI *API, wmfMap map)
void wmf_ipa_font_dir (wmfAPI *API, char *fontdir)
float wmf_ipa_font_stringwidth (wmfAPI *API, wmfFont *font, char *str)
void wmf_ipa_draw_text (wmfAPI *API, wmfDrawText_t *draw_text, wmfCharDrawer ipa_draw_text)
void wmf_ipa_font_map_xml (wmfAPI *API, wmfXML_FontData *FD, char *xmlfontmap)
void wmf_ipa_font_map_gs (wmfAPI *API, wmfGS_FontData *FD, char *gsfontmap)
void wmf_ipa_font_map (wmfAPI *API, wmfFont *font)

Function Documentation

void wmf_ipa_draw_text wmfAPI   API,
wmfDrawText_t   draw_text,
wmfCharDrawer    ipa_draw_text
 

void wmf_ipa_font_dir wmfAPI   API,
char *    fontdir
 

void wmf_ipa_font_init wmfAPI   API,
wmfAPI_Options   options
 

char* wmf_ipa_font_lookup wmfAPI   API,
char *    ps_name
 

void wmf_ipa_font_map wmfAPI   API,
wmfFont   font
 

This is the fun bit.

Parameters:
API  the API handle
font  WMF font object: font's family name, italics flag, and the weight
Other inputs include: a ghostscript-style Fontmap, and up to two XML RedHat-style fontmaps. (These are all parsed earlier.) There are also the fallback 13 standard postscript fonts. And then there is a list of font directories to search for fonts.

libwmf requires fonts to have a postscript name, and maintains an internal cache of glyphs path and freetype font face, keyed to postscript font name. Unfortunately, although the XML fontmaps do have font family name, the GS fontmap does not. In the latter, therefore, matching WMF font info to postscript font name is hit-and-miss.

void wmf_ipa_font_map_gs wmfAPI   API,
wmfGS_FontData   FD,
char *    gsfontmap
 

void wmf_ipa_font_map_set wmfAPI   API,
wmfMap    map
 

void wmf_ipa_font_map_xml wmfAPI   API,
wmfXML_FontData   FD,
char *    xmlfontmap
 

float wmf_ipa_font_stringwidth wmfAPI   API,
wmfFont   font,
char *    str
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/include_2libwmf_2font_8h.html0000644000077100007710000006227307575443115021703 0ustar fjffjf00000000000000 include/libwmf/font.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

font.h File Reference


Data Structures

struct  _wmfFontmapData
struct  _wmfFT_CacheEntry
struct  _wmfFT_Mapping
struct  _wmfGS_FontData
struct  _wmfGS_FontInfo
struct  _wmfIPAFont
struct  _wmfXML_FontData
struct  _wmfXML_FontInfo

Defines

#define WMF_FONT_PSNAME(F)   ((F)->user_data ? ((wmfIPAFont*) (F)->user_data)->ps_name : 0)
#define WMF_FONT_FTFACE(F)   ((F)->user_data ? ((wmfIPAFont*) (F)->user_data)->ft_face : 0)

Typedefs

typedef _wmfFT_Mapping wmfFT_Mapping
typedef _wmfFT_CacheEntry wmfFT_CacheEntry
typedef _wmfGS_FontData wmfGS_FontData
typedef _wmfGS_FontInfo wmfGS_FontInfo
typedef _wmfXML_FontData wmfXML_FontData
typedef _wmfXML_FontInfo wmfXML_FontInfo
typedef _wmfFontmapData wmfFontmapData
typedef _wmfIPAFont wmfIPAFont
typedef void(* wmfCharDrawer )(wmfAPI *, wmfDrawText_t *)

Functions

void wmf_ipa_font_init (wmfAPI *, wmfAPI_Options *)
void wmf_ipa_font_map_gs (wmfAPI *, wmfGS_FontData *, char *)
void wmf_ipa_font_map_xml (wmfAPI *, wmfXML_FontData *, char *)
void wmf_ipa_font_map_set (wmfAPI *, wmfMap)
void wmf_ipa_font_map (wmfAPI *, wmfFont *)
void wmf_ipa_font_dir (wmfAPI *, char *)
float wmf_ipa_font_stringwidth (wmfAPI *, wmfFont *, char *)
char * wmf_ipa_font_lookup (wmfAPI *, char *)
void wmf_ipa_draw_text (wmfAPI *, wmfDrawText_t *, wmfCharDrawer)

Define Documentation

#define WMF_FONT_FTFACE      ((F)->user_data ? ((wmfIPAFont*) (F)->user_data)->ft_face : 0)
 

WMF_FONT_FTFACE(wmfFont* F) -> (FT_Face) freetype(2) font face

#define WMF_FONT_PSNAME      ((F)->user_data ? ((wmfIPAFont*) (F)->user_data)->ps_name : 0)
 

WMF_FONT_PSNAME(wmfFont* F) -> (char*) font name to use in postscript output


Typedef Documentation

typedef void(* wmfCharDrawer)(wmfAPI*,wmfDrawText_t*)
 

typedef struct _wmfFontmapData wmfFontmapData
 

typedef struct _wmfFT_CacheEntry wmfFT_CacheEntry
 

typedef struct _wmfFT_Mapping wmfFT_Mapping
 

typedef struct _wmfGS_FontData wmfGS_FontData
 

typedef struct _wmfGS_FontInfo wmfGS_FontInfo
 

typedef struct _wmfIPAFont wmfIPAFont
 

typedef struct _wmfXML_FontData wmfXML_FontData
 

typedef struct _wmfXML_FontInfo wmfXML_FontInfo
 


Function Documentation

void wmf_ipa_draw_text wmfAPI  ,
wmfDrawText_t  ,
wmfCharDrawer   
 

void wmf_ipa_font_dir wmfAPI  ,
char *   
 

void wmf_ipa_font_init wmfAPI  ,
wmfAPI_Options  
 

char* wmf_ipa_font_lookup wmfAPI  ,
char *   
 

void wmf_ipa_font_map wmfAPI   API,
wmfFont   font
 

This is the fun bit.

Parameters:
API  the API handle
font  WMF font object: font's family name, italics flag, and the weight
Other inputs include: a ghostscript-style Fontmap, and up to two XML RedHat-style fontmaps. (These are all parsed earlier.) There are also the fallback 13 standard postscript fonts. And then there is a list of font directories to search for fonts.

libwmf requires fonts to have a postscript name, and maintains an internal cache of glyphs path and freetype font face, keyed to postscript font name. Unfortunately, although the XML fontmaps do have font family name, the GS fontmap does not. In the latter, therefore, matching WMF font info to postscript font name is hit-and-miss.

void wmf_ipa_font_map_gs wmfAPI  ,
wmfGS_FontData  ,
char *   
 

void wmf_ipa_font_map_set wmfAPI  ,
wmfMap   
 

void wmf_ipa_font_map_xml wmfAPI  ,
wmfXML_FontData  ,
char *   
 

float wmf_ipa_font_stringwidth wmfAPI  ,
wmfFont  ,
char *   
 


Generated on Tue Dec 10 19:53:49 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2font_8h.html0000644000077100007710000000204307575443116017413 0ustar fjffjf00000000000000 src/font.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

font.h File Reference


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2ipa_2fig_2font_8h.html0000644000077100007710000000205307575443116021236 0ustar fjffjf00000000000000 src/ipa/fig/font.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

font.h File Reference


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2ipa_2ipa_2font_8h.html0000644000077100007710000000205307575443116021242 0ustar fjffjf00000000000000 src/ipa/ipa/font.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

font.h File Reference


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2ipa_2x_2font_8h.html0000644000077100007710000000205107575443116020736 0ustar fjffjf00000000000000 src/ipa/x/font.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

font.h File Reference


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/src_2ipa_2xgd_2font_8h.html0000644000077100007710000000205307575443116021253 0ustar fjffjf00000000000000 src/ipa/xgd/font.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

font.h File Reference


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/foreign_8c.html0000644000077100007710000001751107575443116017146 0ustar fjffjf00000000000000 foreign.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

foreign.c File Reference


Functions

void wmf_foreign_function (wmfAPI *API)
int wmf_image_load_png (wmfAPI *API, FILE *png_in, wmfImage *image)
int wmf_image_load_jpg (wmfAPI *API, FILE *jpg_in, wmfImage *image)
int wmf_image_save_eps (wmfAPI *API, FILE *file, wmfImage *image)
void wmf_image_free (wmfAPI *API, wmfImage *image)

Function Documentation

void wmf_foreign_function wmfAPI   API
 

void wmf_image_free wmfAPI   API,
wmfImage   image
 

int wmf_image_load_jpg wmfAPI   API,
FILE *    jpg_in,
wmfImage   image
 

int wmf_image_load_png wmfAPI   API,
FILE *    png_in,
wmfImage   image
 

int wmf_image_save_eps wmfAPI   API,
FILE *    file,
wmfImage   image
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/foreign_8h.html0000644000077100007710000002620407575443116017152 0ustar fjffjf00000000000000 foreign.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

foreign.h File Reference


Data Structures

struct  _wmf_foreign_t

Defines

#define WMF_FOREIGN_SUPPORTS_PNG   (1 << 0)
#define WMF_FOREIGN_SUPPORTS_JPEG   (1 << 1)
#define WMF_FOREIGN_GetData(Z)   ((wmf_foreign_t*)((Z)->device_data))

Typedefs

typedef _wmf_foreign_t wmf_foreign_t

Functions

void wmf_foreign_function (wmfAPI *API)
int wmf_image_load_png (wmfAPI *, FILE *, wmfImage *)
int wmf_image_load_jpg (wmfAPI *, FILE *, wmfImage *)
int wmf_image_save_eps (wmfAPI *, FILE *, wmfImage *)
void wmf_image_free (wmfAPI *, wmfImage *)

Define Documentation

#define WMF_FOREIGN_GetData      ((wmf_foreign_t*)((Z)->device_data))
 

#define WMF_FOREIGN_SUPPORTS_JPEG   (1 << 1)
 

#define WMF_FOREIGN_SUPPORTS_PNG   (1 << 0)
 


Typedef Documentation

typedef struct _wmf_foreign_t wmf_foreign_t
 


Function Documentation

void wmf_foreign_function wmfAPI   API
 

void wmf_image_free wmfAPI  ,
wmfImage  
 

int wmf_image_load_jpg wmfAPI  ,
FILE *   ,
wmfImage  
 

int wmf_image_load_png wmfAPI  ,
FILE *   ,
wmfImage  
 

int wmf_image_save_eps wmfAPI  ,
FILE *   ,
wmfImage  
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/fund_8h.html0000644000077100007710000001414107575443116016452 0ustar fjffjf00000000000000 fund.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

fund.h File Reference


Defines

#define U32   unsigned int
#define S32   int
#define U16   unsigned short
#define S16   short
#define U8   unsigned char
#define U16_2_S16(X)   (((X) & 0x8000) ? ((S16) ((S32) (X) - (S32) 0x10000)) : ((S16) (X)))
#define U16_2_S32(X)   (((X) & 0x8000) ? ((S32) (X) - (S32) 0x10000) : ((S32) (X)))

Define Documentation

#define S16   short
 

#define S32   int
 

#define U16   unsigned short
 

#define U16_2_S16      (((X) & 0x8000) ? ((S16) ((S32) (X) - (S32) 0x10000)) : ((S16) (X)))
 

#define U16_2_S32      (((X) & 0x8000) ? ((S32) (X) - (S32) 0x10000) : ((S32) (X)))
 

#define U32   unsigned int
 

#define U8   unsigned char
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/gd_8h.html0000644000077100007710000002546107575443116016117 0ustar fjffjf00000000000000 gd.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

gd.h File Reference


Data Structures

struct  _wmf_gd_sink
struct  _wmf_gd_t

Defines

#define WMF_GD_SUPPORTS_PNG   (1 << 0)
#define WMF_GD_SUPPORTS_JPEG   (1 << 1)
#define WMF_GD_OUTPUT_FILE   (1 << 16)
#define WMF_GD_OUTPUT_MEMORY   (1 << 17)
#define WMF_GD_OWN_BUFFER   (1 << 18)
#define WMF_GD_GetData(Z)   ((wmf_gd_t*)((Z)->device_data))

Typedefs

typedef enum _wmf_gd_subtype wmf_gd_subtype
typedef _wmf_gd_t wmf_gd_t

Enumerations

enum  _wmf_gd_subtype {
  wmf_gd_png = 0,
  wmf_gd_jpeg,
  wmf_gd_image
}

Functions

void wmf_gd_function (wmfAPI *)
int * wmf_gd_image_pixels (void *gd_image)

Define Documentation

#define WMF_GD_GetData      ((wmf_gd_t*)((Z)->device_data))
 

#define WMF_GD_OUTPUT_FILE   (1 << 16)
 

#define WMF_GD_OUTPUT_MEMORY   (1 << 17)
 

#define WMF_GD_OWN_BUFFER   (1 << 18)
 

#define WMF_GD_SUPPORTS_JPEG   (1 << 1)
 

#define WMF_GD_SUPPORTS_PNG   (1 << 0)
 


Typedef Documentation

typedef enum _wmf_gd_subtype wmf_gd_subtype
 

typedef struct _wmf_gd_t wmf_gd_t
 


Enumeration Type Documentation

enum _wmf_gd_subtype
 

Enumeration values:
wmf_gd_png 
wmf_gd_jpeg 
wmf_gd_image 


Function Documentation

void wmf_gd_function wmfAPI  
 

int* wmf_gd_image_pixels void *    gd_image
 

If using the wmf_gd_image option to write to a GD image, collected from the void* gd_image member of the device data struct above, the true-color pixels (stored in a contiguous array of height * width integers) of the image can be retrieved using wmf_gd_image_pixels()


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_8c.html0000644000077100007710000001441007575443116016261 0ustar fjffjf00000000000000 ipa.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

ipa.c File Reference


Defines

#define WMF_IPA   1
#define NPageTypes   11

Functions

char * wmf_ipa_page_format (wmfAPI *API, wmf_page_t type)
unsigned int wmf_ipa_page_width (wmfAPI *API, wmf_page_t type)
unsigned int wmf_ipa_page_height (wmfAPI *API, wmf_page_t type)

Define Documentation

#define NPageTypes   11
 

#define WMF_IPA   1
 


Function Documentation

char* wmf_ipa_page_format wmfAPI   API,
wmf_page_t    type
 

unsigned int wmf_ipa_page_height wmfAPI   API,
wmf_page_t    type
 

unsigned int wmf_ipa_page_width wmfAPI   API,
wmf_page_t    type
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_8h.html0000644000077100007710000015056507575443116016302 0ustar fjffjf00000000000000 ipa.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

ipa.h File Reference


Data Structures

struct  _wmfBMP_Draw_t
struct  _wmfBMP_Read_t
struct  _wmfBMP
struct  _wmfBrush
struct  _wmfColorData
struct  _wmfDC
struct  _wmfDrawArc_t
struct  _wmfDrawLine_t
struct  _wmfDrawPixel_t
struct  _wmfDrawRectangle_t
struct  _wmfDrawText_t
struct  _wmfFlood_t
struct  _wmfFont
struct  _wmfFontData
struct  _wmfFunctionReference
struct  _wmfPen
struct  _wmfPolyLine_t
struct  _wmfPolyPoly_t
struct  _wmfPolyRectangle_t
struct  _wmfRGB
struct  _wmfROP_Draw_t
struct  _wmfUserData_t

Typedefs

typedef _wmfRGB wmfRGB
typedef _wmfBMP wmfBMP
typedef _wmfBrush wmfBrush
typedef _wmfPen wmfPen
typedef _wmfFont wmfFont
typedef _wmfFontData wmfFontData
typedef _wmfColorData wmfColorData
typedef _wmfDC wmfDC
typedef _wmfFlood_t wmfFlood_t
typedef _wmfDrawPixel_t wmfDrawPixel_t
typedef _wmfDrawArc_t wmfDrawArc_t
typedef _wmfDrawLine_t wmfDrawLine_t
typedef _wmfPolyLine_t wmfPolyLine_t
typedef _wmfPolyPoly_t wmfPolyPoly_t
typedef _wmfDrawRectangle_t wmfDrawRectangle_t
typedef _wmfPolyRectangle_t wmfPolyRectangle_t
typedef _wmfBMP_Read_t wmfBMP_Read_t
typedef _wmfBMP_Draw_t wmfBMP_Draw_t
typedef _wmfROP_Draw_t wmfROP_Draw_t
typedef _wmfDrawText_t wmfDrawText_t
typedef _wmfUserData_t wmfUserData_t
typedef _wmfFunctionReference wmfFunctionReference
typedef float(* wmfStringWidth )(wmfAPI *, wmfFont *, char *)
typedef void(* wmfMap )(wmfAPI *, wmfFont *)

Functions

void wmf_ipa_bmp_b64 (wmfAPI *, wmfBMP_Draw_t *, wmfStream *)
void wmf_ipa_bmp_png (wmfAPI *, wmfBMP_Draw_t *, char *)
void wmf_ipa_bmp_jpg (wmfAPI *, wmfBMP_Draw_t *, char *)
void wmf_ipa_bmp_eps (wmfAPI *, wmfBMP_Draw_t *, char *)
void wmf_ipa_bmp_read (wmfAPI *, wmfBMP_Read_t *)
void wmf_ipa_bmp_free (wmfAPI *, wmfBMP *)
wmfBMP wmf_ipa_bmp_copy (wmfAPI *, wmfBMP *, unsigned int, unsigned int)
int wmf_ipa_bmp_color (wmfAPI *, wmfBMP *, wmfRGB *, unsigned int, unsigned int)
void wmf_ipa_bmp_setcolor (wmfAPI *, wmfBMP *, wmfRGB *, unsigned char, unsigned int, unsigned int)
int wmf_ipa_bmp_interpolate (wmfAPI *, wmfBMP *, wmfRGB *, float, float)
void wmf_ipa_color_init (wmfAPI *)
void wmf_ipa_color_add (wmfAPI *, wmfRGB *)
unsigned long wmf_ipa_color_index (wmfAPI *, wmfRGB *)
unsigned long wmf_ipa_color_count (wmfAPI *)
wmfRGBwmf_ipa_color (wmfAPI *, unsigned long)
char * wmf_ipa_page_format (wmfAPI *, wmf_page_t)
unsigned int wmf_ipa_page_width (wmfAPI *, wmf_page_t)
unsigned int wmf_ipa_page_height (wmfAPI *, wmf_page_t)
wmfRGB wmf_rgb_color (wmfAPI *, float, float, float)

Variables

wmfRGB wmf_rgb_white (wmfAPI *)
wmfRGB wmf_rgb_black (wmfAPI *)

Typedef Documentation

typedef struct _wmfBMP wmfBMP
 

typedef struct _wmfBMP_Draw_t wmfBMP_Draw_t
 

typedef struct _wmfBMP_Read_t wmfBMP_Read_t
 

typedef struct _wmfBrush wmfBrush
 

typedef struct _wmfColorData wmfColorData
 

typedef struct _wmfDC wmfDC
 

typedef struct _wmfDrawArc_t wmfDrawArc_t
 

typedef struct _wmfDrawLine_t wmfDrawLine_t
 

typedef struct _wmfDrawPixel_t wmfDrawPixel_t
 

typedef struct _wmfDrawRectangle_t wmfDrawRectangle_t
 

typedef struct _wmfDrawText_t wmfDrawText_t
 

typedef struct _wmfFlood_t wmfFlood_t
 

typedef struct _wmfFont wmfFont
 

typedef struct _wmfFontData wmfFontData
 

typedef struct _wmfFunctionReference wmfFunctionReference
 

typedef void(* wmfMap)(wmfAPI*,wmfFont*)
 

typedef struct _wmfPen wmfPen
 

typedef struct _wmfPolyLine_t wmfPolyLine_t
 

typedef struct _wmfPolyPoly_t wmfPolyPoly_t
 

typedef struct _wmfPolyRectangle_t wmfPolyRectangle_t
 

typedef struct _wmfRGB wmfRGB
 

typedef struct _wmfROP_Draw_t wmfROP_Draw_t
 

typedef float(* wmfStringWidth)(wmfAPI*,wmfFont*,char*)
 

typedef struct _wmfUserData_t wmfUserData_t
 


Function Documentation

void wmf_ipa_bmp_b64 wmfAPI  ,
wmfBMP_Draw_t  ,
wmfStream  
 

int wmf_ipa_bmp_color wmfAPI  ,
wmfBMP  ,
wmfRGB  ,
unsigned    int,
unsigned    int
 

wmfBMP wmf_ipa_bmp_copy wmfAPI  ,
wmfBMP  ,
unsigned    int,
unsigned    int
 

void wmf_ipa_bmp_eps wmfAPI  ,
wmfBMP_Draw_t  ,
char *   
 

void wmf_ipa_bmp_free wmfAPI  ,
wmfBMP  
 

int wmf_ipa_bmp_interpolate wmfAPI  ,
wmfBMP  ,
wmfRGB  ,
float   ,
float   
 

void wmf_ipa_bmp_jpg wmfAPI  ,
wmfBMP_Draw_t  ,
char *   
 

void wmf_ipa_bmp_png wmfAPI  ,
wmfBMP_Draw_t  ,
char *   
 

void wmf_ipa_bmp_read wmfAPI  ,
wmfBMP_Read_t  
 

void wmf_ipa_bmp_setcolor wmfAPI  ,
wmfBMP  ,
wmfRGB  ,
unsigned    char,
unsigned    int,
unsigned    int
 

wmfRGB* wmf_ipa_color wmfAPI   API,
unsigned long    index
 

Get indexed color.

Parameters:
API  the API handle
index  the index of the color
Returns:
Returns pointer to the indexed color.

void wmf_ipa_color_add wmfAPI   API,
wmfRGB   rgb
 

Add a color to the internal table.

Parameters:
API  the API handle
rgb  pointer to the color to be added

unsigned long wmf_ipa_color_count wmfAPI   API
 

Get the number of indexed colors.

Parameters:
API  the API handle
Returns:
Returns the number of indexed colors.

unsigned long wmf_ipa_color_index wmfAPI   API,
wmfRGB   rgb
 

Find closest matching color in internal table and return its index.

Parameters:
API  the API handle
rgb  pointer to the color to be matched
Returns:
Returns the index of the closest matching color.

void wmf_ipa_color_init wmfAPI   API
 

Initialize internal color table

Parameters:
API  the API handle

char* wmf_ipa_page_format wmfAPI  ,
wmf_page_t   
 

unsigned int wmf_ipa_page_height wmfAPI  ,
wmf_page_t   
 

unsigned int wmf_ipa_page_width wmfAPI  ,
wmf_page_t   
 

wmfRGB wmf_rgb_color wmfAPI   API,
float    red,
float    green,
float    blue
 

Create a color with specified fractions of red, green and blue.

Parameters:
API  the API handle
red  fraction (0 to 1 inclusive) of color red
green  fraction (0 to 1 inclusive) of color green
blue  fraction (0 to 1 inclusive) of color blue
wmf_rgb_color (API,1,1,1) returns wmf_white.

wmf_rgb_color (API,0,0,0) returns wmf_black.

Returns:
Returns the color.


Variable Documentation

wmfRGB wmf_rgb_black(wmfAPI*)
 

wmfRGB wmf_rgb_white(wmfAPI*)
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/macro_8h.html0000644000077100007710000024137007575443116016625 0ustar fjffjf00000000000000 macro.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

macro.h File Reference


Defines

#define WMF_PEN_STYLE(P)   ((P)->lopnStyle & PS_STYLE_MASK)
#define WMF_PEN_ENDCAP(P)   ((P)->lopnStyle & PS_ENDCAP_MASK)
#define WMF_PEN_JOIN(P)   ((P)->lopnStyle & PS_JOIN_MASK)
#define WMF_PEN_TYPE(P)   ((P)->lopnStyle & PS_TYPE_MASK)
#define WMF_PEN_WIDTH(P)   ((P)->width)
#define WMF_PEN_HEIGHT(P)   ((P)->height)
#define WMF_PEN_COLOR(P)   (&((P)->lopnColor))
#define WMF_PEN_SET_STYLE(P, Z)   (P)->lopnStyle = ((P)->lopnStyle & ~PS_STYLE_MASK ) | ((Z) & PS_STYLE_MASK )
#define WMF_PEN_SET_ENDCAP(P, Z)   (P)->lopnStyle = ((P)->lopnStyle & ~PS_ENDCAP_MASK) | ((Z) & PS_ENDCAP_MASK)
#define WMF_PEN_SET_JOIN(P, Z)   (P)->lopnStyle = ((P)->lopnStyle & ~PS_JOIN_MASK ) | ((Z) & PS_JOIN_MASK )
#define WMF_PEN_SET_TYPE(P, Z)   (P)->lopnStyle = ((P)->lopnStyle & ~PS_TYPE_MASK ) | ((Z) & PS_TYPE_MASK )
#define WMF_PEN_SET_WIDTH(P, Z)   (P)->width = (Z)
#define WMF_PEN_SET_HEIGHT(P, Z)   (P)->height = (Z)
#define WMF_PEN_SET_COLOR(P, Z)   (P)->lopnColor = (*(Z))
#define WMF_BRUSH_STYLE(B)   ((B)->lbStyle)
#define WMF_BRUSH_HATCH(B)   ((B)->lbHatch)
#define WMF_BRUSH_COLOR(B)   (&((B)->lbColor))
#define WMF_BRUSH_BITMAP(B)   (&((B)->bmp))
#define WMF_BRUSH_SET_STYLE(B, Z)   (B)->lbStyle = (Z)
#define WMF_BRUSH_SET_HATCH(B, Z)   (B)->lbHatch = (Z)
#define WMF_BRUSH_SET_COLOR(B, Z)   (B)->lbColor = (*(Z))
#define WMF_BRUSH_SET_BITMAP(B, Z)   (B)->bmp = (*(Z))
#define WMF_TEXT_ANGLE(F)   ((((double) (F)->lfEscapement) / 10) * M_PI / 180)
#define WMF_TEXT_UNDERLINE(F)   ((F)->lfUnderline)
#define WMF_TEXT_STRIKEOUT(F)   ((F)->lfStrikeOut)
#define WMF_FONT_WIDTH(F)   ((F)->lfWidth)
#define WMF_FONT_HEIGHT(F)   ((F)->lfHeight)
#define WMF_FONT_ESCAPEMENT(F)   ((F)->lfEscapement)
#define WMF_FONT_ORIENTATION(F)   ((F)->lfOrientation)
#define WMF_FONT_WEIGHT(F)   ((F)->lfWeight)
#define WMF_FONT_ITALIC(F)   ((F)->lfItalic)
#define WMF_FONT_OUT(F)   ((F)->lfOutPrecision)
#define WMF_FONT_CLIP(F)   ((F)->lfClipPrecision)
#define WMF_FONT_QUALITY(F)   ((F)->lfQuality)
#define WMF_FONT_PITCH(F)   ((F)->lfPitchAndFamily)
#define WMF_FONT_CHARSET(F)   ((F)->lfCharSet)
#define WMF_FONT_NAME(F)   ((F)->lfFaceName)
#define WMF_TEXT_SET_UNDERLINE(F, Z)   (F)->lfUnderline = (Z)
#define WMF_TEXT_SET_STRIKEOUT(F, Z)   (F)->lfStrikeOut = (Z)
#define WMF_FONT_SET_WIDTH(F, Z)   (F)->lfWidth = (Z)
#define WMF_FONT_SET_HEIGHT(F, Z)   (F)->lfHeight = (Z)
#define WMF_FONT_SET_ESCAPEMENT(F, Z)   (F)->lfEscapement = (Z)
#define WMF_FONT_SET_ORIENTATION(F, Z)   (F)->lfOrientation = (Z)
#define WMF_FONT_SET_WEIGHT(F, Z)   (F)->lfWeight = (Z)
#define WMF_FONT_SET_ITALIC(F, Z)   (F)->lfItalic = (Z)
#define WMF_FONT_SET_OUT(F, Z)   (F)->lfOutPrecision = (Z)
#define WMF_FONT_SET_CLIP(F, Z)   (F)->lfClipPrecision = (Z)
#define WMF_FONT_SET_QUALITY(F, Z)   (F)->lfQuality = (Z)
#define WMF_FONT_SET_PITCH(F, Z)   (F)->lfPitchAndFamily = (Z)
#define WMF_FONT_SET_CHARSET(F, Z)   (F)->lfCharSet = (Z)
#define WMF_FONT_SET_NAME(F, Z)   (F)->lfFaceName = (Z)
#define WMF_DC_BRUSH(C)   ((C)->brush)
#define WMF_DC_PEN(C)   ((C)->pen)
#define WMF_DC_FONT(C)   ((C)->font)
#define WMF_DC_TEXTCOLOR(C)   (&((C)->textcolor))
#define WMF_DC_BACKGROUND(C)   (&((C)->bgcolor))
#define WMF_DC_OPAQUE(C)   ((C)->bgmode == OPAQUE)
#define WMF_DC_TRANSPARENT(C)   ((C)->bgmode == TRANSPARENT)
#define WMF_DC_POLYFILL(C)   ((C)->polyfillmode)
#define WMF_DC_ROP(C)   ((C)->ROPmode)
#define WMF_DC_TEXTALIGN(C)   ((C)->textalign)
#define WMF_DC_CHAREXTRA(C)   ((C)->charextra)
#define WMF_DC_BREAKEXTRA(C)   ((C)->breakextra)
#define WMF_DC_SET_PEN(C, Z)   (C)->pen = (Z)
#define WMF_DC_SET_BRUSH(C, Z)   (C)->brush = (Z)
#define WMF_DC_SET_FONT(C, Z)   (C)->font = (Z)
#define WMF_DC_SET_TEXTCOLOR(C, Z)   (C)->textcolor = (*(Z))
#define WMF_DC_SET_BACKGROUND(C, Z)   (C)->bgcolor = (*(Z))
#define WMF_DC_SET_OPAQUE(C)   (C)->bgmode = OPAQUE
#define WMF_DC_SET_TRANSPARENT(C)   (C)->bgmode = TRANSPARENT
#define WMF_DC_SET_POLYFILL(C, Z)   (C)->polyfillmode = (Z)
#define WMF_DC_SET_ROP(C, Z)   (C)->ROPmode = (Z)
#define WMF_DC_SET_TEXTALIGN(C, Z)   (C)->textalign = (Z)
#define WMF_DC_SET_CHAREXTRA(C, Z)   (C)->charextra = (Z)
#define WMF_DC_SET_BREAKEXTRA(C, Z)   (C)->breakextra = (Z)

Define Documentation

#define WMF_BRUSH_BITMAP      (&((B)->bmp))
 

WMF_BRUSH_BITMAP(wmfBrush* B) -> (wmfBMP*) brush bitmap

#define WMF_BRUSH_COLOR      (&((B)->lbColor))
 

WMF_BRUSH_COLOR(wmfBrush* B) -> (wmfRGB*) brush color

#define WMF_BRUSH_HATCH      ((B)->lbHatch)
 

WMF_BRUSH_HATCH(wmfBrush* B) -> (U16) brush hatch style

#define WMF_BRUSH_SET_BITMAP B,
     (B)->bmp = (*(Z))
 

WMF_BRUSH_SET_BITMAP(wmfBrush* B,(wmfBMP*) brush bitmap)

#define WMF_BRUSH_SET_COLOR B,
     (B)->lbColor = (*(Z))
 

WMF_BRUSH_SET_COLOR(wmfBrush* B,(wmfRGB*) brush color)

#define WMF_BRUSH_SET_HATCH B,
     (B)->lbHatch = (Z)
 

WMF_BRUSH_SET_HATCH(wmfBrush* B,(U16) brush hatch style)

#define WMF_BRUSH_SET_STYLE B,
     (B)->lbStyle = (Z)
 

WMF_BRUSH_SET_STYLE(wmfBrush* B,(U16) brush style)

#define WMF_BRUSH_STYLE      ((B)->lbStyle)
 

WMF_BRUSH_STYLE(wmfBrush* B) -> (U16) brush style

#define WMF_DC_BACKGROUND      (&((C)->bgcolor))
 

WMF_DC_BACKGROUND(wmfDC* C) -> (wmfRGB*) background color

#define WMF_DC_BREAKEXTRA      ((C)->breakextra)
 

WMF_DC_BREAKEXTRA(wmfDC* C) -> (U16) break [line break??]

#define WMF_DC_BRUSH      ((C)->brush)
 

WMF_DC_BRUSH(wmfDC* C) -> (wmfBrush*) current brush

#define WMF_DC_CHAREXTRA      ((C)->charextra)
 

WMF_DC_CHAREXTRA(wmfDC* C) -> (U16) char [extended character set??]

#define WMF_DC_FONT      ((C)->font)
 

WMF_DC_FONT(wmfDC* C) -> (wmfFont*) current font

#define WMF_DC_OPAQUE      ((C)->bgmode == OPAQUE)
 

WMF_DC_OPAQUE(wmfDC* C) -> (U16) whether to fill opaque (non-zero if true)

#define WMF_DC_PEN      ((C)->pen)
 

WMF_DC_PEN(wmfDC* C) -> (wmfPen*) current pen

#define WMF_DC_POLYFILL      ((C)->polyfillmode)
 

WMF_DC_POLYFILL(wmfDC* C) -> (U16) how to fill polygons

#define WMF_DC_ROP      ((C)->ROPmode)
 

WMF_DC_ROP(wmfDC* C) -> (U16) ROP mode

#define WMF_DC_SET_BACKGROUND C,
     (C)->bgcolor = (*(Z))
 

WMF_DC_SET_BACKGROUND(wmfDC* C,(wmfRGB*) background color)

#define WMF_DC_SET_BREAKEXTRA C,
     (C)->breakextra = (Z)
 

WMF_DC_SET_BREAKEXTRA(wmfDC* C,(U16) break [line break??])

#define WMF_DC_SET_BRUSH C,
     (C)->brush = (Z)
 

WMF_DC_SET_BRUSH(wmfDC* C,(wmfBrush*) current brush)

#define WMF_DC_SET_CHAREXTRA C,
     (C)->charextra = (Z)
 

WMF_DC_SET_CHAREXTRA(wmfDC* C,(U16) char [extended character set??])

#define WMF_DC_SET_FONT C,
     (C)->font = (Z)
 

WMF_DC_SET_FONT(wmfDC* C,(wmfFont*) current font)

#define WMF_DC_SET_OPAQUE      (C)->bgmode = OPAQUE
 

WMF_DC_SET_OPAQUE(wmfDC* C)

#define WMF_DC_SET_PEN C,
     (C)->pen = (Z)
 

WMF_DC_SET_PEN(wmfDC* C,(wmfPen*) current pen)

#define WMF_DC_SET_POLYFILL C,
     (C)->polyfillmode = (Z)
 

WMF_DC_SET_POLYFILL(wmfDC* C,(U16) how to fill polygons)

#define WMF_DC_SET_ROP C,
     (C)->ROPmode = (Z)
 

WMF_DC_SET_ROP(wmfDC* C,(U16) ROP mode)

#define WMF_DC_SET_TEXTALIGN C,
     (C)->textalign = (Z)
 

WMF_DC_SET_TEXTALIGN(wmfDC* C,(U16) how to align text)

#define WMF_DC_SET_TEXTCOLOR C,
     (C)->textcolor = (*(Z))
 

WMF_DC_SET_TEXTCOLOR(wmfDC* C,(wmfRGB*) text color)

#define WMF_DC_SET_TRANSPARENT      (C)->bgmode = TRANSPARENT
 

WMF_DC_SET_TRANSPARENT(wmfDC* C)

#define WMF_DC_TEXTALIGN      ((C)->textalign)
 

WMF_DC_TEXTALIGN(wmfDC* C) -> (U16) how to align text

#define WMF_DC_TEXTCOLOR      (&((C)->textcolor))
 

WMF_DC_TEXTCOLOR(wmfDC* C) -> (wmfRGB*) text color

#define WMF_DC_TRANSPARENT      ((C)->bgmode == TRANSPARENT)
 

WMF_DC_TRANSPARENT(wmfDC* C) -> (U16) whether to fill transparent

#define WMF_FONT_CHARSET      ((F)->lfCharSet)
 

WMF_FONT_CHARSET(wmfFont* F) -> (U8) character set

#define WMF_FONT_CLIP      ((F)->lfClipPrecision)
 

WMF_FONT_CLIP(wmfFont* F) -> (U8) clip precision [??]

#define WMF_FONT_ESCAPEMENT      ((F)->lfEscapement)
 

WMF_FONT_ESCAPEMENT(wmfFont* F) -> (S16) escapement [use WMF_TEXT_ANGLE instead]

#define WMF_FONT_HEIGHT      ((F)->lfHeight)
 

WMF_FONT_HEIGHT(wmfFont* F) -> (U16) font height

#define WMF_FONT_ITALIC      ((F)->lfItalic)
 

WMF_FONT_ITALIC(wmfFont* F) -> (U8) italic

#define WMF_FONT_NAME      ((F)->lfFaceName)
 

WMF_FONT_NAME(wmfFont* F) -> (char*) font name supplied by metafile

#define WMF_FONT_ORIENTATION      ((F)->lfOrientation)
 

WMF_FONT_ORIENTATION(wmfFont* F) -> (S16) orientation [??]

#define WMF_FONT_OUT      ((F)->lfOutPrecision)
 

WMF_FONT_OUT(wmfFont* F) -> (U8) output precision [??]

#define WMF_FONT_PITCH      ((F)->lfPitchAndFamily)
 

WMF_FONT_PITCH(wmfFont* F) -> (U8) pitch & family [??]

#define WMF_FONT_QUALITY      ((F)->lfQuality)
 

WMF_FONT_QUALITY(wmfFont* F) -> (U8) quality [??]

#define WMF_FONT_SET_CHARSET F,
     (F)->lfCharSet = (Z)
 

WMF_FONT_SET_CHARSET(wmfFont* F,(U8) chracter set)

#define WMF_FONT_SET_CLIP F,
     (F)->lfClipPrecision = (Z)
 

WMF_FONT_SET_CLIP(wmfFont* F,(U8) clip precision [??])

#define WMF_FONT_SET_ESCAPEMENT F,
     (F)->lfEscapement = (Z)
 

WMF_FONT_SET_ESCAPEMENT(wmfFont* F,(S16) escapement)

#define WMF_FONT_SET_HEIGHT F,
     (F)->lfHeight = (Z)
 

WMF_FONT_SET_HEIGHT(wmfFont* F,(U16) font height)

#define WMF_FONT_SET_ITALIC F,
     (F)->lfItalic = (Z)
 

WMF_FONT_SET_ITALIC(wmfFont* F,(U8) italic)

#define WMF_FONT_SET_NAME F,
     (F)->lfFaceName = (Z)
 

WMF_FONT_SET_NAME(wmfFont* F,(char*) font name supplied by metafile [do not free this string!])

#define WMF_FONT_SET_ORIENTATION F,
     (F)->lfOrientation = (Z)
 

WMF_FONT_SET_ORIENTATION(wmfFont* F,(S16) orientation [??])

#define WMF_FONT_SET_OUT F,
     (F)->lfOutPrecision = (Z)
 

WMF_FONT_SET_OUT(wmfFont* F,(U8) output precision [??])

#define WMF_FONT_SET_PITCH F,
     (F)->lfPitchAndFamily = (Z)
 

WMF_FONT_SET_PITCH(wmfFont* F,(U8) pitch & family [??])

#define WMF_FONT_SET_QUALITY F,
     (F)->lfQuality = (Z)
 

WMF_FONT_SET_QUALITY(wmfFont* F,(U8) quality [??])

#define WMF_FONT_SET_WEIGHT F,
     (F)->lfWeight = (Z)
 

WMF_FONT_SET_WEIGHT(wmfFont* F,(U16) weight)

#define WMF_FONT_SET_WIDTH F,
     (F)->lfWidth = (Z)
 

WMF_FONT_SET_WIDTH(wmfFont* F,(U16) font `width')

#define WMF_FONT_WEIGHT      ((F)->lfWeight)
 

WMF_FONT_WEIGHT(wmfFont* F) -> (U16) weight

#define WMF_FONT_WIDTH      ((F)->lfWidth)
 

WMF_FONT_WIDTH(wmfFont* F) -> (U16) font `width'

#define WMF_PEN_COLOR      (&((P)->lopnColor))
 

WMF_PEN_COLOR(wmfPen* P) -> (wmfRGB*) pen color

#define WMF_PEN_ENDCAP      ((P)->lopnStyle & PS_ENDCAP_MASK)
 

WMF_PEN_ENDCAP(wmfPen* P) -> (U16) endcap style

#define WMF_PEN_HEIGHT      ((P)->height)
 

WMF_PEN_HEIGHT(wmfPen* P) -> (double) pen `height' (thickness w.r.t. y-axis)

#define WMF_PEN_JOIN      ((P)->lopnStyle & PS_JOIN_MASK)
 

WMF_PEN_JOIN(wmfPen* P) -> (U16) join style

#define WMF_PEN_SET_COLOR P,
     (P)->lopnColor = (*(Z))
 

WMF_PEN_SET_COLOR(wmfPen* P,(wmfRGB*) pen color)

#define WMF_PEN_SET_ENDCAP P,
     (P)->lopnStyle = ((P)->lopnStyle & ~PS_ENDCAP_MASK) | ((Z) & PS_ENDCAP_MASK)
 

WMF_PEN_SET_ENDCAP(wmfPen* P,(U16) endcap style)

#define WMF_PEN_SET_HEIGHT P,
     (P)->height = (Z)
 

WMF_PEN_SET_HEIGHT(wmfPen* P,(double) pen `height')

#define WMF_PEN_SET_JOIN P,
     (P)->lopnStyle = ((P)->lopnStyle & ~PS_JOIN_MASK ) | ((Z) & PS_JOIN_MASK )
 

WMF_PEN_SET_JOIN(wmfPen* P,(U16) join style)

#define WMF_PEN_SET_STYLE P,
     (P)->lopnStyle = ((P)->lopnStyle & ~PS_STYLE_MASK ) | ((Z) & PS_STYLE_MASK )
 

WMF_PEN_SET_STYLE(wmfPen* P,(U16) pen style)

#define WMF_PEN_SET_TYPE P,
     (P)->lopnStyle = ((P)->lopnStyle & ~PS_TYPE_MASK ) | ((Z) & PS_TYPE_MASK )
 

WMF_PEN_SET_TYPE(wmfPen* P,(U16) `type' of pen)

#define WMF_PEN_SET_WIDTH P,
     (P)->width = (Z)
 

WMF_PEN_SET_WIDTH(wmfPen* P,(double) pen `width')

#define WMF_PEN_STYLE      ((P)->lopnStyle & PS_STYLE_MASK)
 

WMF_PEN_STYLE(wmfPen* P) -> (U16) pen style

#define WMF_PEN_TYPE      ((P)->lopnStyle & PS_TYPE_MASK)
 

WMF_PEN_TYPE(wmfPen* P) -> (U16) `type' of pen (??)

#define WMF_PEN_WIDTH      ((P)->width)
 

WMF_PEN_WIDTH(wmfPen* P) -> (double) pen `width' (thickness w.r.t. x-axis)

#define WMF_TEXT_ANGLE      ((((double) (F)->lfEscapement) / 10) * M_PI / 180)
 

WMF_TEXT_ANGLE(wmfFont* F) -> (double) text angle in radians

#define WMF_TEXT_SET_STRIKEOUT F,
     (F)->lfStrikeOut = (Z)
 

WMF_TEXT_SET_STRIKEOUT(wmfFont* F,(U8) ?? whether to strikeout (?? how thick))

#define WMF_TEXT_SET_UNDERLINE F,
     (F)->lfUnderline = (Z)
 

WMF_TEXT_SET_UNDERLINE(wmfFont* F,(U8) ?? whether to underline (?? how thick))

#define WMF_TEXT_STRIKEOUT      ((F)->lfStrikeOut)
 

WMF_TEXT_STRIKEOUT(wmfFont* F) -> (U8) ?? whether to strikeout (?? how thick)

#define WMF_TEXT_UNDERLINE      ((F)->lfUnderline)
 

WMF_TEXT_UNDERLINE(wmfFont* F) -> (U8) ?? whether to underline (?? how thick)


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/magick_8c.html0000644000077100007710000000416107575443116016745 0ustar fjffjf00000000000000 magick.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

magick.c File Reference


Functions

void wmf_magick_function (wmfAPI *API)

Function Documentation

void wmf_magick_function wmfAPI   API
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/magick_8h.html0000644000077100007710000001063407575443116016754 0ustar fjffjf00000000000000 magick.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

magick.h File Reference


Data Structures

struct  _wmf_magick_image
struct  _wmf_magick_t

Defines

#define WMF_MAGICK_GetData(Z)   ((wmf_magick_t*)((Z)->device_data))

Typedefs

typedef _wmf_magick_t wmf_magick_t

Functions

void wmf_magick_function (wmfAPI *)

Define Documentation

#define WMF_MAGICK_GetData      ((wmf_magick_t*)((Z)->device_data))
 


Typedef Documentation

typedef struct _wmf_magick_t wmf_magick_t
 


Function Documentation

void wmf_magick_function wmfAPI  
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/meta_8c.html0000644000077100007710000005216207575443116016444 0ustar fjffjf00000000000000 meta.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

meta.c File Reference


Data Structures

struct  _wmfWriteFileInfo

Typedefs

typedef enum _wmf_write_t wmf_write_t
typedef _wmfWriteFileInfo wmfWriteFileInfo

Enumerations

enum  _wmf_write_t {
  wmf_W_WMF = 0,
  wmf_W_XML
}

Functions

U16 wmf_read_16 (wmfAPI *API)
U32 wmf_read_32 (wmfAPI *API, U16 *u16a, U16 *u16b)
U16 wmf_aldus_checksum (wmfAPI *API)
wmf_error_t wmf_header_read (wmfAPI *API)
void wmf_write (wmfAPI *API, unsigned long Size, unsigned int Function, const char *name, char **atts, const unsigned char *buffer, unsigned long length)
void wmf_write_begin (wmfAPI *API, const char *filename)
void wmf_write_end (wmfAPI *API)
void wmf_attr_new (wmfAPI *API, wmfAttributes *list)
void wmf_attr_clear (wmfAPI *API, wmfAttributes *list)
void wmf_attr_free (wmfAPI *API, wmfAttributes *list)
const char * wmf_attr_add (wmfAPI *API, wmfAttributes *list, const char *name, const char *value)
const char * wmf_attr_query (wmfAPI *API, wmfAttributes *list, const char *name)

Typedef Documentation

typedef enum _wmf_write_t wmf_write_t
 

typedef struct _wmfWriteFileInfo wmfWriteFileInfo
 


Enumeration Type Documentation

enum _wmf_write_t
 

Enumeration values:
wmf_W_WMF 
wmf_W_XML 


Function Documentation

U16 wmf_aldus_checksum wmfAPI   API
 

Compute the Aldus checksum of the metafile's header.

Parameters:
API  the API handle
(Must read the header first, either via wmf_scan() or by calling wmf_header_read() directly.)

Returns:
Returns the checksum.

const char* wmf_attr_add wmfAPI  ,
wmfAttributes  ,
const char *   ,
const char *   
 

Add an name&value to a wmfAttributes structure; returns ptr to value-in-list

void wmf_attr_clear wmfAPI  ,
wmfAttributes  
 

Clear/Empty a wmfAttributes structure

void wmf_attr_free wmfAPI  ,
wmfAttributes  
 

Free memory associated with a wmfAttributes structure

void wmf_attr_new wmfAPI  ,
wmfAttributes  
 

Initialize a wmfAttributes structure

const char* wmf_attr_query wmfAPI  ,
wmfAttributes  ,
const char *   
 

Return value of name in a wmfAttributes structure; returns 0 if name not found

wmf_error_t wmf_header_read wmfAPI   API
 

Read the metafile's header.

Parameters:
API  the API handle
(Must read the header first, either via wmf_scan() or by calling wmf_header_read() directly.)

Returns:
Returns the library error state (wmf_E_None on success). Possible library error states of wmf_E_Glitch, wmf_E_BadFormat (bad header), wmf_E_BadFile (no open input stream) and wmf_E_EOF (premature end-of-file).

U16 wmf_read_16 wmfAPI  
 

Reads a two-byte sequence from the current metafile, returns U16

U32 wmf_read_32 wmfAPI  ,
U16 *   ,
U16 *   
 

Reads a four-byte sequence from the current metafile, returns U32

void wmf_write wmfAPI  ,
unsigned    long,
unsigned    int,
const char *   ,
char **   ,
const unsigned char *   ,
unsigned    long
 

Writes to --wmf-write file (which may be WMF or home-made wmfxml)

void wmf_write_begin wmfAPI  ,
const char *   
 

Open --wmf-write file (which may be WMF or home-made wmfxml)

void wmf_write_end wmfAPI  
 

Close --wmf-write file (which may be WMF or home-made wmfxml)


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/meta_8h.html0000644000077100007710000000203707575443116016445 0ustar fjffjf00000000000000 meta.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

meta.h File Reference


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/player_8c.html0000644000077100007710000003162407575443117017013 0ustar fjffjf00000000000000 player.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

player.c File Reference


Functions

wmf_error_t wmf_player_init (wmfAPI *API)
wmf_error_t wmf_scan (wmfAPI *API, unsigned long flags, wmfD_Rect *d_r)
wmf_error_t wmf_size (wmfAPI *API, float *width, float *height)
wmf_error_t wmf_display_size (wmfAPI *API, unsigned int *width, unsigned int *height, double res_x, double res_y)
wmf_error_t wmf_play (wmfAPI *API, unsigned long flags, wmfD_Rect *d_r)

Function Documentation

wmf_error_t wmf_display_size wmfAPI   API,
unsigned int *    width,
unsigned int *    height,
double    res_x,
double    res_y
 

Get estimate of image display size.

Parameters:
API  the API handle
width  width return
height  height return
res_x  x-resolution of display
res_y  y-resolution of display
wmf_display_size() returns image width in *width and image height in *height. wmf_size() is used to get the calculated/estimate width and height of the image, and these values are converted to integer width and height estimates for display.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch (the metafile has not been scanned).

wmf_error_t wmf_play wmfAPI   API,
unsigned long    flags,
wmfD_Rect   d_r
 

Play the metafile.

Parameters:
API  the API handle
flags  (unused)
d_r  for bounding-box return
Before the metafile can be played, it must be scanned - see wmf_scan().

The first time (and only the first time) the metafile is played, it first calls device_open() for the device layer specified (and initialized) in wmf_api_create(). Then, and also each subsequent time the metafile is played, it calls device_begin(), plays the metafile (with calls to various other device layer functions), and finally it calls device_end(). device_close() is only ever called via wmf_api_destroy().

d_r is recomputed, but should not change.

Returns:
Returns the library error state (wmf_E_None on success).

wmf_error_t wmf_player_init wmfAPI  
 

Initializes the metafile player (called by wmf_api_create())

wmf_error_t wmf_scan wmfAPI   API,
unsigned long    flags,
wmfD_Rect   d_r
 

Scan the metafile.

Parameters:
API  the API handle
flags  (unused)
d_r  for bounding-box return
Before the metafile can be played, it must be scanned. This is because metafile headers do not always provide image size information. Although the device layer (the graphics exporter) is initialized in wmf_api_create(), the output device is not opened until after the metafile is scanned. By scanning, therefore, the device layer can be provided on opening not only with size information but also a list of colors to expect (not including those in raster images) and of other required resources, if necessary. Finally, if scanning fails, then there's certainly no point in playing the metafile.

The bounding box, in device coordinates, is returned in *d_r.

Returns:
Returns the library error state (wmf_E_None on success).

wmf_error_t wmf_size wmfAPI   API,
float *    width,
float *    height
 

Get image size.

Parameters:
API  the API handle
width  width return
height  height return
wmf_size() returns image width in *width and image height in *height. If supplied, the metafile header values are used, otherwise the width and height found by wmf_scan() are used.

Returns:
Returns the library error state (wmf_E_None on success). Possible library error state of wmf_E_Glitch (the metafile has not been scanned).


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/plot_8c.html0000644000077100007710000000414307575443117016471 0ustar fjffjf00000000000000 plot.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

plot.c File Reference


Functions

void wmf_plot_function (wmfAPI *API)

Function Documentation

void wmf_plot_function wmfAPI   API
 


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/plot_8h.html0000644000077100007710000002176007575443117016502 0ustar fjffjf00000000000000 plot.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

plot.h File Reference


Data Structures

struct  _wmf_plot_t

Defines

#define WMF_PLOT_GetData(Z)   ((wmf_plot_t*)((Z)->device_data))

Typedefs

typedef enum _wmf_plot_subtype wmf_plot_subtype
typedef _wmf_plot_t wmf_plot_t

Enumerations

enum  _wmf_plot_subtype {
  wmf_plot_generic = 0,
  wmf_plot_bitmap,
  wmf_plot_meta,
  wmf_plot_tek,
  wmf_plot_regis,
  wmf_plot_hpgl,
  wmf_plot_pcl,
  wmf_plot_fig,
  wmf_plot_cgm,
  wmf_plot_ps,
  wmf_plot_ai,
  wmf_plot_svg,
  wmf_plot_gif,
  wmf_plot_pnm,
  wmf_plot_png,
  wmf_plot_Xdrawable,
  wmf_plot_X
}

Functions

void wmf_plot_function (wmfAPI *)

Define Documentation

#define WMF_PLOT_GetData      ((wmf_plot_t*)((Z)->device_data))
 


Typedef Documentation

typedef enum _wmf_plot_subtype wmf_plot_subtype
 

typedef struct _wmf_plot_t wmf_plot_t
 


Enumeration Type Documentation

enum _wmf_plot_subtype
 

Enumeration values:
wmf_plot_generic 
wmf_plot_bitmap 
wmf_plot_meta 
wmf_plot_tek 
wmf_plot_regis 
wmf_plot_hpgl 
wmf_plot_pcl 
wmf_plot_fig 
wmf_plot_cgm 
wmf_plot_ps 
wmf_plot_ai 
wmf_plot_svg 
wmf_plot_gif 
wmf_plot_pnm 
wmf_plot_png 
wmf_plot_Xdrawable 
wmf_plot_X 


Function Documentation

void wmf_plot_function wmfAPI  
 


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/record_8h.html0000644000077100007710000000204307575443117016773 0ustar fjffjf00000000000000 record.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

record.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2eps_2region_8h.html0000644000077100007710000000205307575443117020645 0ustar fjffjf00000000000000 ipa/eps/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2fig_2region_8h.html0000644000077100007710000000205307575443117020623 0ustar fjffjf00000000000000 ipa/fig/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2magick_2region_8h.html0000644000077100007710000000205607575443117021314 0ustar fjffjf00000000000000 ipa/magick/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2plot_2region_8h.html0000644000077100007710000000205407575443117021035 0ustar fjffjf00000000000000 ipa/plot/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2svg_2region_8h.html0000644000077100007710000000205307575443117020655 0ustar fjffjf00000000000000 ipa/svg/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2x_2region_8h.html0000644000077100007710000000205107575443117020323 0ustar fjffjf00000000000000 ipa/x/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/ipa_2xgd_2region_8h.html0000644000077100007710000000205307575443117020640 0ustar fjffjf00000000000000 ipa/xgd/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/player_2region_8h.html0000644000077100007710000000451107575443117020440 0ustar fjffjf00000000000000 player/region.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

region.h File Reference


Defines

#define EXTENTCHECK(r1, r2)

Define Documentation

#define EXTENTCHECK r1,
r2   
 

Value:

(  ((r1)->BR.x > (r2)->TL.x) \
        && ((r1)->TL.x < (r2)->BR.x) \
        && ((r1)->BR.y > (r2)->TL.y) \
        && ((r1)->TL.y < (r2)->BR.y) )


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/stream_8c.html0000644000077100007710000004013307575443117017005 0ustar fjffjf00000000000000 stream.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

stream.c File Reference


Functions

wmfStreamwmf_ztream_create (wmfAPI *API, gzFile out)
wmfStreamwmf_stream_create (wmfAPI *API, FILE *out)
void wmf_ztream_destroy (wmfAPI *API, wmfStream *stream, char **buffer, unsigned long *length)
void wmf_stream_destroy (wmfAPI *API, wmfStream *stream, char **buffer, unsigned long *length)
int wmf_stream_printf (wmfAPI *API, wmfStream *stream, char *format,...)
int wmf_stream_zputs (char *str, void *context)
int wmf_stream_sputs (char *str, void *context)
int wmf_stream_rezet (void *context)
int wmf_stream_reset (void *context)

Function Documentation

wmfStream* wmf_stream_create wmfAPI   API,
FILE *    out
 

Open an uncompressed character output stream.

Parameters:
API  the API handle
out  descriptor for a file stream; or zero to write to memory
wmf_stream_create() creates a wmfStream (a character-based output stream) for output to a file or, if out is zero, to memory.

Returns:
Returns a wmfStream pointer, or zero on failure. Possible library error states of wmf_E_InsMem or wmf_E_BadFile.

void wmf_stream_destroy wmfAPI   API,
wmfStream   stream,
char **    buffer,
unsigned long *    length
 

Close an uncompressed character output stream.

Parameters:
API  the API handle
stream  stream handle
buffer  for memory return
length  for length return
In the case of write-to-memory, on return *buffer is an array of length length.

int wmf_stream_printf wmfAPI   API,
wmfStream   stream,
char *    format,
...   
 

Formatted print to character output stream.

Parameters:
API  the API handle
stream  stream handle
format  print format
With syntax similar to printf(), wmf_stream_printf() prints a formatted message to a wmfStream character stream.

Returns:
Returns the number of characters written, or zero on failure. Possible library error state of wmf_E_InsMem.

int wmf_stream_reset void *   
 

uncompressed char output (wmf_stream_create): rewind()

int wmf_stream_rezet void *   
 

compressed char output (wmf_ztream_create): rewind()

int wmf_stream_sputs char *   ,
void *   
 

uncompressed char output (wmf_stream_create): fputs()

int wmf_stream_zputs char *   ,
void *   
 

compressed char output (wmf_ztream_create): fputs()

wmfStream* wmf_ztream_create wmfAPI   API,
gzFile    out
 

Open a compressed character output stream.

Parameters:
API  the API handle
out  descriptor for a zlib compressed file stream
wmf_ztream_create() creates a wmfStream (a character-based output stream) for output to a file opened via zlib. (Writing compressed data to memory is not currently supported.)

Returns:
Returns a wmfStream pointer, or zero on failure. Possible library error state of wmf_E_InsMem.

void wmf_ztream_destroy wmfAPI   API,
wmfStream   stream,
char **    buffer,
unsigned long *    length
 

Close a compressed character output stream.

Parameters:
API  the API handle
stream  stream handle
buffer  (unused)
length  (unused)


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/svg_8c.html0000644000077100007710000000413607575443117016314 0ustar fjffjf00000000000000 svg.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

svg.c File Reference


Functions

void wmf_svg_function (wmfAPI *API)

Function Documentation

void wmf_svg_function wmfAPI   API
 


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/svg_8h.html0000644000077100007710000001174407575443117016324 0ustar fjffjf00000000000000 svg.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

svg.h File Reference


Data Structures

struct  _wmf_svg_image
struct  _wmf_svg_t

Defines

#define WMF_SVG_GetData(Z)   ((wmf_svg_t*)((Z)->device_data))
#define WMF_SVG_INLINE_IMAGES   (1 << 0)

Typedefs

typedef _wmf_svg_t wmf_svg_t

Functions

void wmf_svg_function (wmfAPI *)

Define Documentation

#define WMF_SVG_GetData      ((wmf_svg_t*)((Z)->device_data))
 

#define WMF_SVG_INLINE_IMAGES   (1 << 0)
 


Typedef Documentation

typedef struct _wmf_svg_t wmf_svg_t
 


Function Documentation

void wmf_svg_function wmfAPI  
 


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/template_8c.html0000644000077100007710000011075007575443120017322 0ustar fjffjf00000000000000 template.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

template.c File Reference


Functions

void wmf_template_function (wmfAPI *API)
void wmf_template_device_open (wmfAPI *API)
void wmf_template_device_close (wmfAPI *API)
void wmf_template_device_begin (wmfAPI *API)
void wmf_template_device_end (wmfAPI *API)
void wmf_template_flood_interior (wmfAPI *API, wmfFlood_t *flood)
void wmf_template_flood_exterior (wmfAPI *API, wmfFlood_t *flood)
void wmf_template_draw_pixel (wmfAPI *API, wmfDrawPixel_t *drawpixel)
void wmf_template_draw_pie (wmfAPI *API, wmfDrawArc_t *drawarc)
void wmf_template_draw_chord (wmfAPI *API, wmfDrawArc_t *drawarc)
void wmf_template_draw_arc (wmfAPI *API, wmfDrawArc_t *drawarc)
void wmf_template_draw_ellipse (wmfAPI *API, wmfDrawArc_t *drawarc)
void wmf_template_draw_line (wmfAPI *API, wmfDrawLine_t *drawline)
void wmf_template_poly_line (wmfAPI *API, wmfPolyLine_t *polyline)
void wmf_template_draw_polygon (wmfAPI *API, wmfPolyLine_t *polyline)
void wmf_template_draw_rectangle (wmfAPI *API, wmfDrawRectangle_t *drawrectangle)
void wmf_template_rop_draw (wmfAPI *API, wmfROP_Draw_t *ropdraw)
void wmf_template_bmp_draw (wmfAPI *API, wmfBMP_Draw_t *bmpdraw)
void wmf_template_bmp_read (wmfAPI *API, wmfBMP_Read_t *bmpread)
void wmf_template_bmp_free (wmfAPI *API, wmfBMP *bmp)
void wmf_template_draw_text (wmfAPI *API, wmfDrawText_t *drawtext)
void wmf_template_udata_init (wmfAPI *API, wmfUserData_t *userdata)
void wmf_template_udata_copy (wmfAPI *API, wmfUserData_t *userdata)
void wmf_template_udata_set (wmfAPI *API, wmfUserData_t *userdata)
void wmf_template_udata_free (wmfAPI *API, wmfUserData_t *userdata)
void wmf_template_region_frame (wmfAPI *API, wmfPolyRectangle_t *polyrectangle)
void wmf_template_region_paint (wmfAPI *API, wmfPolyRectangle_t *polyrectangle)
void wmf_template_region_clip (wmfAPI *API, wmfPolyRectangle_t *polyrectangle)

Function Documentation

void wmf_template_bmp_draw wmfAPI   API,
wmfBMP_Draw_t   bmpdraw
 

void wmf_template_bmp_free wmfAPI   API,
wmfBMP   bmp
 

void wmf_template_bmp_read wmfAPI   API,
wmfBMP_Read_t   bmpread
 

void wmf_template_device_begin wmfAPI   API
 

void wmf_template_device_close wmfAPI   API
 

void wmf_template_device_end wmfAPI   API
 

void wmf_template_device_open wmfAPI   API
 

void wmf_template_draw_arc wmfAPI   API,
wmfDrawArc_t   drawarc
 

void wmf_template_draw_chord wmfAPI   API,
wmfDrawArc_t   drawarc
 

void wmf_template_draw_ellipse wmfAPI   API,
wmfDrawArc_t   drawarc
 

void wmf_template_draw_line wmfAPI   API,
wmfDrawLine_t   drawline
 

void wmf_template_draw_pie wmfAPI   API,
wmfDrawArc_t   drawarc
 

void wmf_template_draw_pixel wmfAPI   API,
wmfDrawPixel_t   drawpixel
 

void wmf_template_draw_polygon wmfAPI   API,
wmfPolyLine_t   polyline
 

void wmf_template_draw_rectangle wmfAPI   API,
wmfDrawRectangle_t   drawrectangle
 

void wmf_template_draw_text wmfAPI   API,
wmfDrawText_t   drawtext
 

void wmf_template_flood_exterior wmfAPI   API,
wmfFlood_t   flood
 

void wmf_template_flood_interior wmfAPI   API,
wmfFlood_t   flood
 

void wmf_template_function wmfAPI   API
 

void wmf_template_poly_line wmfAPI   API,
wmfPolyLine_t   polyline
 

void wmf_template_region_clip wmfAPI   API,
wmfPolyRectangle_t   polyrectangle
 

void wmf_template_region_frame wmfAPI   API,
wmfPolyRectangle_t   polyrectangle
 

void wmf_template_region_paint wmfAPI   API,
wmfPolyRectangle_t   polyrectangle
 

void wmf_template_rop_draw wmfAPI   API,
wmfROP_Draw_t   ropdraw
 

void wmf_template_udata_copy wmfAPI   API,
wmfUserData_t   userdata
 

void wmf_template_udata_free wmfAPI   API,
wmfUserData_t   userdata
 

void wmf_template_udata_init wmfAPI   API,
wmfUserData_t   userdata
 

void wmf_template_udata_set wmfAPI   API,
wmfUserData_t   userdata
 


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/template_8h.html0000644000077100007710000001043707575443120017330 0ustar fjffjf00000000000000 template.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

template.h File Reference


Data Structures

struct  _wmf_template_t

Defines

#define WMF_TEMPLATE_GetData(Z)   ((wmf_template_t*)((Z)->device_data))

Typedefs

typedef _wmf_template_t wmf_template_t

Functions

void wmf_template_function (wmfAPI *)

Define Documentation

#define WMF_TEMPLATE_GetData      ((wmf_template_t*)((Z)->device_data))
 


Typedef Documentation

typedef struct _wmf_template_t wmf_template_t
 


Function Documentation

void wmf_template_function wmfAPI  
 


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/types_8h.html0000644000077100007710000010135307575443120016657 0ustar fjffjf00000000000000 types.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

types.h File Reference


Data Structures

struct  _wmfAPI
struct  _wmfAPI_Options
struct  _wmfAttributes
struct  _wmfAttributeStore
struct  _wmfD_Coord
struct  _wmfD_Rect
struct  _wmfFontMap
struct  _wmfHead
struct  _wmfImage
struct  _wmfMapping
struct  _wmfMetaHeader
struct  _wmfPlaceableMetaHeader
struct  _wmfStream

Defines

#define WMF_ERROR_STATE(Z)   (((wmfAPI*)(Z))->err)
#define WMF_READ(Z)   ((Z)->bbuf.read ((Z)->buffer_data))
#define WMF_SEEK(Z, P)   ((Z)->bbuf.seek ((Z)->buffer_data,P))
#define WMF_TELL(Z)   ((Z)->bbuf.tell ((Z)->buffer_data))

Typedefs

typedef enum _wmf_bool_t wmf_bool_t
typedef enum _wmf_error_t wmf_error_t
typedef enum _wmf_page_t wmf_page_t
typedef enum _wmf_image_t wmf_image_t
typedef int(* wmfRead )(void *)
typedef int(* wmfSeek )(void *, long)
typedef long(* wmfTell )(void *)
typedef int(* wmfSPutS )(char *, void *)
typedef int(* wmfReset )(void *)
typedef int(* wmfStatus )(void *context, float fraction)
typedef _wmfD_Coord wmfD_Coord
typedef _wmfD_Rect wmfD_Rect
typedef _wmfMapping wmfMapping
typedef _wmfFontMap wmfFontMap
typedef _wmfHead wmfHead
typedef _wmfMetaHeader wmfMetaHeader * wmfFile
typedef _wmfPlaceableMetaHeader wmfPlaceableMetaHeader
typedef _wmfAPI_Options wmfAPI_Options
typedef _wmfAPI wmfAPI
typedef _wmfStream wmfStream
typedef _wmfImage wmfImage
typedef _wmfAttributes wmfAttributes
typedef _wmfAttributeStore wmfAttributeStore

Enumerations

enum  _wmf_bool_t {
  wmf_false = 0,
  wmf_true
}
enum  _wmf_error_t {
  wmf_E_None = 0,
  wmf_E_InsMem,
  wmf_E_BadFile,
  wmf_E_BadFormat,
  wmf_E_EOF,
  wmf_E_DeviceError,
  wmf_E_Glitch,
  wmf_E_Assert,
  wmf_E_UserExit
}
enum  _wmf_page_t {
  wmf_P_A5,
  wmf_P_A4,
  wmf_P_A3,
  wmf_P_A2,
  wmf_P_A1,
  wmf_P_A0,
  wmf_P_B5,
  wmf_P_Letter,
  wmf_P_Legal,
  wmf_P_Ledger,
  wmf_P_Tabloid
}
enum  _wmf_image_t { wmf_I_gd }

Define Documentation

#define WMF_ERROR_STATE      (((wmfAPI*)(Z))->err)
 

WMF_ERROR_STATE(wmfAPI* API) -> (wmf_error_t) library error state

#define WMF_READ      ((Z)->bbuf.read ((Z)->buffer_data))
 

#define WMF_SEEK Z,
     ((Z)->bbuf.seek ((Z)->buffer_data,P))
 

#define WMF_TELL      ((Z)->bbuf.tell ((Z)->buffer_data))
 


Typedef Documentation

typedef enum _wmf_bool_t wmf_bool_t
 

wmf_bool_t is the (enumeration) type used for boolean

typedef enum _wmf_error_t wmf_error_t
 

wmf_error_t is the (enumeration) type used for the library error state.

typedef enum _wmf_image_t wmf_image_t
 

wmf_image_t is the (enumeration) type used to indicate image type.

typedef enum _wmf_page_t wmf_page_t
 

wmf_page_t is the (enumeration) type used to indicate page size.

typedef struct _wmfAPI wmfAPI
 

typedef struct _wmfAPI_Options wmfAPI_Options
 

typedef struct _wmfAttributes wmfAttributes
 

typedef struct _wmfAttributeStore wmfAttributeStore
 

typedef struct _wmfD_Coord wmfD_Coord
 

typedef struct _wmfD_Rect wmfD_Rect
 

typedef struct _wmfMetaHeader wmfMetaHeader* wmfFile
 

typedef struct _wmfFontMap wmfFontMap
 

typedef struct _wmfHead wmfHead
 

typedef struct _wmfImage wmfImage
 

typedef struct _wmfMapping wmfMapping
 

typedef struct _wmfPlaceableMetaHeader wmfPlaceableMetaHeader
 

typedef int(* wmfRead)(void*)
 

User redefinable function for input-stream access:

wmfRead: returns unsigned char cast to int, or EOF

See wmf_bbuf_input().

typedef int(* wmfReset)(void*)
 

User redefinable function for character-based output-stream:

wmfReset: resets stream to start; returns non-zero on failure

See wmfStream.

typedef int(* wmfSeek)(void*,long)
 

User redefinable function for input-stream access:

wmfSeek: returns (-1) on error, else 0

See wmf_bbuf_input().

typedef int(* wmfSPutS)(char*,void*)
 

User redefinable function for character-based output-stream:

wmfSPutS: returns EOF on error, else 0

See wmfStream.

typedef int(* wmfStatus)(void* context,float fraction)
 

User definable function indicating progress.

Parameters:
context  handle for user data
fraction  fraction of metafile parsed so far
Returns:
Should return non-zero only if premature exit is required for whatever reason.
See wmf_status_function().

typedef struct _wmfStream wmfStream
 

typedef long(* wmfTell)(void*)
 

User redefinable function for input-stream access:

wmfTell: returns (-1) on error, else pos

See wmf_bbuf_input().


Enumeration Type Documentation

enum _wmf_bool_t
 

wmf_bool_t is the (enumeration) type used for boolean

Enumeration values:
wmf_false  False
wmf_true  True

enum _wmf_error_t
 

wmf_error_t is the (enumeration) type used for the library error state.

Enumeration values:
wmf_E_None  No error.
wmf_E_InsMem  An attempt to allocate memory has failed.
wmf_E_BadFile  Attempt to open an unreadable file, or to read from an unopened file.
wmf_E_BadFormat  The metafile, if indeed it is a metafile, has been corrupted.
wmf_E_EOF  An unexpected end-of-file has been reached.
wmf_E_DeviceError  Device-layer error.
wmf_E_Glitch  Programmer's error. Sorry.
wmf_E_Assert  Internally forced error.
wmf_E_UserExit  The status function has returned non-zero; exit is premature.

enum _wmf_image_t
 

wmf_image_t is the (enumeration) type used to indicate image type.

Enumeration values:
wmf_I_gd 

enum _wmf_page_t
 

wmf_page_t is the (enumeration) type used to indicate page size.

Enumeration values:
wmf_P_A5  A5 (420 x 595)
wmf_P_A4  A4 (595 x 842)
wmf_P_A3  A3 (842 x 1191)
wmf_P_A2  A2 (1191 x 1684)
wmf_P_A1  A1 (1684 x 2384)
wmf_P_A0  A0 (2384 x 3370)
wmf_P_B5  B5 (516 x 729)
wmf_P_Letter  Letter (612 x 792)
wmf_P_Legal  Legal (612 x 1008)
wmf_P_Ledger  Ledger (1224 x 792)
wmf_P_Tabloid  Tabloid (792 x 1224)


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/wmf_8c.html0000644000077100007710000001626207575443120016303 0ustar fjffjf00000000000000 wmf.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

wmf.c File Reference


Functions

wmf_error_t wmf_api_create (wmfAPI **API_return, unsigned long flags, wmfAPI_Options *options)
wmf_error_t wmf_api_destroy (wmfAPI *API)
char * wmf_help ()

Function Documentation

wmf_error_t wmf_api_create wmfAPI **    API_return,
unsigned long    flags,
wmfAPI_Options   options
 

Creates and initializes an instance of the libwmf library for a specified device layer.

Parameters:
API_return  pointer to a wmfAPI* (the API handle use henceforth)
flags  bitwise OR of WMF_OPT_ options
options  pointer to wmfAPI_Options structure
This is the first and necessary step when using libwmf. Options are passed via the wmfAPI_Options structure and flags. wmf_api_create allocates the wmfAPI structure and initializes the color and font tables, the metafile player, and the device layer. If successful then the pointer to the wmfAPI structure is returned via API_return, otherwise all allocated memory is released and the library exits with an appropriate error.

Returns:
The error state of the library: wmf_E_None indicates successful creation and initialization of the library, and *API_return will be non-zero. For any other error value *API_return will be zero.

wmf_error_t wmf_api_destroy wmfAPI   API
 

Close the device layer, if open, and release all allocated memory attached to the memory manager.

Parameters:
API  the API handle
Returns:
The final error state of the library.

char* wmf_help void   
 

 
Additional wmf-related options:

  --wmf-error[=yes|no]            switch for error reports.
  --wmf-debug[=yes|no]            switch for debug reports, if any.
  --wmf-ignore-nonfatal[=yes|no]  switch to ignore (some) non-fatal errors.
  --wmf-diagnostics               emit diagnostic information.
  --wmf-fontdir=<path>            add <path> to list of font directories.
  --wmf-sys-fonts                 use system fonts, if any found.
  --wmf-sys-fontmap=<file>        use system xml-fontmap file <file>.
  --wmf-xtra-fonts                use non-system fonts, if any found.
  --wmf-xtra-fontmap=<file>       use non-system xml-fontmap file <file>.
  --wmf-gs-fontmap=<file>         use ghostscript file <file>.
  --wmf-write=<file>              write metafile to <file>.

Report bugs to <http://www.wvware.com/>.

Returns:
Returns the above as a string.


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/x_8c.html0000644000077100007710000000412007575443120015747 0ustar fjffjf00000000000000 x.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

x.c File Reference


Functions

void wmf_x_function (wmfAPI *API)

Function Documentation

void wmf_x_function wmfAPI   API
 


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/x_8h.html0000644000077100007710000002133207575443120015760 0ustar fjffjf00000000000000 x.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

x.h File Reference


Data Structures

struct  _wmf_x_t

Defines

#define WMF_X_GetData(Z)   ((wmf_x_t*)(((wmfAPI*)Z)->device_data))
#define WMF_X_DISPLAY_OPEN   (1 << 0)
#define WMF_X_DISPLAY_CLOSE   (1 << 1)
#define WMF_X_WINDOW_OPEN   (1 << 2)
#define WMF_X_WINDOW_CLOSE   (1 << 3)
#define WMF_X_PIXMAP_OPEN   (1 << 4)
#define WMF_X_PIXMAP_CLOSE   (1 << 5)
#define WMF_X_CMAP_DESTROY   (1 << 7)

Typedefs

typedef _wmf_x_t wmf_x_t

Functions

void wmf_x_function (wmfAPI *)

Define Documentation

#define WMF_X_CMAP_DESTROY   (1 << 7)
 

#define WMF_X_DISPLAY_CLOSE   (1 << 1)
 

#define WMF_X_DISPLAY_OPEN   (1 << 0)
 

#define WMF_X_GetData      ((wmf_x_t*)(((wmfAPI*)Z)->device_data))
 

#define WMF_X_PIXMAP_CLOSE   (1 << 5)
 

#define WMF_X_PIXMAP_OPEN   (1 << 4)
 

#define WMF_X_WINDOW_CLOSE   (1 << 3)
 

#define WMF_X_WINDOW_OPEN   (1 << 2)
 


Typedef Documentation

typedef struct _wmf_x_t wmf_x_t
 


Function Documentation

void wmf_x_function wmfAPI  
 


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/xgd_8c.html0000644000077100007710000000646007575443120016273 0ustar fjffjf00000000000000 xgd.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

xgd.c File Reference


Functions

void wmf_gd_function (wmfAPI *API)
int * wmf_gd_image_pixels (void *gd_image)

Function Documentation

void wmf_gd_function wmfAPI   API
 

int* wmf_gd_image_pixels void *    gd_image
 

If using the wmf_gd_image option to write to a GD image, collected from the void* gd_image member of the device data struct above, the true-color pixels (stored in a contiguous array of height * width integers) of the image can be retrieved using wmf_gd_image_pixels()


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/annotated.html0000644000077100007710000002247207575443120017075 0ustar fjffjf00000000000000 Annotated Index
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

libwmf Data Structures

Here are the data structures with brief descriptions:
_wmf_eps_t
_wmf_fig_t
_wmf_fig_t::_wmf_fig_image
_wmf_foreign_t
_wmf_gd_t
_wmf_gd_t::_wmf_gd_sink
_wmf_magick_t
_wmf_magick_t::_wmf_magick_image
_wmf_plot_t
_wmf_svg_t
_wmf_svg_t::_wmf_svg_image
_wmf_template_t
_wmf_x_t
_wmfAPI
_wmfAPI_Options
_wmfAttributes
_wmfAttributeStore
_wmfBMP
_wmfBMP_Draw_t
_wmfBMP_Read_t
_wmfBrush
_wmfCanvasBrush
_wmfCanvasFont
_wmfCanvasPen
_wmfColorData
_wmfConstruct
_wmfD_Coord
_wmfD_Rect
_wmfDC
_wmfDrawArc_t
_wmfDrawLine_t
_wmfDrawPixel_t
_wmfDrawRectangle_t
_wmfDrawText_t
_wmfFlood_t
_wmfFont
_wmfFontData
_wmfFontMap
_wmfFontmapData
_wmfFT_CacheEntry
_wmfFT_Mapping
_wmfFunctionReference
_wmfGS_FontData
_wmfGS_FontInfo
_wmfHead
_wmfImage
_wmfIPAFont
_wmfMapping
_wmfMetaHeader
_wmfPen
_wmfPlaceableMetaHeader
_wmfPolyLine_t
_wmfPolyPoly_t
_wmfPolyRectangle_t
_wmfRecordBox
_wmfRGB
_wmfROP_Draw_t
_wmfStream
_wmfUserData_t
_wmfWriteFileInfo
_wmfXML_FontData
_wmfXML_FontInfo
_wmfXML_InputData
WmfContext

Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/classes.html0000644000077100007710000001655107575443120016556 0ustar fjffjf00000000000000 Alphabetical index
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

libwmf Data Structure Index

  _  
_wmfCanvasBrush   _wmfGS_FontInfo   
_wmf_eps_t   _wmfCanvasFont   _wmfHead   
_wmf_fig_t   _wmfCanvasPen   _wmfImage   
_wmf_fig_t::_wmf_fig_image   _wmfColorData   _wmfIPAFont   
_wmf_foreign_t   _wmfConstruct   _wmfMapping   
_wmf_gd_t   _wmfD_Coord   _wmfMetaHeader   
_wmf_gd_t::_wmf_gd_sink   _wmfD_Rect   _wmfPen   
_wmf_magick_t   _wmfDC   _wmfPlaceableMetaHeader   
_wmf_magick_t::_wmf_magick_image   _wmfDrawArc_t   _wmfPolyLine_t   
_wmf_plot_t   _wmfDrawLine_t   _wmfPolyPoly_t   
_wmf_svg_t   _wmfDrawPixel_t   _wmfPolyRectangle_t   
_wmf_svg_t::_wmf_svg_image   _wmfDrawRectangle_t   _wmfRecordBox   
_wmf_template_t   _wmfDrawText_t   _wmfRGB   
_wmf_x_t   _wmfFlood_t   _wmfROP_Draw_t   
_wmfAPI   _wmfFont   _wmfStream   
_wmfAPI_Options   _wmfFontData   _wmfUserData_t   
_wmfAttributes   _wmfFontMap   _wmfWriteFileInfo   
_wmfAttributeStore   _wmfFontmapData   _wmfXML_FontData   
_wmfBMP   _wmfFT_CacheEntry   _wmfXML_FontInfo   
_wmfBMP_Draw_t   _wmfFT_Mapping   _wmfXML_InputData   
_wmfBMP_Read_t   _wmfFunctionReference   
  W  
_wmfBrush   _wmfGS_FontData   WmfContext   

Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/functions.html0000644000077100007710000011150007575443120017117 0ustar fjffjf00000000000000 Compound Member Index
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

libwmf Data Fields

a | b | c | d | e | f | g | h | i | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y

Here is a list of all struct and union fields with links to the struct/union documentation for each field:

- a -

- b -

- c -

- d -

- e -

- f -

- g -

- h -

- i -

- k -

- l -

- m -

- n -

- o -

- p -

- q -

- r -

- s -

- t -

- u -

- v -

- w -

- x -

- y -


Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__eps__t.html0000644000077100007710000002203307575443120021135 0ustar fjffjf00000000000000 _wmf_eps_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_eps_t Struct Reference


Data Fields

wmfD_Rect bbox
wmfStreamout
char * Title
char * Creator
char * Date
char * For
int eps_x
int eps_y
unsigned int eps_width
unsigned int eps_height
unsigned int page_width
unsigned int page_height
unsigned long flags

Field Documentation

wmfD_Rect _wmf_eps_t::bbox
 

char* _wmf_eps_t::Creator
 

char* _wmf_eps_t::Date
 

unsigned int _wmf_eps_t::eps_height
 

unsigned int _wmf_eps_t::eps_width
 

int _wmf_eps_t::eps_x
 

int _wmf_eps_t::eps_y
 

unsigned long _wmf_eps_t::flags
 

char* _wmf_eps_t::For
 

wmfStream* _wmf_eps_t::out
 

unsigned int _wmf_eps_t::page_height
 

unsigned int _wmf_eps_t::page_width
 

char* _wmf_eps_t::Title
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__fig__t.html0000644000077100007710000002714207575443120021121 0ustar fjffjf00000000000000 _wmf_fig_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_fig_t Struct Reference


Data Fields

void * fig_data
wmfD_Rect bbox
wmfStreamout
char * Title
char * Creator
char * Date
char * For
unsigned int fig_x
unsigned int fig_y
unsigned int fig_width
unsigned int fig_height
wmf_page_t format
unsigned int dpi
int depth
int ddec
_wmf_fig_t::_wmf_fig_image image
unsigned long flags

Field Documentation

wmfD_Rect _wmf_fig_t::bbox
 

char* _wmf_fig_t::Creator
 

char* _wmf_fig_t::Date
 

int _wmf_fig_t::ddec
 

int _wmf_fig_t::depth
 

unsigned int _wmf_fig_t::dpi
 

void* _wmf_fig_t::fig_data
 

unsigned int _wmf_fig_t::fig_height
 

unsigned int _wmf_fig_t::fig_width
 

unsigned int _wmf_fig_t::fig_x
 

unsigned int _wmf_fig_t::fig_y
 

unsigned long _wmf_fig_t::flags
 

char* _wmf_fig_t::For
 

wmf_page_t _wmf_fig_t::format
 

struct _wmf_fig_t::_wmf_fig_image _wmf_fig_t::image
 

wmfStream* _wmf_fig_t::out
 

char* _wmf_fig_t::Title
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:52 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__fig__t_1_1__wmf__fig__image.html0000644000077100007710000000510307575443121025050 0ustar fjffjf00000000000000 _wmf_fig_t::_wmf_fig_image struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_fig_t::_wmf_fig_image Struct Reference


Data Fields

void * context
char *(* name )(void *)

Field Documentation

void* _wmf_fig_t::_wmf_fig_image::context
 

char*(* _wmf_fig_t::_wmf_fig_image::name)(void*)
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__foreign__t.html0000644000077100007710000000357607575443121022013 0ustar fjffjf00000000000000 _wmf_foreign_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_foreign_t Struct Reference


Data Fields

unsigned long flags

Field Documentation

unsigned long _wmf_foreign_t::flags
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__gd__t.html0000644000077100007710000001660707575443121020753 0ustar fjffjf00000000000000 _wmf_gd_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_gd_t Struct Reference


Data Fields

wmf_gd_subtype type
void * gd_data
FILE * file
char * memory
_wmf_gd_t::_wmf_gd_sink sink
void * gd_image
unsigned int width
unsigned int height
wmfD_Rect bbox
unsigned long flags

Field Documentation

wmfD_Rect _wmf_gd_t::bbox
 

FILE* _wmf_gd_t::file
 

unsigned long _wmf_gd_t::flags
 

void* _wmf_gd_t::gd_data
 

void* _wmf_gd_t::gd_image
 

unsigned int _wmf_gd_t::height
 

char* _wmf_gd_t::memory
 

struct _wmf_gd_t::_wmf_gd_sink _wmf_gd_t::sink
 

wmf_gd_subtype _wmf_gd_t::type
 

unsigned int _wmf_gd_t::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__gd__t_1_1__wmf__gd__sink.html0000644000077100007710000000537707575443121024421 0ustar fjffjf00000000000000 _wmf_gd_t::_wmf_gd_sink struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_gd_t::_wmf_gd_sink Struct Reference


Data Fields

void * context
int(* function )(void *context, char *buffer, int length)

Field Documentation

void* _wmf_gd_t::_wmf_gd_sink::context
 

int(* _wmf_gd_t::_wmf_gd_sink::function)(void* context,char* buffer,int length)
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__magick__t.html0000644000077100007710000001231507575443121021604 0ustar fjffjf00000000000000 _wmf_magick_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_magick_t Struct Reference


Data Fields

wmfD_Rect bbox
wmfStreamout
unsigned int width
unsigned int height
_wmf_magick_t::_wmf_magick_image image
unsigned long flags

Field Documentation

wmfD_Rect _wmf_magick_t::bbox
 

unsigned long _wmf_magick_t::flags
 

unsigned int _wmf_magick_t::height
 

struct _wmf_magick_t::_wmf_magick_image _wmf_magick_t::image
 

wmfStream* _wmf_magick_t::out
 

unsigned int _wmf_magick_t::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__magick__t_1_1__wmf__magick__image.html0000644000077100007710000000517107575443121026231 0ustar fjffjf00000000000000 _wmf_magick_t::_wmf_magick_image struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_magick_t::_wmf_magick_image Struct Reference


Data Fields

void * context
char *(* name )(void *)

Field Documentation

void* _wmf_magick_t::_wmf_magick_image::context
 

char*(* _wmf_magick_t::_wmf_magick_image::name)(void*)
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__plot__t.html0000644000077100007710000001305507575443121021331 0ustar fjffjf00000000000000 _wmf_plot_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_plot_t Struct Reference


Data Fields

wmf_plot_subtype type
void * plot_data
FILE * file
unsigned int width
unsigned int height
wmfD_Rect bbox
unsigned long flags

Field Documentation

wmfD_Rect _wmf_plot_t::bbox
 

FILE* _wmf_plot_t::file
 

unsigned long _wmf_plot_t::flags
 

unsigned int _wmf_plot_t::height
 

void* _wmf_plot_t::plot_data
 

wmf_plot_subtype _wmf_plot_t::type
 

unsigned int _wmf_plot_t::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__svg__t.html0000644000077100007710000001332207575443121021147 0ustar fjffjf00000000000000 _wmf_svg_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_svg_t Struct Reference


Data Fields

wmfD_Rect bbox
wmfStreamout
char * Description
unsigned int width
unsigned int height
_wmf_svg_t::_wmf_svg_image image
unsigned long flags

Field Documentation

wmfD_Rect _wmf_svg_t::bbox
 

char* _wmf_svg_t::Description
 

unsigned long _wmf_svg_t::flags
 

unsigned int _wmf_svg_t::height
 

struct _wmf_svg_t::_wmf_svg_image _wmf_svg_t::image
 

wmfStream* _wmf_svg_t::out
 

unsigned int _wmf_svg_t::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__svg__t_1_1__wmf__svg__image.html0000644000077100007710000000510307575443121025134 0ustar fjffjf00000000000000 _wmf_svg_t::_wmf_svg_image struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_svg_t::_wmf_svg_image Struct Reference


Data Fields

void * context
char *(* name )(void *)

Field Documentation

void* _wmf_svg_t::_wmf_svg_image::context
 

char*(* _wmf_svg_t::_wmf_svg_image::name)(void*)
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__template__t.html0000644000077100007710000000507307575443121022167 0ustar fjffjf00000000000000 _wmf_template_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_template_t Struct Reference


Data Fields

wmfD_Rect bbox
unsigned long flags

Field Documentation

wmfD_Rect _wmf_template_t::bbox
 

unsigned long _wmf_template_t::flags
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmf__x__t.html0000644000077100007710000003743407575443121020631 0ustar fjffjf00000000000000 _wmf_x_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmf_x_t Struct Reference


Data Fields

char * display_name
char * window_name
char * icon_name
Display * display
Window root
Window window
Pixmap pixmap
Pixmap hatch
Pixmap brush
Visual * visual
int depth
int class
Colormap colormap
unsigned long black
unsigned long white
unsigned long * color
struct {
   unsigned long   red
   unsigned long   green
   unsigned long   blue
mask
GC gc
unsigned int x_width
unsigned int x_height
wmfD_Rect bbox
unsigned long flags

Field Documentation

wmfD_Rect _wmf_x_t::bbox
 

unsigned long _wmf_x_t::black
 

unsigned long _wmf_x_t::blue
 

Pixmap _wmf_x_t::brush
 

int _wmf_x_t::class
 

unsigned long* _wmf_x_t::color
 

Colormap _wmf_x_t::colormap
 

int _wmf_x_t::depth
 

Display* _wmf_x_t::display
 

char* _wmf_x_t::display_name
 

unsigned long _wmf_x_t::flags
 

GC _wmf_x_t::gc
 

unsigned long _wmf_x_t::green
 

Pixmap _wmf_x_t::hatch
 

char* _wmf_x_t::icon_name
 

struct { ... } _wmf_x_t::mask
 

Pixmap _wmf_x_t::pixmap
 

unsigned long _wmf_x_t::red
 

Window _wmf_x_t::root
 

Visual* _wmf_x_t::visual
 

unsigned long _wmf_x_t::white
 

Window _wmf_x_t::window
 

char* _wmf_x_t::window_name
 

unsigned int _wmf_x_t::x_height
 

unsigned int _wmf_x_t::x_width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfAPI.html0000644000077100007710000004543607575443121020014 0ustar fjffjf00000000000000 _wmfAPI struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfAPI Struct Reference


Data Fields

wmf_error_t err
wmfHead Head
wmfPlaceableMetaHeader PlaceableMetaHeader
wmfMetaHeader MetaHeader
wmfFile File
FILE * debug_out
FILE * error_out
wmfAttributeStore store
void * write_data
void * user_data
void * device_data
void * player_data
void * buffer_data
void * memory_data
void * function_reference
void * font_data
char ** fonts
void * color_data
struct {
   wmfRead   read
   wmfSeek   seek
   wmfTell   tell
bbuf
struct {
   void *   context
   wmfStatus   function
status
struct {
   unsigned long   length
   char *   buffer
string_buffer
unsigned long flags

Field Documentation

struct { ... } _wmfAPI::bbuf
 

char* _wmfAPI::buffer
 

void* _wmfAPI::buffer_data
 

void* _wmfAPI::color_data
 

void* _wmfAPI::context
 

FILE* _wmfAPI::debug_out
 

void* _wmfAPI::device_data
 

wmf_error_t _wmfAPI::err
 

FILE* _wmfAPI::error_out
 

wmfFile _wmfAPI::File
 

unsigned long _wmfAPI::flags
 

void* _wmfAPI::font_data
 

char** _wmfAPI::fonts
 

wmfStatus _wmfAPI::function
 

void* _wmfAPI::function_reference
 

wmfHead _wmfAPI::Head
 

unsigned long _wmfAPI::length
 

void* _wmfAPI::memory_data
 

wmfMetaHeader _wmfAPI::MetaHeader
 

wmfPlaceableMetaHeader _wmfAPI::PlaceableMetaHeader
 

void* _wmfAPI::player_data
 

wmfRead _wmfAPI::read
 

wmfSeek _wmfAPI::seek
 

struct { ... } _wmfAPI::status
 

wmfAttributeStore _wmfAPI::store
 

struct { ... } _wmfAPI::string_buffer
 

wmfTell _wmfAPI::tell
 

void* _wmfAPI::user_data
 

void* _wmfAPI::write_data
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfAPI__Options.html0000644000077100007710000003415407575443121021661 0ustar fjffjf00000000000000 _wmfAPI_Options struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfAPI_Options Struct Reference


Data Fields

void * context
void *(* malloc )(void *context, size_t size)
void *(* realloc )(void *context, void *mem, size_t size)
void(* free )(void *context, void *mem)
int argc
char ** argv
char ** fontdirs
struct {
   wmfFontMap *   wmf
   wmfMapping *   sub
   wmfMapping *   ps
font
char * sys_fontmap_file
char * xtra_fontmap_file
char * gs_fontmap_file
char * write_file
void(* function )(wmfAPI *)
char * module
char ** dirs
FILE * debug_out
FILE * error_out

Field Documentation

int _wmfAPI_Options::argc
 

char** _wmfAPI_Options::argv
 

void* _wmfAPI_Options::context
 

FILE* _wmfAPI_Options::debug_out
 

char** _wmfAPI_Options::dirs
 

FILE* _wmfAPI_Options::error_out
 

struct { ... } _wmfAPI_Options::font
 

char** _wmfAPI_Options::fontdirs
 

void(* _wmfAPI_Options::free)(void* context,void* mem)
 

void(* _wmfAPI_Options::function)(wmfAPI*)
 

char* _wmfAPI_Options::gs_fontmap_file
 

void*(* _wmfAPI_Options::malloc)(void* context,size_t size)
 

char* _wmfAPI_Options::module
 

wmfMapping* _wmfAPI_Options::ps
 

void*(* _wmfAPI_Options::realloc)(void* context,void* mem,size_t size)
 

wmfMapping* _wmfAPI_Options::sub
 

char* _wmfAPI_Options::sys_fontmap_file
 

wmfFontMap* _wmfAPI_Options::wmf
 

char* _wmfAPI_Options::write_file
 

char* _wmfAPI_Options::xtra_fontmap_file
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfBMP.html0000644000077100007710000000567407575443121020021 0ustar fjffjf00000000000000 _wmfBMP struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfBMP Struct Reference


Data Fields

U16 width
U16 height
void * data

Field Documentation

void* _wmfBMP::data
 

U16 _wmfBMP::height
 

U16 _wmfBMP::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfBMP__Draw__t.html0000644000077100007710000001760307575443121021612 0ustar fjffjf00000000000000 _wmfBMP_Draw_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfBMP_Draw_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord pt
wmfBMP bmp
U32 type
struct {
   U16   x
   U16   y
   U16   w
   U16   h
crop
double pixel_width
double pixel_height

Field Documentation

wmfBMP _wmfBMP_Draw_t::bmp
 

struct { ... } _wmfBMP_Draw_t::crop
 

wmfDC* _wmfBMP_Draw_t::dc
 

U16 _wmfBMP_Draw_t::h
 

double _wmfBMP_Draw_t::pixel_height
 

double _wmfBMP_Draw_t::pixel_width
 

wmfD_Coord _wmfBMP_Draw_t::pt
 

U32 _wmfBMP_Draw_t::type
 

U16 _wmfBMP_Draw_t::w
 

U16 _wmfBMP_Draw_t::x
 

U16 _wmfBMP_Draw_t::y
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfBMP__Read__t.html0000644000077100007710000001157507575443121021572 0ustar fjffjf00000000000000 _wmfBMP_Read_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfBMP_Read_t Struct Reference


Data Fields

long offset
long length
unsigned char * buffer
U16 width
U16 height
wmfBMP bmp

Field Documentation

wmfBMP _wmfBMP_Read_t::bmp
 

unsigned char* _wmfBMP_Read_t::buffer
 

U16 _wmfBMP_Read_t::height
 

long _wmfBMP_Read_t::length
 

long _wmfBMP_Read_t::offset
 

U16 _wmfBMP_Read_t::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfBrush.html0000644000077100007710000000731007575443121020453 0ustar fjffjf00000000000000 _wmfBrush struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfBrush Struct Reference


Data Fields

U16 lbStyle
U16 lbHatch
wmfRGB lbColor
wmfBMP bmp

Field Documentation

wmfBMP _wmfBrush::bmp
 

wmfRGB _wmfBrush::lbColor
 

U16 _wmfBrush::lbHatch
 

U16 _wmfBrush::lbStyle
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfColorData.html0000644000077100007710000000615607575443121021247 0ustar fjffjf00000000000000 _wmfColorData struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfColorData Struct Reference


Data Fields

unsigned long max
unsigned long count
wmfRGBrgb

Field Documentation

unsigned long _wmfColorData::count
 

unsigned long _wmfColorData::max
 

wmfRGB* _wmfColorData::rgb
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfD__Coord.html0000644000077100007710000000474107575443121021045 0ustar fjffjf00000000000000 _wmfD_Coord struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfD_Coord Struct Reference


Data Fields

float x
float y

Detailed Description

Device coordinate.


Field Documentation

float _wmfD_Coord::x
 

float _wmfD_Coord::y
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfD__Rect.html0000644000077100007710000000541707575443121020675 0ustar fjffjf00000000000000 _wmfD_Rect struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfD_Rect Struct Reference


Data Fields

wmfD_Coord TL
wmfD_Coord BR

Detailed Description

Device rectangle.


Field Documentation

wmfD_Coord _wmfD_Rect::BR
 

Device coordinate of bottom right corner.

wmfD_Coord _wmfD_Rect::TL
 

Device coordinate of top left corner (TL.x < BR.x, TL.y < BR.y).


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfDC.html0000644000077100007710000003300207575443121017653 0ustar fjffjf00000000000000 _wmfDC struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfDC Struct Reference


Data Fields

void * userdata
wmfBrushbrush
wmfPenpen
wmfFontfont
wmfRGB textcolor
wmfRGB bgcolor
U16 textalign
U16 bgmode
U16 polyfillmode
U16 charextra
U16 breakextra
U16 ROPmode
struct {
   S32   Ox
   S32   Oy
   S32   width
   S32   height
Window
double pixel_width
double pixel_height
U16 map_mode
void * clip

Field Documentation

wmfRGB _wmfDC::bgcolor
 

U16 _wmfDC::bgmode
 

U16 _wmfDC::breakextra
 

wmfBrush* _wmfDC::brush
 

U16 _wmfDC::charextra
 

void* _wmfDC::clip
 

wmfFont* _wmfDC::font
 

S32 _wmfDC::height
 

U16 _wmfDC::map_mode
 

S32 _wmfDC::Ox
 

S32 _wmfDC::Oy
 

wmfPen* _wmfDC::pen
 

double _wmfDC::pixel_height
 

double _wmfDC::pixel_width
 

U16 _wmfDC::polyfillmode
 

U16 _wmfDC::ROPmode
 

U16 _wmfDC::textalign
 

wmfRGB _wmfDC::textcolor
 

void* _wmfDC::userdata
 

S32 _wmfDC::width
 

struct { ... } _wmfDC::Window
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfDrawArc__t.html0000644000077100007710000001114207575443121021373 0ustar fjffjf00000000000000 _wmfDrawArc_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfDrawArc_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord TL
wmfD_Coord BR
wmfD_Coord start
wmfD_Coord end

Field Documentation

wmfD_Coord _wmfDrawArc_t::BR
 

wmfDC* _wmfDrawArc_t::dc
 

wmfD_Coord _wmfDrawArc_t::end
 

wmfD_Coord _wmfDrawArc_t::start
 

wmfD_Coord _wmfDrawArc_t::TL
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfDrawLine__t.html0000644000077100007710000000642107575443121021561 0ustar fjffjf00000000000000 _wmfDrawLine_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfDrawLine_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord from
wmfD_Coord to

Field Documentation

wmfDC* _wmfDrawLine_t::dc
 

wmfD_Coord _wmfDrawLine_t::from
 

wmfD_Coord _wmfDrawLine_t::to
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfDrawPixel__t.html0000644000077100007710000001076007575443121021754 0ustar fjffjf00000000000000 _wmfDrawPixel_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfDrawPixel_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord pt
wmfRGB color
double pixel_width
double pixel_height

Field Documentation

wmfRGB _wmfDrawPixel_t::color
 

wmfDC* _wmfDrawPixel_t::dc
 

double _wmfDrawPixel_t::pixel_height
 

double _wmfDrawPixel_t::pixel_width
 

wmfD_Coord _wmfDrawPixel_t::pt
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfDrawRectangle__t.html0000644000077100007710000001102107575443122022567 0ustar fjffjf00000000000000 _wmfDrawRectangle_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfDrawRectangle_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord TL
wmfD_Coord BR
float width
float height

Field Documentation

wmfD_Coord _wmfDrawRectangle_t::BR
 

wmfDC* _wmfDrawRectangle_t::dc
 

float _wmfDrawRectangle_t::height
 

wmfD_Coord _wmfDrawRectangle_t::TL
 

float _wmfDrawRectangle_t::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfDrawText__t.html0000644000077100007710000002107207575443122021616 0ustar fjffjf00000000000000 _wmfDrawText_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfDrawText_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord pt
wmfD_Coord TL
wmfD_Coord BR
struct {
   wmfD_Coord   TL
   wmfD_Coord   TR
   wmfD_Coord   BL
   wmfD_Coord   BR
bbox
char * str
U16 flags
double font_height
double font_ratio

Field Documentation

struct { ... } _wmfDrawText_t::bbox
 

wmfD_Coord _wmfDrawText_t::BL
 

wmfD_Coord _wmfDrawText_t::BR
 

wmfDC* _wmfDrawText_t::dc
 

U16 _wmfDrawText_t::flags
 

double _wmfDrawText_t::font_height
 

double _wmfDrawText_t::font_ratio
 

wmfD_Coord _wmfDrawText_t::pt
 

char* _wmfDrawText_t::str
 

wmfD_Coord _wmfDrawText_t::TL
 

wmfD_Coord _wmfDrawText_t::TR
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFlood__t.html0000644000077100007710000001176307575443122021125 0ustar fjffjf00000000000000 _wmfFlood_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFlood_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord pt
wmfRGB color
U16 type
double pixel_width
double pixel_height

Field Documentation

wmfRGB _wmfFlood_t::color
 

wmfDC* _wmfFlood_t::dc
 

double _wmfFlood_t::pixel_height
 

double _wmfFlood_t::pixel_width
 

wmfD_Coord _wmfFlood_t::pt
 

U16 _wmfFlood_t::type
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFont.html0000644000077100007710000002370507575443122020305 0ustar fjffjf00000000000000 _wmfFont struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFont Struct Reference


Data Fields

U16 lfHeight
U16 lfWidth
S16 lfEscapement
S16 lfOrientation
U16 lfWeight
U8 lfItalic
U8 lfUnderline
U8 lfStrikeOut
U8 lfCharSet
U8 lfOutPrecision
U8 lfClipPrecision
U8 lfQuality
U8 lfPitchAndFamily
char * lfFaceName
void * user_data

Field Documentation

U8 _wmfFont::lfCharSet
 

U8 _wmfFont::lfClipPrecision
 

S16 _wmfFont::lfEscapement
 

char* _wmfFont::lfFaceName
 

U16 _wmfFont::lfHeight
 

U8 _wmfFont::lfItalic
 

S16 _wmfFont::lfOrientation
 

U8 _wmfFont::lfOutPrecision
 

U8 _wmfFont::lfPitchAndFamily
 

U8 _wmfFont::lfQuality
 

U8 _wmfFont::lfStrikeOut
 

U8 _wmfFont::lfUnderline
 

U16 _wmfFont::lfWeight
 

U16 _wmfFont::lfWidth
 

void* _wmfFont::user_data
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFontData.html0000644000077100007710000000770207575443122021076 0ustar fjffjf00000000000000 _wmfFontData struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFontData Struct Reference


Data Fields

wmfMap map
wmfStringWidth stringwidth
void * user_data

Detailed Description

API->font_data is a pointer to a wmfFontData. wmf_api_create () sets this up automatically, but wmf_lite_create () does not. If you use wmf_lite_create () then you must create your own wmfFontData. libwmflite requires you to define map and stringwidth functions but the rest of these fields are ignored (they are only used by libwmf).


Field Documentation

wmfMap _wmfFontData::map
 

Necessary field: exactly what the function does is irrelevant.

wmfStringWidth _wmfFontData::stringwidth
 

Necessary field: returns width of specified string in points, assuming (unstretched) font size of 1pt.

void* _wmfFontData::user_data
 

A handle for data, unused by libwmflite


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFontMap.html0000644000077100007710000001024107575443122020732 0ustar fjffjf00000000000000 _wmfFontMap struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFontMap Struct Reference


Data Fields

char * name
char * normal
char * italic
char * bold
char * bolditalic

Field Documentation

char* _wmfFontMap::bold
 

char* _wmfFontMap::bolditalic
 

char* _wmfFontMap::italic
 

char* _wmfFontMap::name
 

char* _wmfFontMap::normal
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFontmapData.html0000644000077100007710000001532707575443122021576 0ustar fjffjf00000000000000 _wmfFontmapData struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFontmapData Struct Reference


Data Fields

char ** fontdirs
wmfFontMapwmf
wmfMappingsub
wmfFT_Mappingps
wmfFT_CacheEntrycache
wmfGS_FontData GS
wmfXML_FontData FD
FT_Library Library

Field Documentation

wmfFT_CacheEntry* _wmfFontmapData::cache
 

wmfXML_FontData _wmfFontmapData::FD
 

char** _wmfFontmapData::fontdirs
 

wmfGS_FontData _wmfFontmapData::GS
 

FT_Library _wmfFontmapData::Library
 

wmfFT_Mapping* _wmfFontmapData::ps
 

wmfMapping* _wmfFontmapData::sub
 

wmfFontMap* _wmfFontmapData::wmf
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFT__CacheEntry.html0000644000077100007710000000612307575443122022147 0ustar fjffjf00000000000000 _wmfFT_CacheEntry struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFT_CacheEntry Struct Reference


Data Fields

char * name
char * path
FT_Face face

Field Documentation

FT_Face _wmfFT_CacheEntry::face
 

char* _wmfFT_CacheEntry::name
 

char* _wmfFT_CacheEntry::path
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFT__Mapping.html0000644000077100007710000000724707575443122021525 0ustar fjffjf00000000000000 _wmfFT_Mapping struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFT_Mapping Struct Reference


Data Fields

char * name
char * mapping
FT_Encoding encoding
FT_Face face

Field Documentation

FT_Encoding _wmfFT_Mapping::encoding
 

FT_Face _wmfFT_Mapping::face
 

char* _wmfFT_Mapping::mapping
 

char* _wmfFT_Mapping::name
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfFunctionReference.html0000644000077100007710000006060007575443122022776 0ustar fjffjf00000000000000 _wmfFunctionReference struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfFunctionReference Struct Reference


Data Fields

void(* device_open )(wmfAPI *)
void(* device_close )(wmfAPI *)
void(* device_begin )(wmfAPI *)
void(* device_end )(wmfAPI *)
void(* flood_interior )(wmfAPI *, wmfFlood_t *)
void(* flood_exterior )(wmfAPI *, wmfFlood_t *)
void(* draw_pixel )(wmfAPI *, wmfDrawPixel_t *)
void(* draw_pie )(wmfAPI *, wmfDrawArc_t *)
void(* draw_chord )(wmfAPI *, wmfDrawArc_t *)
void(* draw_arc )(wmfAPI *, wmfDrawArc_t *)
void(* draw_ellipse )(wmfAPI *, wmfDrawArc_t *)
void(* draw_line )(wmfAPI *, wmfDrawLine_t *)
void(* poly_line )(wmfAPI *, wmfPolyLine_t *)
void(* draw_polygon )(wmfAPI *, wmfPolyLine_t *)
void(* draw_polypolygon )(wmfAPI *, wmfPolyPoly_t *)
void(* draw_rectangle )(wmfAPI *, wmfDrawRectangle_t *)
void(* rop_draw )(wmfAPI *, wmfROP_Draw_t *)
void(* bmp_draw )(wmfAPI *, wmfBMP_Draw_t *)
void(* bmp_read )(wmfAPI *, wmfBMP_Read_t *)
void(* bmp_free )(wmfAPI *, wmfBMP *)
void(* draw_text )(wmfAPI *, wmfDrawText_t *)
void(* udata_init )(wmfAPI *, wmfUserData_t *)
void(* udata_copy )(wmfAPI *, wmfUserData_t *)
void(* udata_set )(wmfAPI *, wmfUserData_t *)
void(* udata_free )(wmfAPI *, wmfUserData_t *)
void(* region_frame )(wmfAPI *, wmfPolyRectangle_t *)
void(* region_paint )(wmfAPI *, wmfPolyRectangle_t *)
void(* region_clip )(wmfAPI *, wmfPolyRectangle_t *)

Field Documentation

void(* _wmfFunctionReference::bmp_draw)(wmfAPI*,wmfBMP_Draw_t*)
 

void(* _wmfFunctionReference::bmp_free)(wmfAPI*,wmfBMP*)
 

void(* _wmfFunctionReference::bmp_read)(wmfAPI*,wmfBMP_Read_t*)
 

void(* _wmfFunctionReference::device_begin)(wmfAPI*)
 

void(* _wmfFunctionReference::device_close)(wmfAPI*)
 

void(* _wmfFunctionReference::device_end)(wmfAPI*)
 

void(* _wmfFunctionReference::device_open)(wmfAPI*)
 

void(* _wmfFunctionReference::draw_arc)(wmfAPI*,wmfDrawArc_t*)
 

void(* _wmfFunctionReference::draw_chord)(wmfAPI*,wmfDrawArc_t*)
 

void(* _wmfFunctionReference::draw_ellipse)(wmfAPI*,wmfDrawArc_t*)
 

void(* _wmfFunctionReference::draw_line)(wmfAPI*,wmfDrawLine_t*)
 

void(* _wmfFunctionReference::draw_pie)(wmfAPI*,wmfDrawArc_t*)
 

void(* _wmfFunctionReference::draw_pixel)(wmfAPI*,wmfDrawPixel_t*)
 

void(* _wmfFunctionReference::draw_polygon)(wmfAPI*,wmfPolyLine_t*)
 

void(* _wmfFunctionReference::draw_polypolygon)(wmfAPI*,wmfPolyPoly_t*)
 

void(* _wmfFunctionReference::draw_rectangle)(wmfAPI*,wmfDrawRectangle_t*)
 

void(* _wmfFunctionReference::draw_text)(wmfAPI*,wmfDrawText_t*)
 

void(* _wmfFunctionReference::flood_exterior)(wmfAPI*,wmfFlood_t*)
 

void(* _wmfFunctionReference::flood_interior)(wmfAPI*,wmfFlood_t*)
 

void(* _wmfFunctionReference::poly_line)(wmfAPI*,wmfPolyLine_t*)
 

void(* _wmfFunctionReference::region_clip)(wmfAPI*,wmfPolyRectangle_t*)
 

void(* _wmfFunctionReference::region_frame)(wmfAPI*,wmfPolyRectangle_t*)
 

void(* _wmfFunctionReference::region_paint)(wmfAPI*,wmfPolyRectangle_t*)
 

void(* _wmfFunctionReference::rop_draw)(wmfAPI*,wmfROP_Draw_t*)
 

void(* _wmfFunctionReference::udata_copy)(wmfAPI*,wmfUserData_t*)
 

void(* _wmfFunctionReference::udata_free)(wmfAPI*,wmfUserData_t*)
 

void(* _wmfFunctionReference::udata_init)(wmfAPI*,wmfUserData_t*)
 

void(* _wmfFunctionReference::udata_set)(wmfAPI*,wmfUserData_t*)
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfGS__FontData.html0000644000077100007710000000632007575443122021621 0ustar fjffjf00000000000000 _wmfGS_FontData struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfGS_FontData Struct Reference


Data Fields

unsigned int max
unsigned int len
wmfGS_FontInfoFI

Field Documentation

wmfGS_FontInfo* _wmfGS_FontData::FI
 

unsigned int _wmfGS_FontData::len
 

unsigned int _wmfGS_FontData::max
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfGS__FontInfo.html0000644000077100007710000000474507575443122021654 0ustar fjffjf00000000000000 _wmfGS_FontInfo struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfGS_FontInfo Struct Reference


Data Fields

char * name
char * alias

Field Documentation

char* _wmfGS_FontInfo::alias
 

char* _wmfGS_FontInfo::name
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfHead.html0000644000077100007710000001245407575443122020237 0ustar fjffjf00000000000000 _wmfHead struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfHead Struct Reference


Data Fields

U16 FileType
U16 HeaderSize
U16 Version
U32 FileSize
U16 NumOfObjects
U32 MaxRecordSize
U16 NumOfParams

Field Documentation

U32 _wmfHead::FileSize
 

U16 _wmfHead::FileType
 

U16 _wmfHead::HeaderSize
 

U32 _wmfHead::MaxRecordSize
 

U16 _wmfHead::NumOfObjects
 

U16 _wmfHead::NumOfParams
 

U16 _wmfHead::Version
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfImage.html0000644000077100007710000000732707575443122020423 0ustar fjffjf00000000000000 _wmfImage struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfImage Struct Reference


Data Fields

wmf_image_t type
U16 width
U16 height
void * data

Detailed Description

Structure referencing an image


Field Documentation

void* _wmfImage::data
 

U16 _wmfImage::height
 

wmf_image_t _wmfImage::type
 

U16 _wmfImage::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfIPAFont.html0000644000077100007710000000472507575443122020640 0ustar fjffjf00000000000000 _wmfIPAFont struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfIPAFont Struct Reference


Data Fields

char * ps_name
FT_Face ft_face

Field Documentation

FT_Face _wmfIPAFont::ft_face
 

char* _wmfIPAFont::ps_name
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfMapping.html0000644000077100007710000000601507575443122020765 0ustar fjffjf00000000000000 _wmfMapping struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfMapping Struct Reference


Data Fields

char * name
char * mapping
FT_Encoding encoding

Field Documentation

FT_Encoding _wmfMapping::encoding
 

char* _wmfMapping::mapping
 

char* _wmfMapping::name
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfMetaHeader.html0000644000077100007710000001064207575443122021372 0ustar fjffjf00000000000000 _wmfMetaHeader struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfMetaHeader Struct Reference


Data Fields

wmfHeadwmfheader
wmfPlaceableMetaHeaderpmh
FILE * filein
long pos
int placeable

Field Documentation

FILE* _wmfMetaHeader::filein
 

int _wmfMetaHeader::placeable
 

wmfPlaceableMetaHeader* _wmfMetaHeader::pmh
 

long _wmfMetaHeader::pos
 

wmfHead* _wmfMetaHeader::wmfheader
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/globals.html0000644000077100007710000023450007575443123016543 0ustar fjffjf00000000000000 File Member Index
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

libwmf Globals

_ | a | b | c | d | e | f | h | m | n | o | p | r | s | t | u | w

Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

- _ -

- a -

- b -

- c -

- d -

- e -

- f -

- h -

- m -

- n -

- o -

- p -

- r -

- s -

- t -

- u -

- w -


Generated on Tue Dec 10 19:53:55 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfPen.html0000644000077100007710000000716107575443122020117 0ustar fjffjf00000000000000 _wmfPen struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfPen Struct Reference


Data Fields

U16 lopnStyle
double width
double height
wmfRGB lopnColor

Field Documentation

double _wmfPen::height
 

wmfRGB _wmfPen::lopnColor
 

U16 _wmfPen::lopnStyle
 

double _wmfPen::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfPlaceableMetaHeader.html0000644000077100007710000001537707575443122023175 0ustar fjffjf00000000000000 _wmfPlaceableMetaHeader struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfPlaceableMetaHeader Struct Reference


Data Fields

U32 Key
U16 Handle
S16 Left
S16 Top
S16 Right
S16 Bottom
U16 Inch
U32 Reserved
U16 Checksum

Field Documentation

S16 _wmfPlaceableMetaHeader::Bottom
 

U16 _wmfPlaceableMetaHeader::Checksum
 

U16 _wmfPlaceableMetaHeader::Handle
 

U16 _wmfPlaceableMetaHeader::Inch
 

U32 _wmfPlaceableMetaHeader::Key
 

S16 _wmfPlaceableMetaHeader::Left
 

U32 _wmfPlaceableMetaHeader::Reserved
 

S16 _wmfPlaceableMetaHeader::Right
 

S16 _wmfPlaceableMetaHeader::Top
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfPolyLine__t.html0000644000077100007710000000626307575443122021614 0ustar fjffjf00000000000000 _wmfPolyLine_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfPolyLine_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coordpt
U16 count

Field Documentation

U16 _wmfPolyLine_t::count
 

wmfDC* _wmfPolyLine_t::dc
 

wmfD_Coord* _wmfPolyLine_t::pt
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfPolyPoly__t.html0000644000077100007710000000741307575443122021646 0ustar fjffjf00000000000000 _wmfPolyPoly_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfPolyPoly_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord ** pt
U16 * count
U16 npoly

Field Documentation

U16* _wmfPolyPoly_t::count
 

wmfDC* _wmfPolyPoly_t::dc
 

U16 _wmfPolyPoly_t::npoly
 

wmfD_Coord** _wmfPolyPoly_t::pt
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfPolyRectangle__t.html0000644000077100007710000001221307575443122022621 0ustar fjffjf00000000000000 _wmfPolyRectangle_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfPolyRectangle_t Struct Reference


Data Fields

wmfDCdc
wmfD_CoordTL
wmfD_CoordBR
unsigned int count
float width
float height

Field Documentation

wmfD_Coord* _wmfPolyRectangle_t::BR
 

unsigned int _wmfPolyRectangle_t::count
 

wmfDC* _wmfPolyRectangle_t::dc
 

float _wmfPolyRectangle_t::height
 

wmfD_Coord* _wmfPolyRectangle_t::TL
 

float _wmfPolyRectangle_t::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/canvas_8h.html0000644000077100007710000016312507575443114016776 0ustar fjffjf00000000000000 canvas.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

canvas.h File Reference


Typedefs

typedef void * wmfCanvas
typedef enum _wmf_canvas_arc_t wmf_canvas_arc_t

Enumerations

enum  _wmf_canvas_arc_t {
  wmf_CA_open = 0,
  wmf_CA_chord,
  wmf_CA_pie
}

Functions

wmfCanvaswmf_canvas (wmfAPI *, unsigned short, unsigned short, unsigned short)
unsigned char * wmf_canvas_done (wmfAPI *, wmfCanvas *, unsigned char **, unsigned long *)
int wmf_canvas_set_pen (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, unsigned short, unsigned short, wmfRGB)
int wmf_canvas_set_brush (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, wmfRGB)
int wmf_canvas_set_font (wmfAPI *, wmfCanvas *, const char *, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short)
int wmf_canvas_set_polyfill (wmfAPI *, wmfCanvas *, unsigned short)
int wmf_canvas_set_background (wmfAPI *, wmfCanvas *, unsigned short)
int wmf_canvas_set_bgcolor (wmfAPI *, wmfCanvas *, wmfRGB)
int wmf_canvas_set_textcolor (wmfAPI *, wmfCanvas *, wmfRGB)
int wmf_canvas_line (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, unsigned short, unsigned short)
int wmf_canvas_roundrect (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short)
int wmf_canvas_rect (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, unsigned short, unsigned short)
int wmf_canvas_ellipse (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, unsigned short, unsigned short)
int wmf_canvas_arc (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, wmf_canvas_arc_t)
int wmf_canvas_polyline (wmfAPI *, wmfCanvas *, unsigned short *, unsigned short *, unsigned short)
int wmf_canvas_polygon (wmfAPI *, wmfCanvas *, unsigned short *, unsigned short *, unsigned short)
int wmf_canvas_polygons (wmfAPI *, wmfCanvas *, unsigned short, unsigned short **, unsigned short **, unsigned short *)
int wmf_canvas_text (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, const char *)
int wmf_canvas_bitmap (wmfAPI *, wmfCanvas *, unsigned short, unsigned short, unsigned short, unsigned short, const unsigned char *, unsigned long)

Typedef Documentation

typedef enum _wmf_canvas_arc_t wmf_canvas_arc_t
 

wmf_canvas_arc_t is the (enumeration) type used to distinguish arc type.

typedef void* wmfCanvas
 


Enumeration Type Documentation

enum _wmf_canvas_arc_t
 

wmf_canvas_arc_t is the (enumeration) type used to distinguish arc type.

Enumeration values:
wmf_CA_open  drawn arc segment (no fill)
wmf_CA_chord  start & end of arc joined together
wmf_CA_pie  start & end of arc joined to centre


Function Documentation

wmfCanvas* wmf_canvas wmfAPI   API,
unsigned short    width,
unsigned short    height,
unsigned short    dpi
 

Get a handle for creating a new metafile.

Parameters:
API  the API handle
width  width in 'dots' (a.k.a. 'twips'?)
height  height in 'dots' (a.k.a. 'twips'?)
dpi  dots per inch: one of 1440, 2880, 720, or 360
In case you want to use simple drawing routines to create your own metafile; all drawing commands expect a wmfCanvas handle as well as the API handle.

Returns:
Returns 0 on failure.

int wmf_canvas_arc wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom,
unsigned short    x1,
unsigned short    y1,
unsigned short    x2,
unsigned short    y2,
wmf_canvas_arc_t    type
 

Draw an arc, open or fill as chord or pie.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
x1  x-coordinate of start of arc
y1  y-coordinate of start of arc
x2  x-coordinate of end of arc
y2  y-coordinate of end of arc
type  arc type (open, chord or pie)
Draw an arc in the given bounding box, from (x1,y1) to (x2,y2). Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_bitmap wmfAPI   API,
wmfCanvas   canvas,
unsigned short    x,
unsigned short    y,
unsigned short    width,
unsigned short    height,
const unsigned char *    buffer,
unsigned long    length
 

Place a bitmap.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  x-coordinate of bitmap
y  y-coordinate of bitmap
width  (scaled) width of bitmap
height  (scaled) height of bitmap
buffer  buffer containing bitmap
length  length of buffer
Place a bitmap.

Returns:
Returns 0 on success.

unsigned char* wmf_canvas_done wmfAPI   API,
wmfCanvas   canvas,
unsigned char **    buffer,
unsigned long *    length
 

Last command when creating a new metafile; returns the metafile you have drawn.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
buffer  metafile buffer return
length  metafile length return
Cleans up memory etc. associated with the canvas process, except of course for the new metafile itself which gets returned.

Returns:
Returns 0 on failure, *buffer on success

int wmf_canvas_ellipse wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom
 

Draw an ellipse.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
Draw an ellipse in the given bounding box. Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_line wmfAPI   API,
wmfCanvas   canvas,
unsigned short    x1,
unsigned short    y1,
unsigned short    x2,
unsigned short    y2
 

Draw a line.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x1  x-coordinate of start point
y1  y-coordinate of start point
x2  x-coordinate of end point
y2  y-coordinate of end point
Draw line from (x1,y1) to (x2,y2).

Returns:
Returns 0 on success.

int wmf_canvas_polygon wmfAPI   API,
wmfCanvas   canvas,
unsigned short *    x,
unsigned short *    y,
unsigned short    N
 

Draw a polygon.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  array of N x-coordinates
y  array of N y-coordinates
N  number of points of polygon
Draw a polygon.

Returns:
Returns 0 on success.

int wmf_canvas_polygons wmfAPI   API,
wmfCanvas   canvas,
unsigned short    count,
unsigned short **    x,
unsigned short **    y,
unsigned short *    N
 

Draw a set of polygons.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
count  number of polygons [i = 0..count-1]
x  x[i] is array of N x-coordinates in ith polygon
y  y[i] is array of N y-coordinates in ith polygon
N  N[i] is number of points of ith polygon
Draw a set of polygons.

Returns:
Returns 0 on success.

int wmf_canvas_polyline wmfAPI   API,
wmfCanvas   canvas,
unsigned short *    x,
unsigned short *    y,
unsigned short    N
 

Draw a line connecting a sequence of points.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  array of N x-coordinates
y  array of N y-coordinates
N  number of points on line
Draw a line connecting a sequence of points.

Returns:
Returns 0 on success.

int wmf_canvas_rect wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom
 

Draw a rectangle.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
Draw a rectangle. Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_roundrect wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom,
unsigned short    rx,
unsigned short    ry
 

Draw a rounded rectangle.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
rx  x-axis of corner ellipse
ry  y-axis of corner ellipse
Draw a rounded rectangle. Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_set_background wmfAPI   API,
wmfCanvas   canvas,
unsigned short    mode
 

Set background mode.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
mode  one of TRANSPARENT or OPAQUE
Set background mode.

Returns:
Returns 0 on success.

int wmf_canvas_set_bgcolor wmfAPI   API,
wmfCanvas   canvas,
wmfRGB    color
 

Set background color.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
color  background color
Set background color.

Returns:
Returns 0 on success.

int wmf_canvas_set_brush wmfAPI   API,
wmfCanvas   canvas,
unsigned short    style,
unsigned short    hatch,
wmfRGB    color
 

Change current brush style.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
style  one of BS_SOLID, BS_NULL, or BS_HATCHED
hatch  one of HS_HORIZONTAL, HS_VERTICAL, HS_FDIAGONAL, HS_BDIAGONAL, HS_CROSS or HS_DIAGCROSS
color  stroke color
Brush settings to be used with next drawing command.

Returns:
Returns 0 on success.

int wmf_canvas_set_font wmfAPI   API,
wmfCanvas   canvas,
const char *    name,
unsigned short    size,
unsigned short    orient,
unsigned short    weight,
unsigned short    italic,
unsigned short    strike,
unsigned short    uscore,
unsigned short    encode,
unsigned short    pitch
 

Change current font.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
name  font name
size  font height (in twips)
orient  text rotation in tenths of degrees
weight  400 for normal text, 700 for bold
italic  0 for normal text, 1 for oblique/italic
strike  0 for normal text, 1 for strike-through
uscore  0 for normal text, 1 for underscore (I think; and 2 for double uscore ??)
encode  encoding; 0 for most fonts, 2 for symbol fonts; presumably others...
pitch  italic angle; usually 0 (webdings), 16 (times), 32 (arial) or 48 (courier)
Font settings to be used with next drawing command.

Returns:
Returns 0 on success.

int wmf_canvas_set_pen wmfAPI   API,
wmfCanvas   canvas,
unsigned short    line,
unsigned short    endcap,
unsigned short    join,
unsigned short    width,
wmfRGB    color
 

Change current pen style.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
line  one of PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT, PS_NULL, PS_INSIDEFRAME, PS_USERSTYLE, or PS_ALTERNATE
endcap  one of PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE, or PS_ENDCAP_FLAT
join  one of PS_JOIN_ROUND, PS_JOIN_BEVEL, or PS_JOIN_MITER
width  stroke width
color  stroke color
Pen settings to be used with next drawing command.

Returns:
Returns 0 on success.

int wmf_canvas_set_polyfill wmfAPI   API,
wmfCanvas   canvas,
unsigned short    mode
 

Set polygon fill mode.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
mode  one of ALTERNATE or WINDING
Set polygon fill mode.

Returns:
Returns 0 on success.

int wmf_canvas_set_textcolor wmfAPI   API,
wmfCanvas   canvas,
wmfRGB    color
 

Set text color.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
color  text color
Set text color.

Returns:
Returns 0 on success.

int wmf_canvas_text wmfAPI   API,
wmfCanvas   canvas,
unsigned short    x,
unsigned short    y,
const char *    str
 

Draw text.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  x-coordinate of string
y  y-coordinate of string
str  the text string to be drawn
Draw text.

Returns:
Returns 0 on success.


Generated on Tue Dec 10 19:53:48 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfRGB.html0000644000077100007710000000571707575443122020014 0ustar fjffjf00000000000000 _wmfRGB struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfRGB Struct Reference


Data Fields

unsigned char r
unsigned char g
unsigned char b

Field Documentation

unsigned char _wmfRGB::b
 

unsigned char _wmfRGB::g
 

unsigned char _wmfRGB::r
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfROP__Draw__t.html0000644000077100007710000001206707575443122021634 0ustar fjffjf00000000000000 _wmfROP_Draw_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfROP_Draw_t Struct Reference


Data Fields

wmfDCdc
wmfD_Coord TL
wmfD_Coord BR
U32 ROP
double pixel_width
double pixel_height

Field Documentation

wmfD_Coord _wmfROP_Draw_t::BR
 

wmfDC* _wmfROP_Draw_t::dc
 

double _wmfROP_Draw_t::pixel_height
 

double _wmfROP_Draw_t::pixel_width
 

U32 _wmfROP_Draw_t::ROP
 

wmfD_Coord _wmfROP_Draw_t::TL
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfStream.html0000644000077100007710000001007207575443122020623 0ustar fjffjf00000000000000 _wmfStream struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfStream Struct Reference


Data Fields

void * context
wmfSPutS sputs
wmfReset reset

Detailed Description

Structure describing user-definable character-based output stream.

wmf_stream_create() and wmf_ztream_create() both return pointers to wmfStream objects, but an application can create its own implementation if preferred.

typedef int (*wmfSPutS) (char* str,void* context);
typedef int (*wmfReset) (void* context);

wmfSPutS: writes string str; returns EOF on error, else 0.

wmfReset: resets stream to start; returns non-zero on failure.

context is a handle for user data


Field Documentation

void* _wmfStream::context
 

wmfReset _wmfStream::reset
 

wmfSPutS _wmfStream::sputs
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfUserData__t.html0000644000077100007710000000500407575443122021561 0ustar fjffjf00000000000000 _wmfUserData_t struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfUserData_t Struct Reference


Data Fields

wmfDCdc
void * data

Field Documentation

void* _wmfUserData_t::data
 

wmfDC* _wmfUserData_t::dc
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfXML__FontData.html0000644000077100007710000000633507575443122021756 0ustar fjffjf00000000000000 _wmfXML_FontData struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfXML_FontData Struct Reference


Data Fields

unsigned int max
unsigned int len
wmfXML_FontInfoFI

Field Documentation

wmfXML_FontInfo* _wmfXML_FontData::FI
 

unsigned int _wmfXML_FontData::len
 

unsigned int _wmfXML_FontData::max
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfXML__FontInfo.html0000644000077100007710000001525407575443122022000 0ustar fjffjf00000000000000 _wmfXML_FontInfo struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfXML_FontInfo Struct Reference


Data Fields

char * format
char * metrics
char * glyphs
char * name
char * fullname
char * familyname
char * weight
char * version
char * alias

Field Documentation

char* _wmfXML_FontInfo::alias
 

char* _wmfXML_FontInfo::familyname
 

char* _wmfXML_FontInfo::format
 

char* _wmfXML_FontInfo::fullname
 

char* _wmfXML_FontInfo::glyphs
 

char* _wmfXML_FontInfo::metrics
 

char* _wmfXML_FontInfo::name
 

char* _wmfXML_FontInfo::version
 

char* _wmfXML_FontInfo::weight
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfXML__InputData.html0000644000077100007710000001675207575443122022153 0ustar fjffjf00000000000000 _wmfXML_InputData struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfXML_InputData Struct Reference


Data Fields

wmfAPIAPI
char * cd_buffer
char * cd_bufptr
unsigned long cd_length
unsigned long cd_max
unsigned char * mem_buffer
unsigned char * mem_bufptr
unsigned long mem_length
unsigned long mem_max
int wmfxml

Field Documentation

wmfAPI* _wmfXML_InputData::API
 

char* _wmfXML_InputData::cd_buffer
 

char* _wmfXML_InputData::cd_bufptr
 

unsigned long _wmfXML_InputData::cd_length
 

unsigned long _wmfXML_InputData::cd_max
 

unsigned char* _wmfXML_InputData::mem_buffer
 

unsigned char* _wmfXML_InputData::mem_bufptr
 

unsigned long _wmfXML_InputData::mem_length
 

unsigned long _wmfXML_InputData::mem_max
 

int _wmfXML_InputData::wmfxml
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfWriteFileInfo.html0000644000077100007710000000505507575443122022103 0ustar fjffjf00000000000000 _wmfWriteFileInfo struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfWriteFileInfo Struct Reference


Data Fields

FILE * file
wmf_write_t type

Field Documentation

FILE* _wmfWriteFileInfo::file
 

wmf_write_t _wmfWriteFileInfo::type
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfAttributeStore.html0000644000077100007710000000647707575443121022365 0ustar fjffjf00000000000000 _wmfAttributeStore struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfAttributeStore Struct Reference


Data Fields

wmfAttributesattrlist
unsigned long count
unsigned long max

Detailed Description

Structure containing list of lists of XML attributes


Field Documentation

wmfAttributes* _wmfAttributeStore::attrlist
 

unsigned long _wmfAttributeStore::count
 

unsigned long _wmfAttributeStore::max
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfAttributes.html0000644000077100007710000001305207575443121021516 0ustar fjffjf00000000000000 _wmfAttributes struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfAttributes Struct Reference


Data Fields

char * name
char ** atts
unsigned long count
unsigned long max
unsigned char * buffer
unsigned long length
unsigned long offset

Detailed Description

Structure containing list of XML attributes


Field Documentation

char** _wmfAttributes::atts
 

unsigned char* _wmfAttributes::buffer
 

unsigned long _wmfAttributes::count
 

unsigned long _wmfAttributes::length
 

unsigned long _wmfAttributes::max
 

char* _wmfAttributes::name
 

unsigned long _wmfAttributes::offset
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/recorder_8c.html0000644000077100007710000015606407575443117017332 0ustar fjffjf00000000000000 recorder.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

recorder.c File Reference


Functions

wmfCanvaswmf_canvas (wmfAPI *API, unsigned short width, unsigned short height, unsigned short dpi)
unsigned char * wmf_canvas_done (wmfAPI *API, wmfCanvas *canvas, unsigned char **buffer, unsigned long *length)
int wmf_canvas_set_pen (wmfAPI *API, wmfCanvas *canvas, unsigned short line, unsigned short endcap, unsigned short join, unsigned short width, wmfRGB color)
int wmf_canvas_set_brush (wmfAPI *API, wmfCanvas *canvas, unsigned short style, unsigned short hatch, wmfRGB color)
int wmf_canvas_set_font (wmfAPI *API, wmfCanvas *canvas, const char *name, unsigned short size, unsigned short orient, unsigned short weight, unsigned short italic, unsigned short strike, unsigned short uscore, unsigned short encode, unsigned short pitch)
int wmf_canvas_set_polyfill (wmfAPI *API, wmfCanvas *canvas, unsigned short mode)
int wmf_canvas_set_background (wmfAPI *API, wmfCanvas *canvas, unsigned short mode)
int wmf_canvas_set_bgcolor (wmfAPI *API, wmfCanvas *canvas, wmfRGB color)
int wmf_canvas_set_textcolor (wmfAPI *API, wmfCanvas *canvas, wmfRGB color)
int wmf_canvas_line (wmfAPI *API, wmfCanvas *canvas, unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2)
int wmf_canvas_roundrect (wmfAPI *API, wmfCanvas *canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom, unsigned short rx, unsigned short ry)
int wmf_canvas_rect (wmfAPI *API, wmfCanvas *canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom)
int wmf_canvas_ellipse (wmfAPI *API, wmfCanvas *canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom)
int wmf_canvas_arc (wmfAPI *API, wmfCanvas *canvas, unsigned short left, unsigned short top, unsigned short right, unsigned short bottom, unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, wmf_canvas_arc_t type)
int wmf_canvas_polyline (wmfAPI *API, wmfCanvas *canvas, unsigned short *x, unsigned short *y, unsigned short N)
int wmf_canvas_polygon (wmfAPI *API, wmfCanvas *canvas, unsigned short *x, unsigned short *y, unsigned short N)
int wmf_canvas_polygons (wmfAPI *API, wmfCanvas *canvas, unsigned short count, unsigned short **x, unsigned short **y, unsigned short *N)
int wmf_canvas_text (wmfAPI *API, wmfCanvas *canvas, unsigned short x, unsigned short y, const char *str)
int wmf_canvas_bitmap (wmfAPI *API, wmfCanvas *canvas, unsigned short x, unsigned short y, unsigned short width, unsigned short height, const unsigned char *buffer, unsigned long length)

Function Documentation

wmfCanvas* wmf_canvas wmfAPI   API,
unsigned short    width,
unsigned short    height,
unsigned short    dpi
 

Get a handle for creating a new metafile.

Parameters:
API  the API handle
width  width in 'dots' (a.k.a. 'twips'?)
height  height in 'dots' (a.k.a. 'twips'?)
dpi  dots per inch: one of 1440, 2880, 720, or 360
In case you want to use simple drawing routines to create your own metafile; all drawing commands expect a wmfCanvas handle as well as the API handle.

Returns:
Returns 0 on failure.

int wmf_canvas_arc wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom,
unsigned short    x1,
unsigned short    y1,
unsigned short    x2,
unsigned short    y2,
wmf_canvas_arc_t    type
 

Draw an arc, open or fill as chord or pie.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
x1  x-coordinate of start of arc
y1  y-coordinate of start of arc
x2  x-coordinate of end of arc
y2  y-coordinate of end of arc
type  arc type (open, chord or pie)
Draw an arc in the given bounding box, from (x1,y1) to (x2,y2). Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_bitmap wmfAPI   API,
wmfCanvas   canvas,
unsigned short    x,
unsigned short    y,
unsigned short    width,
unsigned short    height,
const unsigned char *    buffer,
unsigned long    length
 

Place a bitmap.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  x-coordinate of bitmap
y  y-coordinate of bitmap
width  (scaled) width of bitmap
height  (scaled) height of bitmap
buffer  buffer containing bitmap
length  length of buffer
Place a bitmap.

Returns:
Returns 0 on success.

unsigned char* wmf_canvas_done wmfAPI   API,
wmfCanvas   canvas,
unsigned char **    buffer,
unsigned long *    length
 

Last command when creating a new metafile; returns the metafile you have drawn.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
buffer  metafile buffer return
length  metafile length return
Cleans up memory etc. associated with the canvas process, except of course for the new metafile itself which gets returned.

Returns:
Returns 0 on failure, *buffer on success

int wmf_canvas_ellipse wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom
 

Draw an ellipse.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
Draw an ellipse in the given bounding box. Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_line wmfAPI   API,
wmfCanvas   canvas,
unsigned short    x1,
unsigned short    y1,
unsigned short    x2,
unsigned short    y2
 

Draw a line.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x1  x-coordinate of start point
y1  y-coordinate of start point
x2  x-coordinate of end point
y2  y-coordinate of end point
Draw line from (x1,y1) to (x2,y2).

Returns:
Returns 0 on success.

int wmf_canvas_polygon wmfAPI   API,
wmfCanvas   canvas,
unsigned short *    x,
unsigned short *    y,
unsigned short    N
 

Draw a polygon.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  array of N x-coordinates
y  array of N y-coordinates
N  number of points of polygon
Draw a polygon.

Returns:
Returns 0 on success.

int wmf_canvas_polygons wmfAPI   API,
wmfCanvas   canvas,
unsigned short    count,
unsigned short **    x,
unsigned short **    y,
unsigned short *    N
 

Draw a set of polygons.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
count  number of polygons [i = 0..count-1]
x  x[i] is array of N x-coordinates in ith polygon
y  y[i] is array of N y-coordinates in ith polygon
N  N[i] is number of points of ith polygon
Draw a set of polygons.

Returns:
Returns 0 on success.

int wmf_canvas_polyline wmfAPI   API,
wmfCanvas   canvas,
unsigned short *    x,
unsigned short *    y,
unsigned short    N
 

Draw a line connecting a sequence of points.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  array of N x-coordinates
y  array of N y-coordinates
N  number of points on line
Draw a line connecting a sequence of points.

Returns:
Returns 0 on success.

int wmf_canvas_rect wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom
 

Draw a rectangle.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
Draw a rectangle. Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_roundrect wmfAPI   API,
wmfCanvas   canvas,
unsigned short    left,
unsigned short    top,
unsigned short    right,
unsigned short    bottom,
unsigned short    rx,
unsigned short    ry
 

Draw a rounded rectangle.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
left  lower x-coordinate
top  lower y-coordinate
right  upper x-coordinate
bottom  upper y-coordinate
rx  x-axis of corner ellipse
ry  y-axis of corner ellipse
Draw a rounded rectangle. Coordinate origin is at the top-left, y increasing down.

Returns:
Returns 0 on success.

int wmf_canvas_set_background wmfAPI   API,
wmfCanvas   canvas,
unsigned short    mode
 

Set background mode.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
mode  one of TRANSPARENT or OPAQUE
Set background mode.

Returns:
Returns 0 on success.

int wmf_canvas_set_bgcolor wmfAPI   API,
wmfCanvas   canvas,
wmfRGB    color
 

Set background color.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
color  background color
Set background color.

Returns:
Returns 0 on success.

int wmf_canvas_set_brush wmfAPI   API,
wmfCanvas   canvas,
unsigned short    style,
unsigned short    hatch,
wmfRGB    color
 

Change current brush style.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
style  one of BS_SOLID, BS_NULL, or BS_HATCHED
hatch  one of HS_HORIZONTAL, HS_VERTICAL, HS_FDIAGONAL, HS_BDIAGONAL, HS_CROSS or HS_DIAGCROSS
color  stroke color
Brush settings to be used with next drawing command.

Returns:
Returns 0 on success.

int wmf_canvas_set_font wmfAPI   API,
wmfCanvas   canvas,
const char *    name,
unsigned short    size,
unsigned short    orient,
unsigned short    weight,
unsigned short    italic,
unsigned short    strike,
unsigned short    uscore,
unsigned short    encode,
unsigned short    pitch
 

Change current font.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
name  font name
size  font height (in twips)
orient  text rotation in tenths of degrees
weight  400 for normal text, 700 for bold
italic  0 for normal text, 1 for oblique/italic
strike  0 for normal text, 1 for strike-through
uscore  0 for normal text, 1 for underscore (I think; and 2 for double uscore ??)
encode  encoding; 0 for most fonts, 2 for symbol fonts; presumably others...
pitch  italic angle; usually 0 (webdings), 16 (times), 32 (arial) or 48 (courier)
Font settings to be used with next drawing command.

Returns:
Returns 0 on success.

int wmf_canvas_set_pen wmfAPI   API,
wmfCanvas   canvas,
unsigned short    line,
unsigned short    endcap,
unsigned short    join,
unsigned short    width,
wmfRGB    color
 

Change current pen style.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
line  one of PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT, PS_NULL, PS_INSIDEFRAME, PS_USERSTYLE, or PS_ALTERNATE
endcap  one of PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE, or PS_ENDCAP_FLAT
join  one of PS_JOIN_ROUND, PS_JOIN_BEVEL, or PS_JOIN_MITER
width  stroke width
color  stroke color
Pen settings to be used with next drawing command.

Returns:
Returns 0 on success.

int wmf_canvas_set_polyfill wmfAPI   API,
wmfCanvas   canvas,
unsigned short    mode
 

Set polygon fill mode.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
mode  one of ALTERNATE or WINDING
Set polygon fill mode.

Returns:
Returns 0 on success.

int wmf_canvas_set_textcolor wmfAPI   API,
wmfCanvas   canvas,
wmfRGB    color
 

Set text color.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
color  text color
Set text color.

Returns:
Returns 0 on success.

int wmf_canvas_text wmfAPI   API,
wmfCanvas   canvas,
unsigned short    x,
unsigned short    y,
const char *    str
 

Draw text.

Parameters:
API  the API handle
canvas  the Canvas handle for the metafile you are drawing to
x  x-coordinate of string
y  y-coordinate of string
str  the text string to be drawn
Draw text.

Returns:
Returns 0 on success.


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/recorder_8h.html0000644000077100007710000001433707575443117017333 0ustar fjffjf00000000000000 recorder.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

recorder.h File Reference


Data Structures

struct  _wmfCanvasBrush
struct  _wmfCanvasFont
struct  _wmfCanvasPen
struct  _wmfConstruct
struct  _wmfRecordBox

Defines

#define CanvasFontBufferSize   64

Typedefs

typedef _wmfCanvasPen wmfCanvasPen
typedef _wmfCanvasBrush wmfCanvasBrush
typedef _wmfCanvasFont wmfCanvasFont
typedef _wmfConstruct wmfConstruct
typedef _wmfRecordBox wmfRecordBox

Define Documentation

#define CanvasFontBufferSize   64
 


Typedef Documentation

typedef struct _wmfCanvasBrush wmfCanvasBrush
 

typedef struct _wmfCanvasFont wmfCanvasFont
 

typedef struct _wmfCanvasPen wmfCanvasPen
 

typedef struct _wmfConstruct wmfConstruct
 

typedef struct _wmfRecordBox wmfRecordBox
 


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/metadefs_8h.html0000644000077100007710000015335707575443117017324 0ustar fjffjf00000000000000 metadefs.h File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

metadefs.h File Reference


Defines

#define MM_TEXT   1
#define MM_LOMETRIC   2
#define MM_HIMETRIC   3
#define MM_LOENGLISH   4
#define MM_HIENGLISH   5
#define MM_TWIPS   6
#define MM_ISOTROPIC   7
#define MM_ANISOTROPIC   8
#define MM_DPI   9
#define META_SAVEDC   0x001E
#define META_REALIZEPALETTE   0x0035
#define META_SETPALENTRIES   0x0037
#define META_CREATEPALETTE   0x00f7
#define META_SETBKMODE   0x0102
#define META_SETMAPMODE   0x0103
#define META_SETROP2   0x0104
#define META_SETPOLYFILLMODE   0x0106
#define META_SETSTRETCHBLTMODE   0x0107
#define META_SETTEXTCHAREXTRA   0x0108
#define META_RESTOREDC   0x0127
#define META_INVERTREGION   0x012A
#define META_PAINTREGION   0x012B
#define META_SELECTCLIPREGION   0x012C
#define META_SELECTOBJECT   0x012D
#define META_SETTEXTALIGN   0x012E
#define META_DIBCREATEPATTERNBRUSH   0x0142
#define META_DELETEOBJECT   0x01f0
#define META_SETBKCOLOR   0x0201
#define META_SETTEXTCOLOR   0x0209
#define META_SETTEXTJUSTIFICATION   0x020A
#define META_SETWINDOWORG   0x020B
#define META_SETWINDOWEXT   0x020C
#define META_SETVIEWPORTORG   0x020D
#define META_SETVIEWPORTEXT   0x020E
#define META_OFFSETWINDOWORG   0x020F
#define META_OFFSETVIEWPORTORG   0x0211
#define META_LINETO   0x0213
#define META_MOVETO   0x0214
#define META_OFFSETCLIPRGN   0x0220
#define META_FILLREGION   0x0228
#define META_SETMAPPERFLAGS   0x0231
#define META_SELECTPALETTE   0x0234
#define META_CREATEFONTINDIRECT   0x02FB
#define META_CREATEPENINDIRECT   0x02FA
#define META_CREATEBRUSHINDIRECT   0x02FC
#define META_POLYGON   0x0324
#define META_POLYLINE   0x0325
#define META_SCALEWINDOWEXT   0x0410
#define META_SCALEVIEWPORTEXT   0x0412
#define META_EXCLUDECLIPRECT   0x0415
#define META_INTERSECTCLIPRECT   0x0416
#define META_ELLIPSE   0x0418
#define META_FLOODFILL   0x0419
#define META_RECTANGLE   0x041B
#define META_SETPIXEL   0x041F
#define META_FRAMEREGION   0x0429
#define META_TEXTOUT   0x0521
#define META_POLYPOLYGON   0x0538
#define META_EXTFLOODFILL   0x0548
#define META_ROUNDRECT   0x061C
#define META_PATBLT   0x061D
#define META_ESCAPE   0x0626
#define META_CREATEREGION   0x06FF
#define META_ARC   0x0817
#define META_PIE   0x081A
#define META_CHORD   0x0830
#define META_DIBBITBLT   0x0940
#define META_EXTTEXTOUT   0x0a32
#define META_DIBSTRETCHBLT   0x0b41
#define META_SETDIBTODEV   0x0d33
#define META_STRETCHDIB   0x0f43
#define ERROR   0
#define NULLREGION   1
#define SIMPLEREGION   2
#define COMPLEXREGION   3
#define RGN_AND   1
#define RGN_OR   2
#define RGN_XOR   3
#define RGN_DIFF   4
#define RGN_COPY   5
#define CLIP_INTERSECT   0x0001
#define CLIP_EXCLUDE   0x0002
#define CLIP_KEEPRGN   0x0004

Define Documentation

#define CLIP_EXCLUDE   0x0002
 

#define CLIP_INTERSECT   0x0001
 

#define CLIP_KEEPRGN   0x0004
 

#define COMPLEXREGION   3
 

#define ERROR   0
 

#define META_ARC   0x0817
 

#define META_CHORD   0x0830
 

#define META_CREATEBRUSHINDIRECT   0x02FC
 

#define META_CREATEFONTINDIRECT   0x02FB
 

#define META_CREATEPALETTE   0x00f7
 

#define META_CREATEPENINDIRECT   0x02FA
 

#define META_CREATEREGION   0x06FF
 

#define META_DELETEOBJECT   0x01f0
 

#define META_DIBBITBLT   0x0940
 

#define META_DIBCREATEPATTERNBRUSH   0x0142
 

#define META_DIBSTRETCHBLT   0x0b41
 

#define META_ELLIPSE   0x0418
 

#define META_ESCAPE   0x0626
 

#define META_EXCLUDECLIPRECT   0x0415
 

#define META_EXTFLOODFILL   0x0548
 

#define META_EXTTEXTOUT   0x0a32
 

#define META_FILLREGION   0x0228
 

#define META_FLOODFILL   0x0419
 

#define META_FRAMEREGION   0x0429
 

#define META_INTERSECTCLIPRECT   0x0416
 

#define META_INVERTREGION   0x012A
 

#define META_LINETO   0x0213
 

#define META_MOVETO   0x0214
 

#define META_OFFSETCLIPRGN   0x0220
 

#define META_OFFSETVIEWPORTORG   0x0211
 

#define META_OFFSETWINDOWORG   0x020F
 

#define META_PAINTREGION   0x012B
 

#define META_PATBLT   0x061D
 

#define META_PIE   0x081A
 

#define META_POLYGON   0x0324
 

#define META_POLYLINE   0x0325
 

#define META_POLYPOLYGON   0x0538
 

#define META_REALIZEPALETTE   0x0035
 

#define META_RECTANGLE   0x041B
 

#define META_RESTOREDC   0x0127
 

#define META_ROUNDRECT   0x061C
 

#define META_SAVEDC   0x001E
 

#define META_SCALEVIEWPORTEXT   0x0412
 

#define META_SCALEWINDOWEXT   0x0410
 

#define META_SELECTCLIPREGION   0x012C
 

#define META_SELECTOBJECT   0x012D
 

#define META_SELECTPALETTE   0x0234
 

#define META_SETBKCOLOR   0x0201
 

#define META_SETBKMODE   0x0102
 

#define META_SETDIBTODEV   0x0d33
 

#define META_SETMAPMODE   0x0103
 

#define META_SETMAPPERFLAGS   0x0231
 

#define META_SETPALENTRIES   0x0037
 

#define META_SETPIXEL   0x041F
 

#define META_SETPOLYFILLMODE   0x0106
 

#define META_SETROP2   0x0104
 

#define META_SETSTRETCHBLTMODE   0x0107
 

#define META_SETTEXTALIGN   0x012E
 

#define META_SETTEXTCHAREXTRA   0x0108
 

#define META_SETTEXTCOLOR   0x0209
 

#define META_SETTEXTJUSTIFICATION   0x020A
 

#define META_SETVIEWPORTEXT   0x020E
 

#define META_SETVIEWPORTORG   0x020D
 

#define META_SETWINDOWEXT   0x020C
 

#define META_SETWINDOWORG   0x020B
 

#define META_STRETCHDIB   0x0f43
 

#define META_TEXTOUT   0x0521
 

#define MM_ANISOTROPIC   8
 

#define MM_DPI   9
 

#define MM_HIENGLISH   5
 

#define MM_HIMETRIC   3
 

#define MM_ISOTROPIC   7
 

#define MM_LOENGLISH   4
 

#define MM_LOMETRIC   2
 

#define MM_TEXT   1
 

#define MM_TWIPS   6
 

#define NULLREGION   1
 

#define RGN_AND   1
 

#define RGN_COPY   5
 

#define RGN_DIFF   4
 

#define RGN_OR   2
 

#define RGN_XOR   3
 

#define SIMPLEREGION   2
 


Generated on Tue Dec 10 19:53:51 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfCanvasBrush.html0000644000077100007710000000623307575443121021612 0ustar fjffjf00000000000000 _wmfCanvasBrush struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfCanvasBrush Struct Reference


Data Fields

unsigned short style
unsigned short hatch
wmfRGB color

Field Documentation

wmfRGB _wmfCanvasBrush::color
 

unsigned short _wmfCanvasBrush::hatch
 

unsigned short _wmfCanvasBrush::style
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfCanvasPen.html0000644000077100007710000000620507575443121021250 0ustar fjffjf00000000000000 _wmfCanvasPen struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfCanvasPen Struct Reference


Data Fields

unsigned short style
unsigned short width
wmfRGB color

Field Documentation

wmfRGB _wmfCanvasPen::color
 

unsigned short _wmfCanvasPen::style
 

unsigned short _wmfCanvasPen::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfCanvasFont.html0000644000077100007710000002345307575443121021440 0ustar fjffjf00000000000000 _wmfCanvasFont struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfCanvasFont Struct Reference


Data Fields

char name [CanvasFontBufferSize]
unsigned short height
unsigned short width
unsigned short escapement
unsigned short orientation
unsigned short weight
unsigned short italic
unsigned short underline
unsigned short strikeout
unsigned short charset
unsigned short out
unsigned short clip
unsigned short quality
unsigned short pitch

Field Documentation

unsigned short _wmfCanvasFont::charset
 

unsigned short _wmfCanvasFont::clip
 

unsigned short _wmfCanvasFont::escapement
 

unsigned short _wmfCanvasFont::height
 

unsigned short _wmfCanvasFont::italic
 

char _wmfCanvasFont::name[CanvasFontBufferSize]
 

unsigned short _wmfCanvasFont::orientation
 

unsigned short _wmfCanvasFont::out
 

unsigned short _wmfCanvasFont::pitch
 

unsigned short _wmfCanvasFont::quality
 

unsigned short _wmfCanvasFont::strikeout
 

unsigned short _wmfCanvasFont::underline
 

unsigned short _wmfCanvasFont::weight
 

unsigned short _wmfCanvasFont::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfConstruct.html0000644000077100007710000003515707575443121021366 0ustar fjffjf00000000000000 _wmfConstruct struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfConstruct Struct Reference


Data Fields

unsigned char * buffer
unsigned long length
unsigned long max
unsigned long * rec_offset
unsigned long rec_count
unsigned long rec_max
unsigned short NoObjects
unsigned long MaxRecord
unsigned short width
unsigned short height
unsigned short dpi
wmfCanvasPen pen
wmfCanvasBrush brush
wmfCanvasFont font
wmfCanvasPen new_pen
wmfCanvasBrush new_brush
wmfCanvasFont new_font
unsigned short polyfill
unsigned short background
wmfRGB bgcolor
wmfRGB textcolor

Field Documentation

unsigned short _wmfConstruct::background
 

wmfRGB _wmfConstruct::bgcolor
 

wmfCanvasBrush _wmfConstruct::brush
 

unsigned char* _wmfConstruct::buffer
 

unsigned short _wmfConstruct::dpi
 

wmfCanvasFont _wmfConstruct::font
 

unsigned short _wmfConstruct::height
 

unsigned long _wmfConstruct::length
 

unsigned long _wmfConstruct::max
 

unsigned long _wmfConstruct::MaxRecord
 

wmfCanvasBrush _wmfConstruct::new_brush
 

wmfCanvasFont _wmfConstruct::new_font
 

wmfCanvasPen _wmfConstruct::new_pen
 

unsigned short _wmfConstruct::NoObjects
 

wmfCanvasPen _wmfConstruct::pen
 

unsigned short _wmfConstruct::polyfill
 

unsigned long _wmfConstruct::rec_count
 

unsigned long _wmfConstruct::rec_max
 

unsigned long* _wmfConstruct::rec_offset
 

wmfRGB _wmfConstruct::textcolor
 

unsigned short _wmfConstruct::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:53 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/struct__wmfRecordBox.html0000644000077100007710000000607407575443122021266 0ustar fjffjf00000000000000 _wmfRecordBox struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

_wmfRecordBox Struct Reference


Data Fields

unsigned char * start
unsigned char * end
unsigned char * ptr

Field Documentation

unsigned char* _wmfRecordBox::end
 

unsigned char* _wmfRecordBox::ptr
 

unsigned char* _wmfRecordBox::start
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/doxygen.css0000644000077100007710000000341207575443123016415 0ustar fjffjf00000000000000H1 { text-align: center; } CAPTION { font-weight: bold } A.qindex {} A.qindexRef {} A.el { text-decoration: none; font-weight: bold } A.elRef { font-weight: bold } A.code { text-decoration: none; font-weight: normal; color: #4444ee } A.codeRef { font-weight: normal; color: #4444ee } A:hover { text-decoration: none; background-color: #f2f2ff } DL.el { margin-left: -1cm } DIV.fragment { width: 100%; border: none; background-color: #eeeeee } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } TD.md { background-color: #f2f2ff; font-weight: bold; } TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; } TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } BODY { background: white } TD.indexkey { background-color: #eeeeff; font-weight: bold; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px } TD.indexvalue { background-color: #eeeeff; font-style: italic; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px } span.keyword { color: #008000 } span.keywordtype { color: #604020 } span.keywordflow { color: #e08000 } span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } libwmf-0.2.8.4/doc/html/io-wmf_8c.html0000644000077100007710000000623107575443116016710 0ustar fjffjf00000000000000 io-wmf.c File Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

io-wmf.c File Reference


Data Structures

struct  WmfContext

Functions

G_MODULE_EXPORT void fill_vtable (GdkPixbufModule *module)
G_MODULE_EXPORT void fill_info (GdkPixbufFormat *info)

Function Documentation

void fill_info GdkPixbufFormat *    info
 

void fill_vtable GdkPixbufModule *    module
 


Generated on Tue Dec 10 19:53:50 2002 for libwmf by doxygen1.2.18
libwmf-0.2.8.4/doc/html/structWmfContext.html0000644000077100007710000001273107575443122020462 0ustar fjffjf00000000000000 WmfContext struct Reference
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

WmfContext Struct Reference


Data Fields

GdkPixbufModuleUpdatedFunc updated_func
GdkPixbufModulePreparedFunc prepared_func
GdkPixbufModuleSizeFunc size_func
gpointer user_data
GByteArray * data
gint width
gint height

Field Documentation

GByteArray* WmfContext::data
 

gint WmfContext::height
 

GdkPixbufModulePreparedFunc WmfContext::prepared_func
 

GdkPixbufModuleSizeFunc WmfContext::size_func
 

GdkPixbufModuleUpdatedFunc WmfContext::updated_func
 

gpointer WmfContext::user_data
 

gint WmfContext::width
 


The documentation for this struct was generated from the following file:
Generated on Tue Dec 10 19:53:54 2002 for libwmf by doxygen1.2.18